1 导言
在现代社会,嵌入式体系逐步深化到人们日子的方方面面,各类嵌入式体系产品之间往往经过某种接口进行交互或数据传递。而现在,USB已经成为嵌入式数据交换的最首要的方法,但是各种USB接口的设备都是依据PC机体系的,所以,依据嵌入式体系的USB接口的研讨具有有用的价值和含义,特别是起Master效果的HOST端接口的研讨。
处理这一问题的底子方法就是在需求运用USB设备的嵌入式体系中扩展USB Host功用模块,使之具有与USB设备进行数据传输的才能。
USB协议按功用分为2部分,USB HOST(USB主协议)和USB SLAVE(USB从协议)别离应用于USB HOST CONTROLLER(USB主操控器)和USB DEVICE(USB设备)。一般,USB HOST要比USB SLAVE杂乱,关于广阔的非PC用户来说,尤其是嵌入式体系用户来说,因为USB协议的不对称性,使得完结USB HOST比USB SLAVE要困难地多,Philips公司的ISP1161A1芯片很好地处理了这种问题,他封装了杂乱的USB协议,使得在嵌入式体系中完结USB HOST和USB SLAVE变得简略便利。
2 USB HOST技能简介
USB的通讯能够用图1表明,图1中,左半部分为USB主机端,能够看出,USB主机端由2部分构成,即软件体和硬件体,实际上是3个软件组件组成了USB HOST处理方案,即USB客户驱动程序,USB驱动程序和USB主机操控器驱动程序,应用程序的事务处理是由USB客户驱动程序(设备驱动程序)发动的,客户驱动程序把USB设备作为一个能够被拜访的端点调集,他能够被操控并与他的功用单元进行通讯,USB体系软件包括USB驱动程序和USB主操控器驱动程序,USB驱动程序担任配置办理、用户办理、总线办理和数据传输,USB主操控器驱动程序担任调度办理,行列办理和操控器办理,以及数据的位编码、封包、循环校验、发送、错误处理等。
如图2所示,USB HOST的软件结构分为3大部分,即USB总线驱动(USBD),USB HOST操控器驱动(HCD)、客户软件、其间客户软件处理和设备有关的信息,USBD处理和硬件无关的协议,而HCD则处理与硬件相关的协议,USBD和HCD都包括了一系列办理各种状况的寄存器。
3 SP1161体系结构
要完结USB协议,必需要经过一系列寄存器来完结,这些寄存器要能完结USB软件结构中的USBD和HCD,即要完结USB协议状况的操控,还要有必定的缓冲区来寄存进出的数据,ISP1161专门针对USB协议规划的特别硬件结构可便利地完结USB HOST和USB SLAVE。ISP1161的硬件结构首要是3类不同的寄存器,用户经过操作这3种寄存器来到达完结USB传输的意图,这3类寄存器是:
(1)HC control and status registers:USB主操控器操控和状况寄存器,首要用于传输过程中操控指令的寄存和状况的读取,可读可写的寄存器有2个地址,只读或只写的寄存器只要1个地址。
(2)Isochronous Transfer List (ITL):同步传输列表缓冲区。
(3)Acknowledged Transfer List(ATL):接纳传输列表缓冲区。
依据USB协议,数据传输分为4种形式,Control(操控),Bulk(整批),Interrupt(中止)和Isochronous(同步)。其间ITL是为了完结同步传输,ATL则完结其他3种形式的传输。
4 ISP1161x主操控器编程完结
规划ISP1161x主操控驱动程序首要触及以下2个重要内容,下面具体介绍:
4.1 读/写ATL和ITL缓冲区
ATL和ITL缓冲区的坐落ISP1161x内部的FIFO缓冲RAM之中,每个缓冲区包括许多PTD(Philips Transfer Descriptor),而PTD用于主操控器硬件发送或接纳USB包从USB设备,作为调度USB传输的一部分,HCD在体系内存中购建PTD。然后HCD将购建好的PTD移入ATL或许ITL缓冲区,主操控器硬件答应软件去拜访每一个缓冲区,就像他们是别离的硬件缓冲区,HCD拜访ATL缓冲区经过硬件寄存器HcTransferCounter(22H/A2H)和HcATLBufferPort(41H/C1H),而ITL缓冲区则由HcTransferCounter和HcITLBufferPort(40H/C0H)拜访。下面一段示例代码取自于本项目,其功用是向ATL缓冲区写数据,hci→hp→atl_len表明,ATL则在内存中还没有发送的数据的长度,hci→hp→tl表明缓冲区的地址。