基于嵌入式系统的USB(HID)设备

[11-20 17:13:10]   来源:http://www.88dzw.com  嵌入式系统   阅读:8665

文章摘要:基于嵌入式系统的USB(HID)设备目前嵌入式系统在数字化电子产品领域应用越来越广泛。随着其成本的降低,大有取代单片机的趋势。 USB设备以其小巧、便携、即插即用、成本低廉等优势在当前的桌面应用中有相当的比重,尤其是 HID(人机接口)设备,其免驱的特点(不用安装驱动程序)更是给用户带来极大方便。现在市场上 USB设备多是由专门的 USB控制芯片来实现其应用控制,芯片内集成了 USB协议,成本较高。 PCB板的面积较大。本文提出了仅用一片 MCU(微处器-单片机)或嵌入式系统芯片来实现其与 PC机的通讯的方法。就单片机而言,多数单片机速度较慢,对事件的响应能力较弱,对全速 USB应用不是很好的

基于嵌入式系统的USB(HID)设备,标签:嵌入式系统开发,嵌入式开发,http://www.88dzw.com

基于嵌入式系统的USB(HID)设备

目前嵌入式系统在数字化电子产品领域应用越来越广泛。随着其成本的降低,大有取代单片机的趋势。 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规范约定当序列中连续出现 6个逻辑“1”时加进一位“0”,如此问题全部解决,只不过是需要在接收后除去加进的一个位“0”,加进一位“0”的过程就是位填充。

[1] [2]  下一页


Tag:嵌入式系统嵌入式系统开发,嵌入式开发嵌入式系统