欢迎来到天天文库
浏览记录
ID:40669663
大小:122.00 KB
页数:5页
时间:2019-08-05
《32 位ARM 嵌入式系统扩展USB 接口设计》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、32位ARM嵌入式系统扩展USB接口设计 常用的主机与嵌入式外设的高速通信接口有LPT并行口、USB、1394及10/100M以太网等接口。RS232不适合高速数据传送,1394接口需要专门的适配器接口成本过高,一般较少使用,USB接口被广泛用于高、中、低不同速度设备与主机通信,USB2.0的最高速度可达480Mb/s,可传送高清晰数字视频码流,完全可以替代1394接口,USB与以太网接口相比,采用主从结构,有即插即用特性,驱动程序丰富,互操作性好等优点。 USB(UniversalSerialBus,通用串行总线)接口是1994年Intel、Micr
2、osoft等多家公司联合推出的计算机外设互连总线协议。USB接口支持1.5Mb/s、12Mb/s和480Mb/s的数据传输速率,支持控制、中断、批量与实时4种数据传输模式,让外围设备可以有弹性的选择。不管是交换少量或是大量的数据,还是有无时效的限制,都有合适的传输类型。USB的实时同步数据传输模式适合于高速实时音视频数据流的传送。 基于ARM(AdvancedRISCMachines)处理器的32位嵌入系统具有极高运算速度和大容量的数据处理能力,常需要设计高速接口与其他设备通信,为此本文讨论基于S3C44B0XARM7处理器的嵌入式统扩展USB接口(设备
3、端)的技术方案。1USB接口原理 USB1.1规范将USB分为5部分:控制器、控制器驱动程序、USB芯片驱动程序、USB设备以及针对不同USB设备的客户端驱动程序。(1)控制器(HostController)主要负责执行由控制器驱动程序发出的命令。(2)控制器驱动程序(HostControllerDriver),在控制器与USB设备间建立通信管道(Pipe)。(3)USB驱动程序(USBDriver),提供对不同USB设备及芯片的支持。(4)USB设备(USBDevice),有两类USB设备:一类称为功能设备(Function),另一类是称为USB集线器
4、(HUB),可以连接多个USB设备。(5)USB设备驱动程序(ClientDriverSoftware)及特定应用程序。 主控制器的驱动软件由操作系统支持,USB设备开发人员一般只需编写客户驱动程序,实现特定功能,设备端所有功能软件需要全面设计。 USB的四种数据传输模式分别是:控制型传输、中断型传输、批量型传输、实时型传输。第一种在缺省通道中传输USB接口本身的配置等控制信息,后面三种用于功能部件传输数据。中断型用于键盘等的异步输入输出少量数据传输,批量传输主要用于象硬盘等块设备的数据传输,在中断和批量的传输过程中要传递交互握手信号,确保数据准确
5、无误。 实时传输对带宽有严格要求,但允许有一定误码,省去了交互握手信号的传递,常用于音视频码流数据传输。四种类型数据都按带宽要求分配在1ms一帧的数据帧内进行传输,USB1.0实时传输可得到的最大带宽10.24Mbps。2嵌入式系统USB接口设计 要满足高性能ARM嵌入式系统的要求,扩展USB接口必须选择高性能USB控制器芯片,Philips公司的PDISUBD12USB器件,是与微处理器配合使用的高性能USB接口器件,性价比很高。PDIUSBD12主要特性有:(1)符合USB1.1技术规范;(2)USB控制器并行接口与处理器间的数据传输速度高达2M
6、字节/秒;(3)在批量模式和同步模式下均可实现1M字节/秒的数据传输速率;(4)集成了FIFO存储收发器,支持DMA操作;(5)内置时钟倍频PLL电路,可编程时钟频率输出;(6)多中断模式实现批量和同步传输; 采用PDIUSBD12USB标准组件与S3C44B0X接口,减小了开发的时间、风险以及费用,是最快捷、最经济的方法实现ARM嵌入式系统扩展USB的解决方案之一。PDIUSBD12与S3C44B0XARM7处理器的电路图见图2。因ARM7用存储器影射方法扩展I/O接口,一般按16bit方式寻址,所以U2的A0连到U1的Addr1引脚,片选信号nGCS
7、1的基地址是0x0200_0000。 3ARM端USB设备程序 设备端程序主要完成:ARMBIOS和ucLinux的加载、启动通信进程、USB控制器初始化、响应主控制器标准PnP及其他命令、建立USB端点(Endpoint)逻辑通道、数据传输操作等功能,图3是基于ARM的USB设备与PC间音频通信的程序功能结构图。 操作USB芯片的接口函数的宏定义为:typedefunsignedshortintU16;#definepD12_CMD((U16*)0x02000002)//指向D12命令寄存器指针#definepD12_DAT((U16*)0x02000
8、000)//指向D12数据寄存器指针#defineD
此文档下载收益归作者所有