DIY编程器网

标题: 用8051实现USB通信的方案 [打印本页]

作者: liyf    时间: 2014-10-5 14:08
标题: 用8051实现USB通信的方案
用8051实现USB通信的方案

51系列单片机以其廉价和易用的特点吸引了大量国内用户,被广泛地应用在智能仪
器、工业控制、PC外设、家电控制以及玩具等许多不同的领域。如果能够用51单片机来实现
USB通信,对广大熟悉51的用户来说无疑是一条开发USB接口设备的最便捷的途径。这里就为
大家准备了一套用89C51来实现USB数据通信的方案,这套方案经过多个不同用户的长时间测
试,证明了它的实用性和可靠性。
    这个方案采用了National Semiconductor的USB设备接口控制芯片USBN9603。USBN9603
是一个功能较强的芯片,支持USB1.1协议,能实现12Mbps的高速传输,通过对mode0和mode1
的设置,能以复用并行接口(Intel mode)、非复用并行接口(motorola mode)、
microwire等不同方式受控于MCU。USBN9603还具备适用于与外设进行大量高速数据传输的
DMA功能。USBN9603内部有7个FIFO,分别是endpoint0到endpoint6。其中endpoint0是双向
FIFO,endpoint1、endpoint3、endpoint5为发送FIFO,endpoint2、endpoint4、endpoint6
为接收FIFO。endpoint1、endpoint2、endpoint3、endpoint4深度为32字节,endpoint5和
endpoint6深度为64字节。USBN9603片内有52个寄存器(包括7个FIFO)。51单片机和
USBN9603以复用并行接口的方式进行数据交换,51通过对USBN9603中寄存器的读写来控制芯
片动作,包括USB设备的配置,数据I/O以及各种事件的处理。
    方案可分为软件和硬件两个部分。
    硬件:主要由一片Atmel的89C51和USBN9603构成,同时还有时钟震荡电路以及USB匹配
滤波网络等。以下为硬件框图:

由于USBN9603采用的是48M的时钟电路,因此在设计PCB布线以及元件的选择上都有一些必须
给予特别注意的细节,如走线的方向,晶体的选择等。设计资料中给出了详细说明和参考。
    软件:软件主要由配套驱动程序、用户程序和设备端的C51程序组成。用户端程序通过
驱动程序与系统USBDI(USB Device Interface)进行通信,由系统产生USB数据的传送动
作。
    用户程序需要VC6.0编程环境。如果想自己编制Driver,还需要DDK工具。编制高质量的
Driver是开发成功的关键,直接影响到系统的性能和可靠性。
    设备端的单片机程序,除需要响应各种来自系统的USB的标准请求外,还需要完成各种
数据的交换工作和事件处理。实际上,这部分程序的编制难度并不亚于PC程序的编制,程序
员不仅需要非常熟悉USB的协议,还必须了解主机系统的配置过程。USB协议中的很多
Descriptor请求,必须按照一定的顺序准确无误地传输到主机,只要有一个数据包传输错误
就会导致设备配制的失败。对设正常备工作时出现的各种事件,如收到数据,或主机请求数
据等,也必须准确无误地进行处理,否则会导致设备无法正常工作甚至整个系统崩溃。




欢迎光临 DIY编程器网 (http://diybcq.com/) Powered by Discuz! X3.2