0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于LM310嵌入式控制器实现USB设备功能的设计

牵手一起梦 来源:单片机与嵌入式系统应用 作者:胡晓宏;解成俊 2021-06-14 11:38 次阅读

目前嵌入式系统在数字化电子产品领域应用越来越广泛。随着其成本的降低,大有取代单片机的趋势。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 相比较有功耗更低、中断延时更小、代码执行速度更快、价格更低等优势。

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 接口等方面有良好的应用前景。

责任编辑:gt

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 控制器
    +关注

    关注

    112

    文章

    15154

    浏览量

    170944
  • 嵌入式
    +关注

    关注

    4976

    文章

    18239

    浏览量

    287899
  • usb
    usb
    +关注

    关注

    59

    文章

    7412

    浏览量

    257872
收藏 人收藏

    评论

    相关推荐

    基于实时操作系统的嵌入式控制器的设计

    摘要:本文基于atmega16微处理和AVRX嵌入式实时操作系统设计并完成了水秋千的嵌入式控制器.为实现高级
    发表于 04-27 21:41

    嵌入式系统U盘实时启动技术

    嵌入式USB控制器的硬件结构及驱动  嵌入式系统是软硬件紧密结合的系统。要实现从优盘启动,硬件上必须在
    发表于 09-05 11:36

    基于OHCI的嵌入式USB主机控制器接口实现

    于操作系统的HCD。本文作者创新点:实现嵌入式系统中OHCI 的主机控制器驱动,对整个USB 协议栈采 用模块化分层设计,开发的HCD 独立于操作系统,适合于无系统的单片
    发表于 11-20 11:14

    如何为嵌入式应用选择合适的微控制器

    。如果套件不存在那么特定部件很可能不是一个好的选择,他们应该回过头几步,发现更好的部分。目前大多数套件的价格低于100美元。支付更多费用太多了。另一部分可能是更好的选择。最后,我们可以得出结论,在为嵌入式应用选择微控制器时需要考虑许多
    发表于 12-21 17:58

    嵌入式应用在单芯片USB方案的应用

    )。Vinculum 是FTDI的嵌入式USB主/从控制器系列的名称。最新发布的第二代芯片 VNC2是针对在嵌入式应用中实现
    发表于 05-21 05:00

    基于OHCI的嵌入式USB主机控制器接口规范及驱动程序实现

    USB 协议底层的主机开发的实践,详细介绍了基于OHCI 的主机控制器的接口规 范,列举了所构建的数据结构以及接口函数,实现了独立于操作系统的HCD。本文作者创新点:实现
    发表于 05-29 05:00

    嵌入式USB模块软硬件设计

    设计S3C4510B没有内置的USB控制器,但提供了两个GDMA通道,可以满足USB高速数据传递的要求。本着与S3C4510B能衔接工作、自身适合在嵌入式
    发表于 06-10 05:00

    采用OHCI实现嵌入式USB主机控制器接口

    体系结构USB 体系包括一系列的硬件层和软件层,如图1 所示。 为了实现其可重用性和适合嵌入式系统特性,图 1 借鉴了PC 机上的USB 主机系统结 构,同时对一些在
    发表于 06-19 05:00

    嵌入式系统串行设备管理怎么实现

    随着微电子技术的发展,嵌入式系统的功能越来越强大,像 UART口、IrDA、USB、I2C以及SPI这些串行接口或设备同时存在于一个嵌入式
    发表于 09-04 07:53

    高整合USB控制器怎么完成嵌入式连结功能

    USB连结是许多嵌入式应用的重要规格;高度整合的USB控制器解决方案,不仅能以最简易的方式为嵌入式系统建立
    发表于 03-20 07:57

    请问在嵌入式应用中怎样去实现USB

    嵌入式应用中USBOTG控制器功能特性是什么?在嵌入式应用中怎样去实现USB
    发表于 04-27 06:25

    基于嵌入式Linux的BACnet控制器软件设计怎么实现

    BACnet网络体系结构和控制器功能是什么基于嵌入式Linux开发软件的可行性BACnet控制器软件怎么实现
    发表于 04-28 06:23

    如何去实现一种嵌入式USB主机控制器接口?

    一种基于OHCI的嵌入式USB主机控制器接口实现
    发表于 06-02 06:50

    USB嵌入式主机控制器设计

    USB嵌入式主机控制器设计 过去USB仅应用于个人计算机其在嵌入式系统领域的巨大潜力尚未开发USB
    发表于 03-18 10:40 55次下载

    USB嵌入式主机控制器设计

    USB嵌入式主机控制器设计 过去USB仅应用于个人计算机其在嵌入式系统领域的巨大潜力尚未开发USB
    发表于 05-06 17:22 563次阅读
    <b class='flag-5'>USB</b><b class='flag-5'>嵌入式</b>主机<b class='flag-5'>控制器</b>设计