AVR单片机的通用USB接口模块设计

发布者:心愿达成最新更新时间:2012-01-06 关键字:AVR单片机  USB接口 手机看文章 扫描二维码
随时随地手机看文章
引言

  USB接口以其数据传输快、连接简单、易于扩展、支持热插拔等特点已成为外设与PC通信的主要方式之一。随着嵌入式系统的发展,嵌入式微处理器需增加通用的USB接口,以便实现与PC等USB主机系统的通信。针对这样的需求,这里采用PHILIPS公司的USB接口器件PDIUSBD12和Atmel公司的AVR系列单片机ATmega8设计一种通用的USB接口模块。该模块可方便为各种嵌入式微处理器增加USB接口,从而实现与USB主机系统的高速通信。

2 系统硬件设计

  该系统模块的控制核心是AVR高速单片机ATmega8。AVR单片机是新一代基于哈佛结构的高速RISC微控制器,具有速度快、价格低、可靠性高,I/O口线驱动能力强和片内集成外设资源丰富等特点,其内部集成有可进行ISP下载编程的Flash,EEPROM、熔丝位和锁定位。AVR单片机的ISP下载电缆制作简单、成本低廉,还有免费的下载软件(例如PONyProg)支持。PDIUSBD12是一款高性价比USB接口器件,完全符合USB1.l规范,易于与各种微处理器接口。

  由于AVR单片机具有高速性,可利用I/O端口线以软件方式模拟PDIUSBD12的时序,对其读写。这种方式可根据不同的微处理器速度灵活控制PDIUSBD12的时序和地址,无需译码电路,从而简化硬件设计,降低成本。

  由于ATmega8片内集成了UART,SPI,I2C等接口,该接口模块可利用这些接口与其他系统通信,使得该接口模块成为通用的接口转换器。

3 USB固件程序设计

  本系统模块的USB固件程序采用符合ANSI C标准的GCC编译器设计,结合分层次的模块化结构,可移植性强,只需稍微修改硬件接口层即可将其移植到别的硬件平台,可重复利用代码。

  USB固件程序设计是基于状态机和标准的前后台式程序架构。整个同件程序的模块化层次结构如图3所示。首先编写硬件接口层hal.c和PDIUSBD12器件的命令接口层,以供上层模块调用。硬件接口层含有对PDIUSBD12写指令和读写数据的函数,以供上层模块调用。当CPU不同时,只需修改这些函数即可。由于CPU访问PDIUS-BD12与普通存储器一样,只需根据硬件连接关系,在硬件抽象层中编写对PDIUSBD12写指令、写读数据的函数,供上层调用即可。实现PDIUSBD12的命令接口层需调用硬件抽象层函数,供上层模块调用。再设计前后台程序及标准设备请求程序模块。

  先利用C语言的共用体与位域定义一个全局状态变量如下所示:

 

  用户可根据需要增加相应的状态标志位,如UART,SPI,I2C等接口收发数据完成标志来满足各种情况下的需要,然后定义一个结构体变量用于存放USB的标准设备请求。

  在前台主程序中首先初始化全局变量和其他外围设备,然后在while(1)的死循环中检测状态变量值有无变化,根据不同的状态变量值调用下层的相应函数完成相关操作。在后台的中断服务程序中,根据读取的中断寄存器值一方面将PDIUSBD12接收到的数据移入CPU内存或将内存中的数据写入PDIUSBD12发送端点的缓冲区;另一方面根据具体情况改变状态变量值。

  以下给出了前台主程序的程序代码:以下为后台中断服务程序:

 
 

  当前台主程序检测到状态变量收到SETUP包事件bEvent_flags.bits.setup_packet为1时,该标志位清零,再调用标准设备请求模块stdreq.c的control_handler()函数完成对USB设备的枚举。

  设计标准设备请求模块,首先利用结构体定义USB枚举所需的各种描述符,以供不同设备请求使用,其次编写11个标准的设备请求处理函数。本层请求模块重要函数是协议控制子程序control han-dler(),它根据ControlData中标识的不同USB设备请求类型调用11个函数中的任意一个。除此之外,本层请示求模块还实现中断服务程序调用的控制端点接收与发送中断处理函数。

4 系统集成与应用

4.1 PC机驱动程序与应用程序的设计

  利用该系统模块实现PC机通讯,需对PC机编写相关驱动程序和应用程序,可利用DriverStudio软件生成该系统模块在Windows环境下的驱动程序。应用程序的设计可使用诸如VB、VC、Delphi以及应用普遍的虚拟仪器软件开发工具LabVIEW等软件开发工具,直接调用驱动程序生成的动态链接库中的API函数,可根据具体任务编写相关应用程序。

4.2 应用于其他系统

  利用AVR单片机的多种外设接口特点,例如UART、SPI、I2C接口等可以有效地实现与其他微处理器的通信,将该模块嵌入各种系统,实现与其他器件的通讯。固件程序中预留有UART、SPI、I2C等接口程序,只需通过简单的跳线连接就可选择相应的接口,从而实现应用系统增加USB接口。

4.3 固件程序移植其他平台

  由于固件程序最大限度考虑到可移植性,所以将固件程序稍加修改即可应用于各种已拥有C语言编译器的微处理器,实现PDIUSBD12直接与微处理器的通讯。

  移植固件程序主要工作有:根据硬件连接关系,修改硬件抽象层中的3个读写函数,实现CPU与器件之间的通信;通过调用PDIUSBD12命令接口层的读取芯片ID函数返回值是否为0x1012,测试CPU与器件之间的通讯是否正常。

5 在数据采集器中的应用

  由于ATmega8片内集成有逐次比较型ADC,具有6路的模拟输入通道,所以只需要针对采集的物理量选用相应传感器,并将输出信号调整至0~Vcc的范围内就可利用该模块实现USB数据采集器。AVR单片机集成有ADC自带采样保持电路,具有内部参考电压和基于睡眠模式的噪声抑制器,从而大大提高ADC精度,实现高精度的数据采集。而设计只需在相应的固件程序巾增加获取ADC结果的函数,并设置相应的状态标志位即可完成USB数据采集器的设计。

6 结束语

  以ATmega8和PDIUSBD12为核心,实现通用的USB接口模块设计,并应用于基于USB接口的数据采集器中。实验结果表明,该USB接口模块运行稳定可靠,通信速度快,易于修改移植,满足嵌人式系统对USB接口的需求,并能快速为各种微处理器增加USB接口,具有广泛的应用前景。

关键字:AVR单片机  USB接口 引用地址:AVR单片机的通用USB接口模块设计

上一篇:基于HPI接口的高速数据传输设计
下一篇:SDRAM接口的VHDL设计

推荐阅读最新更新时间:2024-05-02 21:50

AVR单片机和LCD液晶模块对信息监控终端的设计
目前,随着信息产业的迅猛发展,各类船舶亟需配备更多质优价廉的中小型信息监控终端,用于监控气象状况、获取导航信息以便保证航行安全。以ARM、MIPS等领衔的32位处理器在信息监控终端应用中,显示出极大优势,但是一般以32位处理器构建的嵌入式系统往往需要配置外部FLASH和SDRAM,这样就使得开发和维护整个系统的成本较高,本设计采用高性能低功耗的AVR单片机和LCD液晶模块来设计信息监控终端,具有价格低廉、性能稳定、显示清晰、人机界面良好等优点,能够满足船舶对中小型信息监控终端的需求。 1 总体设计 信息监控终端主要由显示控制板、键盘、通信接口和液晶显示模块构成,具有数据收发、数据显示、人机交互和屏幕亮度调整等功能,其组成如图1
[单片机]
<font color='red'>AVR单片机</font>和LCD液晶模块对信息监控终端的设计
AVR单片机复位:看门狗复位、上电复位、掉电复位
看到大家对复位特别是AVR单片机内部的复位功能还不太清楚,现在这里简单说一下,希望在家能有个总体的认识。不对之处希望大家指出,觉的好就帮忙顶两下。 AVR单片机复位大概有:上电复位、掉电复位、看门狗超时复位、外部复位,这么四种。 上电复位:就是在一通电的时候对单片机进行复位,这和我们外接RC复位电路的作用是一样的, AVR 单片机内部带有上电复位功能。 掉电复位:就是在单片机运行过程中电压突然跌落,这个时候单片机会出现很多不确定的现象,所以在这个时候需要将单片机复位,让它处于一个确定的状态。这就是BOD功能,一个非常实用的功能,AVR单片机带有这个功能。 看门狗复位:这是我们常说的看门狗了,就是当程序进入某个地方长时间没有响应
[单片机]
RS232接口转USB接口的通信方法
摘要:USB通用串行总线是计算机外设接口的发展趋势,将逐渐取代PC机上的RS232协议串口,因此很多传统的RS232接口设备都将面临一个向USB接口转换的问题。本文以IC卡门禁考勤系统为例,提出一种方案,使传统的RS232接口转化为USB接口后直接通过USB总线接入PC, 同时使IC卡门禁考勤设备增加了USB总线具有的热插拔、自动配置和智能电源管理等功能;着重剖析USB通信内核,探讨系统软硬件设计方案。 关键词:USB 终端 人机接口设备(HID) 列举 引 言   USB作为一种新的PC机互连协议,使外设到计算机的连接更加高效、便利。这种接口适合于多种设备,不仅具有快速、即插即用、支持热插拔的特点,还能同时连接多达127个
[应用]
AVR单片机+DS18B20简易VB显示程序
//------AVR代码----------------- #include iom16.h               //1602代码 #include intrinsics.h #define RS PORTB_Bit0 #define RW PORTB_Bit1 #define EN PORTB_Bit2 #define DATA PORTA #define busy 0x80 void delay(uint k) {  uint i,j; for(i=0;i k;i++) for(j=0;j 1140;j++);    } void wait() {   uchar val;   DATA=0xff;  
[单片机]
基于微处理器S3C44B0X的监测仪USB接口控制设计
家用心电血压监测系统由采集记录设备和上位机电子病历管理系统组成,因此,需要解决数据传输方式问题。传统的通信接口采用简单的RS-232串行UART ,这种方式速度慢且适用性差,而USB转串口芯片的传输性能不能得到根本改善。USB总线接口则具有速度快、易于扩展、支持热插拔、使用灵活方便等优势,尤其适用于家用设备与计算机的通信连接。 本文重点讨论USB通信协议及其接口芯片的控制方法,针对临床需求,设计实现了具有心电、血压智能监测和USB高速数据传输功能的小型化设备,提供心电、血压数据电子病历查询、打印和网络传输等功能,对于提高家庭健康保健水平具有很重要的意义。 监测仪的USB接口电路设计 系统主控制芯片采用32位高性能嵌入式ar
[单片机]
基于微处理器S3C44B0X的监测仪<font color='red'>USB接口</font>控制设计
AVR Studio 调试AVR单片机快速入门
本文介绍 AVR Studio Debug:调试运行方式及Qu IC kWatch实时查看变量的数值。 以下的degug方式,英文版来自 AVR Studio 4. 为达到准确理解的效果,我试图将它翻译出来。如有不准确的地方,请大家指正: Auto Step 自动执行 它能重复执行指令。如果当前处于 source 方式时(即C语言窗口显示方式),一条的指令会被执行。如果处理 d ISA ssembly 方式 (即显示为汇编指令方式),一条汇编指令会被执行。每条指仅被执行后,窗口的所有信息会更新。 每条指令的执行延时,可以在 debug option 里选择。 当用户按下停止或有断点(breakpoint)时,将停止自动执行。
[单片机]
AVR Studio 调试<font color='red'>AVR单片机</font>快速入门
维安USB接口限流保护产品问市,全方位保障产品电气安全性
近年来,互联网产业发展如火如荼,电子商务及硬件制造业等领域的发展也方兴未艾,层出不穷的电子设备在生活中日益普及,作为世界上最通用的接口之一USB接口得以被广泛应用,我们见证了从USB 2.0到USB 3.2的蜕变,也目睹了一个个不通用的接口被淘汰。 与此同时,各大电子设备厂商对输出电流的要求也逐渐提高,从以前的5V/500mA升级到如今的20V/5A,在这种大电流的应用上,如果没有相应的保护措施势必会损坏内部电路。有统计表明,超过40%的电子产品失效与USB接口有直接或间接的关系,而造成的不良现象通常包括系统死机、USB口烧坏等等。究其原因,主要是由于USB具有即插即用的特点,在负载出现异常的瞬间,电源开关会流过数安培的电流
[嵌入式]
维安<font color='red'>USB接口</font>限流保护产品问市,全方位保障产品电气安全性
USB接口标准及常用USB接口
一、什么是USB? USB是英文Universal Serial Bus的缩写,中文含义是“通用串行总线”。它是一种应用在PC领域的新型接口技术。早在1995年,就已经有PC机带有USB接口了,但由于缺乏软件及硬件设备的支持,这些PC机的USB接口都闲置未用。1998年后,随着微软在Windows 98中内置了对USB接口的支持模块,加上USB设备的日渐增多,USB接口才逐步走进了实用阶段。 这几年,随着大量支持USB的个人电脑的普及,USB逐步成为PC机的标准接口已经是大势所趋。在主机(host)端,最新推出的PC机几乎100%支持USB;而在外设(device)端,使用USB接口的设备也与日俱增,例如数码相机、扫描仪、游戏杆
[嵌入式]
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved