收稿日期 :2006 - 01 - 07
作者简介 :翟子楠
(
1975 -
)
,男 ,河南省淮阳县人 ,平顶山学院电气信息工程学院讲师.
51 单片机扩展 USB 接口的方法
翟子楠
1 ,2
,王彦辉
1 ,2
(
1. 河南科技大学 ,河南 洛阳 471003 ;2. 平顶山学院 ,河南 平顶山 467002
)
摘 要 :讨论了在 P89C51RD 单片机上扩展 USB 接口的方法. 介绍了 USB 的相关技术标准. 详细描述
了 P89C51RD 单片机与 USBN9603 的接口原理 ,给出了硬件原理图并介绍了固件程序与设备驱动程序软件的编
制过程. 廉价的 51 单片机具备了 USB 接口 ,其应用范围将更加广泛.
关 键 词 :单片机 ;USB ;设备描述符 ;WDM
中图分类号 : TP368. 1 文献标识码 :A 文章编号 :1673 - 1670
(
2006
)
02 - 0065 - 03
随着计算机外围接口的不断推陈出新 ,USB 接口已逐
渐成为计算机上最重要的接口之一 ,其发展及应用涉及消
费类电子产品、工业仪表、学校实验设备等许多领域. 近年
来以 51 核心的单片机也出现了具有 USB 接口的型号 ,但
价格偏高. 以廉价的 51 单片机做控制单元 ,采用 USB 接口
芯片在实验装置上扩展 USB 功能不仅可以实现 USB 单片
机的功能 ,同时也降低了成本. 介绍了在 Philips 公司的
P89C51RD 单片机上扩展全速 USB 接口芯片 USBN9603 的
硬件及软件实现方法.
1 USB 技术介绍
USB ,全称为 Universal Serial Bus
(
通用串行总线
)
,是在
1995 年年底由 Compaq , Intel ,Microsoft , NEC 等 7 家公司
联合提出的. USB V1. 1 版本全速 12Mbps ,低速 1. 5Mbps.
在新的 USB2. 0 接口标准中 ,它通过将内部时钟加快以及
其他的方法 ,将传输速度提高到 V1. 1 版本的 40 倍 ,达到了
480Mbps 的速度. 其突出的特点是支持热插拔和即插即用.
物理连接使用 4 根信号线 ,分别是 USBVCC ,GND ,差动
D + ,D - . 具体电气特性可参考有关资料.
USB 总线有 4 种数据传输方式 ,分别是控制传输、中断
传输、批量传输和同步传输. 主机要识别一个 USB 设备 ,必
须经过设备列举的过程. 过程如下 :1
)
使用预设的地址 0 获
得设备描述符 ;2
)
设定设备的新地址 ;3
)
使用新地址获得设
备描述符 ;4
)
获得配置描述符 ;5
)
设定配置描述符.
USB 是以各种封包为主的通信协议 ,即 SETUP 令牌
封包. 其格式为 :
[1]
请求类型
(
1byte
)
bmRequest Type
请求
(
1byte
)
bRequest
数值
(
2byte
)
wValue
指针
(
2byte
)
wIndex
长度
(
2byte
)
wLength
数据
数据段中的描述符最为重要 ,设备描述符 ,配置描述
符 ,接口描述符 ,端点描述符等 ,它们以层次结构依次设置 ,
每个描述符又有不同的定义. 关于通信格式的详细设置规
范可以查阅 USB 规约.
2 硬件原理
硬件电路见图 1 ,单片机 P89C51RD2HBP 为 Philips 公
司生产的增强型 51 系列单片机 ,指令 、引脚与 80C51 完全
兼容 ,但性能强于普通 51. 片内 64 KB FLASH 存储器 ,1KB
RAM ,每个机器周期为 6 个时钟周期 ,双 DPTR 寄存器 ,支
持 ISP
(
ISP : In - System Programming 在系统编程
)
和 IAP
(
IAP :In - Application Programming 在应用中编程
)
.
[2]
US2
BN9603 支持 USB1. 1 协议 ,可以实现全速的 USB 传输方
式 ,即 12Mbps 的高速传输. USBN9603 内部有 7 个 FIFO ,
分别是 endpoint0 到 endpoint6. 其中 endpoint0 是 8 字节双
向控制 FIFO ,endpoint1 , endpoint3 , endpoint5 为 64 字节发
送 FIFO ,endpoint2 , endpoint4 , endpoint6 为 64 字节接收
FIFO.
[3]
51 单片机和 USBN9603 以复用并行接口的方式进
行数据交换 ,51 通过对 USBN9603 中寄存器的读写来控制
芯片动作 ,包括 USB 设备的配置 ,数据 I/ O 以及各种事件
的处理.
当 USB 总线上有事件发生 ,9603 将通过中断方式通知
C51 单片机 ,C51 单片机在中断处理函数中访问 9603 的中
断寄存器 ,判断是什么事件使中断产生 ,然后进行相应的事
件处理操作. 由于整个 USBN9603 只有一个中断信号输出 ,
具体什么中断事件发生必须通过读取主事件寄存器 MAEV
得到判断 ,进而转至相应处理程序. 电阻 R1 是上拉电阻 ,
表明此设备是一个全速设备. 电阻 R3、R4 为串联电阻 ,
USB 规定阻值 29~44
Ω
;电容 C6、C7 为高频旁路电容.
USBN9603 包含有一个 3. 3V 的电平转换器 ,用于上拉电阻
及芯片内部的需要. 这个 3. 3V 的电平转换器不能用于向
其它电路供电.
3 固件程序与设备驱动程序
固件程序的主要功能是接收 USB 的请求消息 ,请求都
第 21 卷第 2 期
2006 年 4 月
平顶山学院学报
Journal of Pingdingshan University
Vol. 21 No. 2
Apr. 2006