DIY编程器网

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1612|回复: 0
打印 上一主题 下一主题

[待整理] 用8051实现USB通信的方案

[复制链接]
跳转到指定楼层
楼主
发表于 2014-10-5 14:08:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
用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请求,必须按照一定的顺序准确无误地传输到主机,只要有一个数据包传输错误
就会导致设备配制的失败。对设正常备工作时出现的各种事件,如收到数据,或主机请求数
据等,也必须准确无误地进行处理,否则会导致设备无法正常工作甚至整个系统崩溃。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|文字版|手机版|DIY编程器网 ( 桂ICP备14005565号-1 )

GMT+8, 2024-12-26 12:22 , 耗时 0.086102 秒, 19 个查询请求 , Gzip 开启.

各位嘉宾言论仅代表个人观点,非属DIY编程器网立场。

桂公网安备 45031202000115号

DIY编程器群(超员):41210778 DIY编程器

DIY编程器群1(满员):3044634 DIY编程器1

diy编程器群2:551025008 diy编程器群2

QQ:28000622;Email:libyoufer@sina.com

本站由桂林市临桂区技兴电子商务经营部独家赞助。旨在技术交流,请自觉遵守国家法律法规,一旦发现将做封号删号处理。

快速回复 返回顶部 返回列表