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

    文章

    16197

    浏览量

    177394
  • 嵌入式
    +关注

    关注

    5068

    文章

    19014

    浏览量

    303228
  • usb
    usb
    +关注

    关注

    60

    文章

    7891

    浏览量

    263976
收藏 人收藏

    评论

    相关推荐

    高整合USB控制器简化嵌入式系统连结设计

    高度整合的USB控制器解决方案,不仅能以最简易的方式为嵌入式系统建立USB连结,还能提供高效能的CPU功能;
    发表于 12-03 10:23 887次阅读

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

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

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

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

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

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

    嵌入式液压控制器实现

    嵌入式液压控制器是在国内某大型钢铁公司的技术改造中开发的。控制器硬件上采用研华工控机和I/O 板,软件上使用了VxWorks 嵌入式实时操作系统。本文给出了液压
    发表于 05-26 13:34 26次下载

    嵌入式USB设备驱动程序设计

    本文通过基于S3C2410 的嵌入式USB设备驱动程序的实现,介绍嵌入式Linux 系统中的USB
    发表于 08-14 14:07 15次下载

    基于LPC2290嵌入式系统USB接口的设计

    基于LPC2290嵌入式系统USB接口的设计:为嵌入式系统设计并实现USB主机接口。硬件设计采用LPC2290为主控平台, ISP1160
    发表于 12-31 17:07 30次下载

    USB嵌入式主机控制器设计

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

    嵌入式系统中的USB控制器与框架结构

    嵌入式系统中的USB控制器与框架结构 过去USB仅应用于个人计算机,而在嵌入式系统领域的巨大潜力还没有开发出来,
    发表于 05-06 17:16 1550次阅读
    <b class='flag-5'>嵌入式</b>系统中的<b class='flag-5'>USB</b><b class='flag-5'>控制器</b>与框架结构

    USB嵌入式主机控制器设计

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

    嵌入式应用中的USB设备功能

    嵌入式应用中的USB设备功能 USB已经成为设备和PC之间通信的标准方式,从通用
    发表于 06-02 07:49 643次阅读

    嵌入式主机上的USB海量存储设备

    嵌入式主机上的USB海量存储设备类重点论述基于USB的海量存储(USB Mass Storage)设备
    发表于 03-06 16:33 43次下载
    <b class='flag-5'>嵌入式</b>主机上的<b class='flag-5'>USB</b>海量存储<b class='flag-5'>设备</b>类

    嵌入式USB MiniHost系统设计与实现

    设计并实现了一个嵌入式USB主机系统的硬件和软件,用于解决USB设备不能脱离PC主机的问题。并在设计的硬件和软件基础上利用
    发表于 04-12 15:04 47次下载
    <b class='flag-5'>嵌入式</b><b class='flag-5'>USB</b> MiniHost系统设计与<b class='flag-5'>实现</b>

    基于CORBA技术的嵌入式控制器设计

    本文以制造业嵌入式控制器为背景,在所选择的嵌入式硬件和实时操作系统的基础上,开发基于CORBA技术的面向重矿行业的嵌入式控制器
    发表于 09-06 17:30 1700次阅读
    基于CORBA技术的<b class='flag-5'>嵌入式</b><b class='flag-5'>控制器</b>设计

    基于μC/OS-Ⅱ的嵌入式洗碗机控制器的设计与实现

    关于嵌入式的 基于μC/OS-Ⅱ的嵌入式洗碗机控制器的设计与实现 的学术论文
    发表于 04-20 09:58 12次下载