您的位置:首页 > 其它

基于ISP1581芯片的USB2.0接口设计

2008-06-08 09:48 295 查看
基于ISP1581芯片的USB2.0接口设计
[align=left] [/align]
[align=left]通用串行总线(USB)作为近年来新发展的一种串行总线标准,主要用于PC机与外围设备的互联。USB总线具有使用简单、支持即插即用、易于扩展和传输速度快等优点,使它得到越来越广泛的应用。其协议主要有USB1.1和USB2.0两个版本,USB1.1传输速率最高可以达到12Mb/S,而USB2.0最高可以达到480 Mb/S,这种速度可以满足大部分数据传输应用。[/align]
[align=left]目前,供于开发USB接口的芯片很多,但主要有两类:一类是带USB接口的微控制器,例如Cypress公司的EZ-USB,Intel公司的8x931等;另一类是纯粹的USB接口芯片,它需要一个外部微控制器,例如National公司的USBN9602,Philips公司的PDIUSBD12和ISP1581等。在开发USB设备之前,必须根据具体要求选用合适的USB接口芯片,以降低开发成本,减少开发时间。[/align]
[align=left]本文给出了一种以Philips公司ISP1581作为USB接口芯片,以TI公司的TMS320F2812 DSP作为微控制器的USB2.0接口实现方案,并着重介绍了系统的软硬件设计。[/align]
[align=left] ISP1581芯片简介[/align]
[align=left]ISP1581是Philips公司推出的一款性价比很高的USB2.0接口器件。它完全遵循USB2.0规范,支持7个IN端点,7个OUT端点和一个固定控制IN/OUT端点。它支持USB2.0的自检工作模式和USB1.1的返回工作模式,可以在高速或全速条件下正常运行。ISP1581内部集成了串行接口引擎(SIE)、PIE、8KB的FIFO存储器、数据收发器、PLL的12MHZ晶体振荡器和3.3V的电压调整器。它可以直接与ATA/ATAPI 外设相连,并具有高速的DMA接口。它可通过软件控制与USB总线的连接(SoftConnect),内部具有上电复位电路,支持3.3V和5V两种电源工作方式。[/align]
[align=left]ISP1581与外部的微控制器通信是通过一个高速的通用并行接口来实现的。它与微控制器的连接有两种模式:断开总线模式和通用处理器工作模式。在断开总线模式下,AD[7:0]为多路复用的8位地址/数据总线,DATA[15:0]为单独的DMA数据总线;在通用处理器工作模式下,AD[7:0]为单独的8位地址线,DATA[15:0]为16位的控制器数据总线,DMA多路复用到DATA[15:0]控制器数据总线上。ISP1581适合大多数USB设备类的设计:PDA、存储器类、通讯设备类、数码相机类、复印机类和扫描仪类等。[/align]
硬件电路设计
由TMS320F2812(以下简称F2812)和ISP1581构成的USB2.0接口电路如图1所示。F2812是TI公司的C2000系列DSP,它具有很高的运算速度、较大的寻址空间和丰富的片上外设资源。F2812和ISP1581的连接采用通用处理器模式,即8位地址总线和16位数据总线分离。F2812的/XCS0AND1作为ISP1581的片选信号,此时ISP1581的寄存器地址映射到F2812的地址空间0x2000-0x4000。F2812与ISP1581的数据交换采用中断方式。ISP1581的唤醒功能引脚WAKEUP接F2812的一个通用I/O口; RPU引脚通过1.5KΩ电阻上拉;RREF引脚通过12.0KΩ精密电阻接模拟地;MODE1引脚在通用处理器模式下应上拉;BUS_CONF引脚功能为选择总线模式,上拉后为通用处理器模式;MODE0引脚用来选择通用处理器模式下的读/写功能,上拉后为8051型;其内部集成了复位电路,RESET引脚直接接高电平即可。没有使用DMA传输,所以与DMA相关的引脚没有连接。主机提供5V电源,经过HT7133器件变换为3.3V给整个系统供电
[align=center]固件设计[/align]
[align=left]固件即微控制器的程序文件,它主要完成USB协议处理和数据交换,目的是让Windows可以检测和识别设备,并建立起正确的通信连接。设备与主机的USB通信可以分为配置通信和应用通信。配置通信是主机对设备进行检测过程中,设备的固件对主机的一系列标准请求做出响应。设备必须识别出每个请求,返回被请求的信息,并且采取其它一些请求指定的动作。应用通信是在主机识别设备后进行的有用数据传输。USB支持控制传输、批量传输、中断传输和等时传输四种传输类型,控制传输主要用于配置通信,其它三种类型主要用于应用通信。所有的USB器件都只有端点0支持控制传输。[/align]
[align=left]根据USB2.0协议,任何传输都是由主机开始的,微控制器作它的前台工作,等待中断。[/align]
[align=left]系统的固件程序主要由三部分组成:①初始化F2812和所有的外围电路(包括ISP1581);②主循环部分,其任务是循环扫描USB事件和等待中断;③中断服务程序,其任务是对时间敏感的,必须马上执行。[/align]
[align=left]在初始化过程中,除了F2812自身初始化外,主要完成对ISP1581各个端点使用的传输类型、传输包大小和中断类型及方式等的设置。F2812对ISP1581的操作是通过写/读寄存器实现的。初始化结束后,通过设置ISP1581的方式寄存器中的软件连接位(SOFTCT)使外设连接到USB总线上。当主机检测到有设备连接后,进行总线复位。在此期间,ISP1581发送一个高速(HS)模式检测信号来判断主控制器支持的是USB2.0还是USB1.1规范,若接收到一个高速(HS)的握手信号表明有一个HS主机与总线相连,那么ISP1581就转换到高速(HS)状态,否则仍工作在全速(FS)状态。[/align]
[align=left]ISP1581接收到主机的令牌包、总线复位、挂起和接收到高速模式握手信号等事件发生后,ISP1581都会给F2812发送中断。F2812进人中断服务程序,首先读ISP1581的中断寄存器,判断中断类型,然后执行相应的操作。总线复位和高速模式中断不需要进行特殊的处理,只需在中断服务程序中设定标志即可。在固件程序中,比较难处理的是包含标准USB请求的控制传输。由于只有端点0支持控制传输,因此主要是端点0的编程。控制传输总是在设定(SETUP)阶段开始,之后为可选的数据(DATA)阶段,然后在状态(STATUS)阶段结束。主机会发送建立包(SETUP)、控制读包(CONTROL_IN)和控制写包(CONTROL_OUT)三种包到设备,ISP1581相应的会产生三种中断。在固件编程中,可以设置空闲(USB_IDLE)、发送(USB_TRANSMIT)和接收(USB_RECEIVE)三种状态来处理控制传输。图2为微控制器对控制传输三种包的一个处理流程图。[/align]
[align=left]USB2.0协议的第九章规定了11种标准请求,固件应该对这11种标准请求作出正确响应。这里以“Get_Desctiptor”和“Set_Descriptor”两个标准请求为例并结合图2说明固件是如何通过控制传输来响应请求的。“Get_Desctiptor”请求开始时,主机发送一个建立包到ISP1581,ISP1581接收到“Get_Desctiptor”建立包后,将产生一个中断通知F2812。微控制器响应中断,通过选择端点0SETUP缓冲区读取建立包的内容并将其存入存储区。微控制器根据建立包的内容判断是否为标准请求,如果是一个标准请求,微控制器必须向控制输出端点发送应答建立命令,以重新使能下一个建立阶段。接下来微控制器需要判断控制传输是控制读还是写,这可以通过读建立包中bmRequestType的第8位来确定。如果控制传输是一个控制读类型,器件需要在下一个数据阶段向主机发回数据包。微控制器需要设置一个标志以指示USB设备现在处于传输模式,即准备在主机发送请求时发送数据。[/align]
[align=left]建立阶段结束后,主机会执行数据阶段。ISP1581等待接收Control_In包,接收到后,微控制器确认ISP1581处于传输模式后进行数据包的发送。ISP1581的控制端点有64B FIFO,每次只能传输64B的数据,微控制器在传输阶段必须控制传输数据的数量。如果剩下的字节数大于64,微控制器将先发送64B并减去参考长度64。当下一个Control_In包到来时,微控制器将确定剩余的字节是否为零。如果已经没有数据要发送,微控制器发送一个空包以指示主机数据已经发送完毕。[/align]
如果建立包为“Set_Descriptor”请求,那么建立包中的控制传输将指示此包为控制写类型。在执行完“Set_Descriptor”请求过程中,F2812等待数据阶段。主机发送一个Control_Out包标志,ISP1581接收到数据包,并对F2812产生一个端点0 OUT中断。微控制器响应中断,首先确认ISP1581是否处于USB_Receive状态,然后微控制器通过选择控制输出端点,确认缓冲区是否已满,并将数据从缓冲区读出。
[align=left]相对于控制传输,USB的其它几种传输模式都比较好处理。ISP1581的7个IN端点和7个OUT端点均可通过编程设置为批量传输、中断传输或等时传输模式。在固件编程中需要注意以下几点:①ISP1581的8KB FIFO是所有端点共享的,所以在设定各个端点传输包大小时,总和不能超过8KB;②在调试中,可根据Windows对USB设备的枚举顺序进行程序调试;③为做到兼容USB1.1,全速状态下响应主机标准请求时需要发送全速描述符。完成USB固件编程后,在主机方面需要编写USB设备驱动程序和应用程序。USB驱动程序可使用Windows的DDK编写,也可以使用第三方提供的驱动生成软件编写,如Jungo公司的WinDriver驱动生成软件等。最后,采用批量传输方式对系统进行了测试,实际测得传输速度9.5MB/s。文中的设计未采用DMA,ISP1581采用DMA方式后最高可以达到25MB/s的传输速度。[/align]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: