基于嵌入式系统的USB(HID)设备设计
0 引言
目前嵌入式系统在数字化电子产品领域应用越来越广泛。随着其成本的降低,大有取代单片机的趋势。USB 设备以其小巧、便携、即插即用、成本低廉等优势在当前的桌面应用中有相当的比重,尤其是HID(人机接口)设备,其免驱的特点(不用安装驱动程序)更是给用户带来极大方便。现在市场上USB 设备多是由专门的USB 控制芯片来实现其应用控制,芯片内集成了USB 协议,成本较高。PCB 板的面积较大。本文提出了仅用一片MCU(微处器-单片机)或嵌入式系统芯片来实现其与PC 机的通讯的方法。就单片机而言,多数单片机速度较慢,对事件的响应能力较弱,对全速USB 应用不是很好的选择。而嵌入式系统,由于其速度较之单片机快很多,内部RAM 容量较大,用其来仿真USB 设备是个理想的策略。
本文将以LM310 嵌入式芯片仿真USB(HID)键盘为例,研究其仿真USB 的方法。
1 USB 协议规范
1.1 总线定义:
USB 又称通用串地总线,共有四条线,如图1 所示,VBUS 是设备供电接线,电压+5V,最大供电电流500mA,向设备提供电源。具有过流保护、供电控制等功能。D-低速信号线;D+全速信号线;GND 电源地。
1.2 USB 版本
常规USB 通讯协议有USB1.1、USB2.0。USB1.1 版本的USB 设备,支持全速12Mb/S 低速通讯(1.5Mb/S);USB2.0 版本的USB 设备,支持高速通讯(480Mb/S)。由于USB2.0 的通讯速率太高,所以用芯片仿真无法实现(必须由单独芯片控制)。
1.3 总线长度
USB1.1 版本的设备总线长度不大于5 米,通过集线器或中继器,可达到30 米95 个中断器或集线器)。U2.0 设备总线长度不大于3 米。
1.4 通讯建立
串口通讯另一个标准RS232 的通讯发起方可以从两端发起,而USB 通讯发起方总是在主机端(HOST),设备端总是响应主机端的通讯请求。主机端如果是PC 机,每隔1ms 发起一次对一个设备的通讯建立请求,设备接收到访问己方请求后,立即与主机建议起通讯连接。
1.5 电气特性
对于“D-是低带信号总线,D+是高速信号总线是高速总线”的说法是不准确的,因为USB 信号总线是平衡差分式的,这点类似于485 总线。所谓“在-是低速信号总线”是指当US 阳低速设备(如鼠标、键盘) 时,D-这条线在USB 设备端加1.5K 上拉电阻。反之对于全速设备(如U 盘、打印机、扫描仪),D+信号线加1.5K 上拉电阻。
关于D+、D-信号线上的电压浅谈一下,类似于485 总线,当485 总线的A 相电压大,B相电压200mV 时,差分放大器输出逻辑“1”,反之“0”,USB 总线在低速设备端D-电压如大于2.0V,D+电压小于0.8V 为逻辑“1”反之为“0”,在主机端,一根为大于2.8V,另一根小于0.3 发,在此主机端不做深入探究。
1.6 NRZI 编码及位填充
由于USB 总线没有同步时钟信号线,想要主机与设备建立良好通讯同步效果,只有从数据序列中提取同步时钟。类似RS232 串口通讯,USB 通讯的建立也有起始信息,RS232 是一个起始位,而USB 起始位也有8 位,称之为同步域(或段)格式为01010100。由于RS232 的通讯速率较低,所以两端同步时钟不大于5%即可实现良好通讯。然而USB 通讯最低速率也大于1Mb/S,对于时钟的同步要求严格的多,况且USB 的数据包中的每个字节不象RS232 每个字节都有起始位(仅在包头有同步域)。鉴此,USB 通讯时必须在数据包的位序列中提取同步信息。想象一下,如果数据包序列中数据位全是逻辑“1”或者全是逻辑“0”,芯片是无法提取同步信息的,为此需要一个高效的编码方案,于是就有了NRZI 和位填充概念。何谓NRZI,看图2 所示,NRZI 是非“1”跳变。由图可知问题只解决一半,USB 规范约定当序列1 1中连续出现6 个逻辑“1”时加进一位“0”,如此问题全部解决,只不过是需要在接收后除去加进的一个位“0”,加进一位“0”的过程就是位填充。
1.7 USB 通讯模式
共四种模式:控制传输、等时传输、中断传输、批量传输。
1.8 端点
端点也可称为设备终端,每个USB 设备(USB 芯片)内可以有1—16 个端点,相对USB 芯片而言,各端点在通讯*能传输的数据包的大小和传输模式有所不同。在芯片内数据缓冲区的地址也有所变化。
2 嵌入式芯片(LM3S310)
Stellaris 系列微控制器(包括L3 同S310)是以ARM CortexTM-M3 为内核设计的。与早期的ARM7 相比较有功耗更低、中断延时更小、代码执行速度更快、价格更低等优势。
上拉电阻相关文章:上拉电阻原理 三维扫描仪相关文章:三维扫描仪原理
评论