kaiyun官方注册
您所在的位置: 首页> 嵌入式技术> 业界动态> 基于LM3S316的微控制器仿真USB设备

基于LM3S316的微控制器仿真USB设备

2009-07-15
作者:胡晓宏

摘 要:提出了基于LM3S316实现与PC机通讯的方法。给出了硬件实现及软件设计思想。该方法使用微控制器仿真USB设备,降低了功耗、成本。
关键词:LM3S316;USB;PC机

USB(Universal Serial Bus)即通用串行总线,为计算机和外设间的数据通信提供了一个很好的解决方案, 具有传输速度快、连接灵活、使用方便等特点。作为一种高速的新型总线接口,USB支持即插即用设备,并能为外设提供电源且易于扩展。因此,可广泛应用于打印机、扫描仪、大容量外部数据存储器、数码相机和高速数据采集等多种设备中。现在市场上USB设备多是由专门的USB控制芯片来实现其应用控制,芯片内集成了USB协议,成本较高。本文提出用LM3S316微处器来实现其与PC机通讯的方法,以实现仿真USB,从而降低成本。
1 通用串行总线USB的底层结构
1.1 USB设备

USB设备可以接在PC上任意的USB接口,其物理接口的结构如图1(a)所示。使用HUB还可以实现USB的扩展,使更多的USB设备连接到系统中。USB的HUB上有一个上行的端口(连到Host),有多个下行端口用来连接到其他设备。Host和USB设备之间的关系如图1(b)所示。


1.2 USB的物理信号
USB的电缆共有4根线,两边突出的为+5 V的电源线,另外2根是数据线。如图2所示,VBUS是设备供电接线,电压+5 V,最大供电电流500 mA,向设备提供电源。具有过流保护、供电控制等功能。


当USB设备插入接口时电源线先接通然后再接通数据线,拔出时先断开数据线再断开电源线,这正是USB设备可热拔插的原因之一。USB总线可以在不使用时挂起,节约能源。
1.3 USB版本
常规USB通讯协议有USB1.1、USB2.0。USB1.1版本的USB设备,支持全速12 Mb/s低速通讯(1.5 Mb/s);USB2.0版本的USB设备,支持高速通讯(480 Mb/s)。由于USB2.0的通讯速率太高,必须由单独芯片控制,所以芯片仿真无法实现。
1.4 通讯建立
串口通讯另一个标准RS232的通讯发起方可以从两端发起,而USB通讯发起方总是在主机端(HOST),设备端总是响应主机端的通讯请求。主机端如果是PC机,每隔1ms发起一次对一个设备的通讯建立请求,设备接收到访问己方请求后,立即与主机建议起通讯连接。
1.5 电气特性
“D-是低速信号总线,D+是高速信号总线”的说法是不准确的,因为USB信号总线是平衡差分式的,这点类似于485总线。所谓“D-是低速信号总线”是指对于低速设备(如鼠标、键盘) 时,D-这条线在USB设备端加1.5 kΩ上拉电阻。反之对于全速设备(如U盘、打印机、扫描仪),D+信号线加1.5 kΩ上拉电阻。
1.6 NRZI编码及位填充
由于USB总线没有同步时钟信号线,想要主机与设备建立良好通讯同步效果,只有从数据序列中提取同步时钟。类似RS232串口通讯,USB通讯的建立也有起始信息,RS232是一个起始位,而USB起始位有8位,称之为同步域(或段)格式为01010100。由于RS232的通讯速率较低,所以两端同步时钟不大于5%即可实现良好通讯。然而USB通讯最低速率也大于1 Mb/s,对于时钟的同步要求严格得多,况且USB的数据包中的每个字节不象RS232每个字节都有起始位(仅在包头有同步域)。鉴此,USB通讯时必须在数据包的位序列中提取同步信息。想象一下,如果数据包序列中数据位全是逻辑“1”或者全是逻辑“0”,芯片是无法提取同步信息的,为此需要一个高效的编码方案,于是就有了NRZI和位填充概念。何谓NRZI,如图3所示,NRZI是非“1”跳变

对于NRZI编码方式会遇到一个严重的问题,即若一长串连续的“1”将会导致无电平跳变,逐渐地累积,以致引起机收起,最终丢失同步信号,使得读取的时序发生严重的错误。因此,在NRZI编码之间,还需执行所谓的位填充(bit-stuffing)工作。连续地传输6个“1”位,强制在NRZI编码的数据流中加入跳变。这就确保接收器至少可以在每7 bit的时间间隔内检测到一次跳变,使接收器和传送的数据保持同步。图4说明了位填充的工作方式。

1.7 USB通讯模式
4种传输方式:控制(control)、同步(isochronous)、中断(interrupt)、大量(bulk)。
其中中断方式传输主要用于定时查询设备是否有中断数据要传送。设备的端点模式器的结构决定了它的查询频率,这种传输方式的典型应用在少量的、分散的、不可预测数据的传输。键盘、操纵杆和鼠标就属于这一类型。中断方式传送是单向的,并且对于host来说只有输入的方式。
1.8 包的概念
一个最小的USB数据块叫做包(packet),它包括同步信号、包标识(packet ID)、CRC和传送的数据。
1.9 端点
端点也可称为设备终端,每个USB设备(USB芯片)内可以有1~16个端点。相对USB芯片而言,各端点在通讯中功能传输的数据包的大小和传输模式有所不同,在芯片内数据缓冲区的地址也有所变化。
2 LM3S316控制器
Luminary Micro StellarisTM系列的微控制器是首款基于ARM CortexTM-M3的控制器,它将高性能的32位计算引入到对价格敏感的嵌入式微控制器应用中。这些堪称先锋的器件拥有与8位和16位器件相同的价格,却能为用户提供32位器件的性能,而且所有器件都以小型封装形式提供。
Stellaris系列的LM3S316微控制器拥有ARM微控制器所具有的众多优点,如拥有广泛使用的开发工具、片上系统(SoC)的底层结构IP的应用,以及众多的用户群体。此外,控制器还采用了ARM可兼容Thumb的Thumb-2指令集来降低内存需求量,进而降低成本。 与早期的ARM7相比较,功耗更低、中断延时更小、代码执行速度更快、价格更低。
LM3S316微控制器具有如下特性:
(1) 32位RISC性能;
(2) 内部16 KB单周期Flash存储器,4 KB单周期SRAM;
(3) 3个通用定时器;
(4) 同步串行接口(SCI);
(5) 串行UART接口;
(6) 3个独立的模拟比较器;
(7) PWM;
(8) 3~36个可配置的GPIO,每个GPIO都可配置边沿或电平触发中断;
(9) 48脚LQFP封装。
3 实现原理
由于LM3S316控制器每个GPIO都可配置为中断引脚,所以在这个应用中只需要用2个同Port的相邻引脚仿真USB的D+和D-,如图5所示。


4 软件设计
USB总线属一种轮讯方式的总线,主机控制端口初始化所有的数据传输。
每一总线执行动作最多传送3个数据包。按照传输前制定好的原则,在每次传送开始时,主机控制器发送一个描述传输运作的种类、方向、USB设备地址和终端号的USB数据包,这个数据包通常称为标志包(token packet)。USB设备从解码后的数据包的适当位置取出属于自己的数据。数据传输方向不是从主机到设备就是从设备到主机。在传输开始时,由标志包来标志数据的传输方向,然后发送端开始发送包含信息的数据包或表明没有数据传送。接收端也要相应发送一个握手的数据包表明是否传送成功。发送端和接收端之间的USB数据传输,在主机和设备的端口之间,可视为一个通道。 事务预处理允许对一些数据流的通道进行控制,从而在硬件级上防止了对缓冲区的高估或低估,通过发送不确认握手信号从而阻塞了数据的传输速度。当不确认信号发过后,若总线有空闲,数据传输将再做一次。这种流控制机制允许灵活的任务安排,可使不同性质的流通道同时正常工作,这样多种流通常可在不同间隔进行工作,传送不同大小的数据包。
LM3S316芯片利用2个GPIO的中断监控USB总线,当USB总线从空闲状态变为传输状态,也就是总线由主机发起与同步域(SYN),LM3S316进入USB接收程序。略过同步阶段,收到的第一个字节是PID字段(包标识类型)。这字段的低4位描述此包类型方向(IN或OUT),接下来7位表示设备的地址,然后是4位端点号索引。LM3S316根据设备地址判定主机向本设备发起的请求,如果是则根据包的类型决定继续接收数据或向主机发送数据。对OUT类型数据的后5~16位是CRC校验(根据配置决定CRC的位数)。对IN类型,LM3S316将准备好数据连同CRC校验数据一同发往主机。数据传输阶段完成后,主机或设备要发回ACK响应,确认传输成功。
使用LM3S316控制器仿真USB设备的方法,极大地方便了用户的开发,同时降低了功耗、成本。本方法在USB读卡器、USB编程器、USB接口转RS232等方面具有良好的应用前景。
参考文献
[1] Micro 2005.LM3S316数据手册.http://www.zlgmcu.com/luminary/stellaris/lm3S316_ds_cn.pdf.2008.
[2] USB技术大全(电子教程).http://d.download.csdm.net/down/374639/deepbluesean.2007.
[3] 郭佑民,王杰,孙启国. 基于嵌入式微处理器S3C44B0X的USB通信[J].微计算机信息,2008(1-2):21-23.
[4] 肖踞雄.USB系统结构与应用设计[OL].论文天下论文网,http://www.lunwentianxia.am/product.free.6096001.2007.11.

本站内容除特别声明的原创文章之外,转载内容只为传递更多信息,并不代表本网站赞同其观点。转载的所有的文章、图片、音/视频文件等资料的版权归版权所有权人所有。本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如涉及作品内容、版权和其它问题,请及时通过电子邮件或电话通知我们,以便迅速采取适当措施,避免给双方造成不必要的经济损失。联系电话:010-82306116;邮箱:aet@chinaaet.com。
Baidu
map