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

发布者:HeavenlyJoy444最新更新时间:2013-10-12 来源: dzsc关键字:嵌入式系统  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 相比较有功耗更低、中断延时更小、代码执行速度更快、价格更低等优势。[page]

  3 实现原理

  由于LM3S310 控制器每个GPIO 都可配置为中断引脚,所以在这个应用中只需要用两个同Port 的两个相邻引脚仿真USB 的D+和D-,图3 所示。


  4 软件设计

  图4 是一个简化程序流程图,实际编程中还有很多细节,在此不再罗列。下面以中断传输为例,将一个事务不同阶段思想重点研讨。


  LM3S310 芯片利用两个GPIO(USB)的中断监控USB 总线,当USB 总线从空闲状态变为传输状态,也就是总线由主机发起与同步域(SYN),LM3S310 进入USB 接收程序。略过同步阶段,收到的第一个字节是PID 字段(包标识类型)。这字段的低四位描述此包类型方向(IN 或OUT),接下来7 位表示设备的地址,然后是四位端点号索引。LM3S310 根据设备地址判定主机向本设备发起的请求,如果是则根据包的类型决定继续接收数据或向主机发送数据。对OUT 类型数据的后5—16 位是CRC 校验(根据配置决定CRC 的位数)。对IN 类型,LM3S310将准备好数据连同RC 校验数据一同发往主机。数据传输阶段完成后,主机或设备要确认传输成功。

  对于低速设备的仿真,LM3S310 芯片的速度足以满足要求(包括一些速度较快单片机,如:PIC、EMP、MSP),然而对全速设备的仿真,须要选择速度更快嵌入式芯片,软件实现的原理方法基本相同。

  5 结论

  使用微控制器仿真USB 设备的方法,极大地方便了用户的开发,同时降低了功耗、成本。本文作者创新点在于利用MCU 或嵌入式控制器实现USB 设备功能。本方法在USB 读卡器、USB 编程器、USB 接口转RS232 及RS485 接口等方面有良好的应用前景。



   参考文献:

[1]. PCB datasheet http://www.dzsc.com/datasheet/PCB_1201640.html.
[2]. PC  datasheet http://www.dzsc.com/datasheet/PC+_2043275.html.
[3]. LM310  datasheet http://www.dzsc.com/datasheet/LM310+_838172.html.
[4]. RS232  datasheet http://www.dzsc.com/datasheet/RS232+_585128.html.
[5]. RS485  datasheet http://www.dzsc.com/datasheet/RS485+_585289.html.

关键字:嵌入式系统  USB  HID 引用地址:基于嵌入式系统的USB(HID)设备设计

上一篇:详解USB存储设备故障排除及使用方法
下一篇:USB端口的静电放电(ESD)防护

推荐阅读最新更新时间:2024-05-02 22:47

基于CH375的LPT-USB打印机驱动器的设计
1 引言   本课题来源于北京普析通用公司。 由于该公司现有光谱仪器的单机版(如1810和T6等)采用的是并行口打印技术,而随着USB打印机技术的逐渐普及,并行口打印机越来越少,有些用户原有的打印机只是USB接口而非并行口,因此现有仪器对打印机的支持不能适应用户需要。为了使该公司的并行口仪器直接和USB打印机相连,笔者设计了一种LPT-USB打印机驱动器,实现并口仪器与USB打印机的连接。   笔者利用单片机和USB总线接口器件实现LPT-USB打印机驱动器的设计。利用该设计将能够实现并行打印口数据在USB打印机上的直接打印,克服了有些并口仪器必须连接并口打印机才能打印的弊端,极大地方便了用户的使用。 2 CH375的特点及工
[单片机]
MSP430和CC2500的USB无线数据采集系统
摘要:设计基于MSP430单片机和CC2500无线收发器的USB无线数据采集系统,通过USB调试端口在IDE或CCE开发环境下编写、下载和调试应用程序,其目标板可作为一个独立的具有或没有外部传感器的系统。介绍基于MSP430和CC2500无线开发工具的系统结构,控制模块的硬件结构,无线收发部分和数据采集传输电路的设计,以及软件开发、Simplici TI 协议的引用。 基于MSP430单片机和CC2500的无线数据采集系统是一个功能齐全的无线开发工具,该系统主要由MSP430F系列微控制器和CC2500(2.4 GHz)无线收发器组成。系统可在PC机上利用IAR嵌入式工作平台集成开发环境(IDE)或CCE开发环境编写、下载和调
[单片机]
MSP430和CC2500的<font color='red'>USB</font>无线数据采集系统
USB的总线结构
    USB的总线结构是采用阶梯式星形(tiered star)的拓扑(topology)结构,如图1和图2所示。每一个星形的中心是集线器,而每一个设备可以通过集线器上的接口来加以连接。从图中可以看到USB的设各包含了两种类型:USB集线器与USB设各。位于最顶端的就是Host(主机端)。从Host的联机往下连接至Hub(集线器),再由集线器按阶梯式以一层或一阶的方式往下扩展出去,连接在下一层的设各或另一个集线器上。事实上,集线器也可视为一种设各。而其中最大层数为6层(包括计算机内部的根集线器)。每一个星形的外接点的数目可加以变化,一般集线器具有2、4或7个接口。   图1 USB总线的阶梯式星形结构   图2 US
[嵌入式]
USB On-The-Go 工作原理分析和应用研究
  1994年,Intel,Compaq等七家软硬件全球知名企业为了突破当时PC使用串口和并口传输速度的限制,成立了通用串行总线开发者论坛(USB Implementers Forum, USB IF),并在1994年11月提出了USB 0.7版,到了1998年开始出现了支持USB 1.1的设备,他的高速性(USB1.1支持1.5 Mb/s和12 Mb/s两种速度[1])和易用性迅速使之成为P C外设的宠儿。为了对抗1394速度的优势(1394可以达到400 Mb/s),1999年提出了US B 2.0规范的思想,2000年4月USB IF推出USB 2.0。USB 2.0向下兼容1.1,提供3种速度 ,最高可以达到480 Mb/s
[嵌入式]
基于USB2.0的红外数据传输系统的设计与实现
1引言 随着测试技术和无线通信技术的发展和应用,测试仪器向微型化、低功耗发展,红外数据传输成本低廉,简单易用,在很多小型设备中得到广泛应用。为避免接口插拔造成仪器损坏,实现测试仪器与PC机间的无线数据传输,减少不必要的线缆连接,这里设计一种基于USB2.0的红外数据传输系统,该系统具有低功耗、控制简单、实施方便,传输可靠性高等特点。 2系统硬件设计 2.1主要器件选型 Cypress公司的CY7C68013器件包含USB2.0的集成微控制器。它内部集成有1个增强型的8051、1个智能USB串行接口引擎、1个USB数据收发器、2个UART、3个8位I/O口、16位地址线、8.5KBRAM和4KBFIFO等。增强型的8051内
[测试测量]
基于<font color='red'>USB</font>2.0的红外数据传输系统的设计与实现
S3C2440 USB总线驱动分析(十八)
如下图所示,以windows为例,我们插上一个没有USB设备驱动的USB,就会提示你安装驱动程序 1 为什么一插上就会有提示信息? 是因为windows自带了USB总线驱动程序, 2 USB总线驱动程序负责: 识别USB设备;给USB设备找到并安装对应的驱动程序;提供USB的读写函数。 新接入的USB设备的默认地址(编号)为0,再未分配新编号前,PC主机使用0地址和它通信。 然后USB总线驱动程序都会给它分配一个地址(编号) PC机想访问USB总线上某个USB设备时,发出的命令都含有对应的地址(编号) USB是一种主从结构。主机叫做Host,从机叫做Device,所有的USB传输,都是从USB主机这
[单片机]
S3C2440 <font color='red'>USB</font>总线驱动分析(十八)
基于S3C2410和CH7004的嵌入式系统VGA接口设计
  1 引言   嵌入式系统在各种领域应用极为广泛,其中一种很常见的应用是嵌入式Linux智能终端设备,针对工控领域的应用特点,这种类型的设备往往集控制单元、显示键盘单元、数据采集单元、GPIO单元以及通讯单元(以太网、GPRS、串口等)等于一体,可进行实时数据处理和控制。   嵌入式系统的终端显示倾向选择LCD显示器。但在大屏幕显示情况下,大型工业级LCD液品显示器造价高。选择性少。而为嵌入式系统增加标准VGA接口可很好地解决该问题。支持VGA接口的显示设备众多且价格相对较低,而且显示设备的更换不会对嵌入式系统产生影响。ARM9器件S3C2410在嵌入式系统中应用广泛。这里主要针对该处理器介绍基于CH7004的嵌入式系统VGA接
[单片机]
基于S3C2410和CH7004的<font color='red'>嵌入式系统</font>VGA接口设计
基于STM32F407的USB转串口功能实现
之前的文章中介绍过STM32的USB接口虚拟串口的功能。本篇文章在此基础上,以STM32F407为例,介绍USB转串口功能的实现。 要实现USB转串口的功能,需要将单片机真实串口(这里以USART1为例)的收发数据与USB口进行交互。用过USB虚拟串口的朋友可能知道,要实现该功能,还存在以下问题: 1. 电脑上设置的串口波特率不影响USB接口传输的速率。 2. 怎样获取电脑上串口助手设置的波特率,以设置USART1使其波特率与串口助手一致。 波特率设置 其实STM32CubeMX生成的程序中已经提供了相关的接口,只需要用户自己实现即可。打开usbd_cdc_if.c文件,CDC_Control_FS函数中,添加如下程序。
[单片机]
基于STM32F407的<font color='red'>USB</font>转串口功能实现
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved