预览加载中,请您耐心等待几秒...
1/8
2/8
3/8
4/8
5/8
6/8
7/8
8/8

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

基于AVR单片机的通用USB接口模块设计[日期:2008-6-25]来源:中电网作者:张洪董秀成[字体:大中小]1引言USB接口以其数据传输快、连接简单、易于扩展、支持热插拔等特点已成为外设与PC通信的主要方式之一。随着嵌入式系统的发展嵌入式微处理器需增加通用的USB接口以便实现与PC等USB主机系统的通信。针对这样的需求这里采用PHILIPS公司的USB接口器件PDIUSBD12和Atmel公司的AVR系列单片机ATmega8设计一种通用的USB接口模块。该模块可方便为各种嵌入式微处理器增加USB接口从而实现与USB主机系统的高速通信。2系统硬件设计该系统模块的控制核心是AVR高速单片机ATmega8。AVR单片机是新一代基于哈佛结构的高速RISC微控制器具有速度快、价格低、可靠性高I/O口线驱动能力强和片内集成外设资源丰富等特点其内部集成有可进行ISP下载编程的FlashEEPROM、熔丝位和锁定位。AVR单片机的ISP下载电缆制作简单、成本低廉还有免费的下载软件(例如PonyProg)支持。PDIUSBD12是一款高性价比USB接口器件完全符合USB1.l规范易于与各种微处理器接口。系统模块AVR单片机与PDIUSBD12的电路连接如图1所示。由图1看出由于AVR单片机具有高速性可利用I/O端口线以软件方式模拟PDIUSBD12的时序对其读写。这种方式可根据不同的微处理器速度灵活控制PDIUSBD12的时序和地址无需译码电路从而简化硬件设计降低成本。由于ATmega8片内集成了UARTSPII2C等接口该接口模块可利用这些接口与其他系统通信使得该接口模块成为通用的接口转换器。其系统硬件结构框图如图2所示。3USB固件程序设计本系统模块的USB固件程序采用符合ANSIC标准的GCC编译器设计结合分层次的模块化结构可移植性强只需稍微修改硬件接口层即可将其移植到别的硬件平台可重复利用代码。USB固件程序设计是基于状态机和标准的前后台式程序架构。整个同件程序的模块化层次结构如图3所示。首先编写硬件接口层hal.c和PDIUSBD12器件的命令接口层以供上层模块调用。硬件接口层含有对PDIUSBD12写指令和读写数据的函数以供上层模块调用。当CPU不同时只需修改这些函数即可。由于CPU访问PDIUS-BD12与普通存储器一样只需根据硬件连接关系在硬件抽象层中编写对PDIUSBD12写指令、写读数据的函数供上层调用即可。实现PDIUSBD12的命令接口层需调用硬件抽象层函数供上层模块调用。再设计前后台程序及标准设备请求程序模块。先利用C语言的共用体与位域定义一个全局状态变量如下所示:用户可根据需要增加相应的状态标志位如UARTSPII2C等接口收发数据完成标志来满足各种情况下的需要然后定义一个结构体变量用于存放USB的标准设备请求。在前台主程序中首先初始化全局变量和其他外围设备然后在while(1)的死循环中检测状态变量值有无变化根据不同的状态变量值调用下层的相应函数完成相关操作。在后台的中断服务程序中根据读取的中断寄存器值一方面将PDIUSBD12接收到的数据移入CPU内存或将内存中的数据写入PDIUSBD12发送端点的缓冲区;另一方面根据具体情况改变状态变量值。以下给出了前台主程序的程序代码:以下为后台中断服务程序:当前台主程序检测到状态变量收到SETUP包事件bEvent_flags.bits.setup_packet为1时该标志位清零再调用标准设备请求模块stdreq.c的control_handler()函数完成对USB设备的枚举。设计标准设备请求模块首先利用结构体定义USB枚举所需的各种描述符以供不同设备请求使用其次编写11个标准的设备请求处理函数。本层请求模块重要函数是协议控制子程序controlhan-dler()它根据ControlData中标识的不同USB设备请求类型调用11个函数中的任意一个。除此之外本层请示求模块还实现中断服务程序调用的控制端点接收与发送中断处理函数。上述各函数及ControlData变量间关系如图4所示。4系统集成与应用4.1PC机驱动程序与应用程序的设计利用该系统模块实现PC机通讯需对PC机编写相关驱动程序和应用程序可利用DriverStudio软件生成该系统模块在Windows环境下的驱动程序。应用程序的设计可使用诸如VB、VC、Delphi以及应用普遍的虚拟仪器软件开发工具LabVIEW等软件开发工具直接调用驱动程序生成的动态链接库中的API函数可根据具体任务编写相关应用程序。4.2应用于其他系统利用AVR单片机的多种外设接口特点例如UART、SPI、I2C接口等可以有效地实现与其他微处理器的通信将该模块嵌入各种系统实现与其他器件的通讯。固件程序中预留有U