当前位置:首页 > 智能硬件 > 智能硬件
[导读]通用串行总线(USB)作为一种计算机与外围设备连接的标准接口,具有即插即用、外展方便和传输速度快等优点。

    摘要:通用串行总线(USB)作为一种计算机与外围设备连接的标准接口,具有即插即用、外展方便和传输速度快等优点。文中给出一种基于SIP1581型微控制器的USB2.0接口实现方案,同时给出它的软硬件设计方法。

    关键词:通用串行总线 接口电路 固件 驱动程序

1 引言

通用串行总线(USB)是近年来开发的一种串行总线标准,主要用于PC与外围设备的互联。USB总线具有使用简单、即插即用、易于扩展和传输速度快等优点。其协议主要有USB1.1和USB2.0二个版本,USB1.1的传输速率最高可以达到12Mb/s,USB2.0最高可以达到480Mb/s,因此可以满足大部分数据的传输需要。

目前,用于USB接口的电路主要有二类:一类是带USB接口的微控制器(如Cypress公司的EZUSB,Intel公司的8x931等);另一类是纯粹的USB接口电路,它需要一个外部微控制器(如National Semiconductor公司的USBN9602,Philips公司的PDIUSBD12和ISP1581等)。通常在开发USB设备之间必须根据具体要求选用合适的USB接口电路,以降低开发成本,减少开发时间。

本文给出一种以Philips公司的ISP1581型接口电路作为USB接口,以TI公司的TMS320F2812型DSP作为微控制器的USB2.0接口实现方案和系统软硬件设计方法。

图1

2 ISP1581简介

ISP1581是Philips公司推出的一款高性价比的USB2.0接口电路。它完全遵循它完全遵循USB2.0规范,支持7个IN端点,7个OUT端点和一个固定控制IN/OUT端点。ISP1581支持SUB2.0的自检工作模式和USB1.1的返回工作模式,可以在高速或全速条件下正常运行。内部集成有串行接口引擎(SIE)、PIE、8KB的FIFO存储器、数据收发器、PLL的12MHz晶体振荡器和3.3V的电压调整器。该电路可直接与ATA/ATAPI外设相连,并具有高速DMA接口。同时,可通过软件控制与USB总线的连接(SoftConnect),ISP1581内部具有上电复位电路,支持3.3V和5V二种电源工作方式。

ISP1581与外部微控制器的通信主要通过一个高速通用并行接口来实现。它与微控制器的连接有二种模式:断开总线模式和通用处理器工作模式。在断开总线模式下,AD[7:0]为多路复用的8位地址/数据总线,DATA[15:0]为单独的DMA数据总线;在通用处理器工作模式下,AD[7:0]为单独的8位地址线,DATA[15:0]为16位控制器数据总线,此时,DMA将多路复用到DATA[15:0]控制器的数据总线上。ISP1581适合PDA、存储器类、通讯设备类、数码相机类、复印机类和扫描仪类等大多数USB设备类的设计。

3 硬件电路设计

由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Ω精密电阻器接模拟地;MODE引脚在通用处理器模式下也应上拉;BUS_CONF引脚的功能是选择总线模式,上拉后为通用处理模式;MODE0引脚用来选择通用处理器模式下的读/写功能,上拉后为8051型。该电路内部集成了复位电路,将RESET引脚直接接高电平即可复位。由于本设计没有使用DMA传输,所以与DMA相关的引脚没有连接。主机提供的5V电源经过HT7133变换为3.3V后可给整个系统供电。

4 软件设计

软件即微控制器的程序文件,它主要完成USB协议处理和数据交换,目的是让Windows检测和识别设备,建立起正确的通信连接。设备与主机的USB通信可以分为配置通信和应用通信。配置通信 主要指主机在对设备进行检测的过程中设备软件对主机的一系列标准请求所做出的响应。设备必须识别每个请求,并返回被请求的信息,同时采取其他一些请求指定的动作。应用通信主要指主机识别设备后进行的有用数据传输。USB支持控制传输、批量传输、中断传输和等时传输4种传输类型,控制传输主要用于配置通信,其他3种类型主要用于应用通信。所有的USB器件都只有端点0支持控制传输。

根据USB2.0协议,任何传输都是由主机开始的,微控制器做它的前台工作,并等待中断。系统的软件程序主要由三部分组成:一是初始化F2812和所有的外围电路(包括ISP1581);二是主循环部分,其任务是循环扫描USB事件和等待中断;三是中断服务程序,其任务执行系统指令。

在初始化过程中,除了F2812自身初始化外,还要完成对ISP1581各个端点使用的传输类型、传输包大小和中断类型及方式等设备任务。F2812对ISP1581的操作是通过写/读寄存器来实现的。初始化结束后,通过设置ISP1581方式寄存器中的软件连接位(SOFTCT)可使外设连接到USB总线上。主机检测到有设备连接后会进行总线复位。在此期间,ISP1581将发送高速(HS)模式检测信号来判断主控制器支持的是USB2.0还是USB1.1规范,若接收到一个高速(HS)握手信号,则表明有一个HS主机与总线相连,此此ISP1581将转换到高速(HS)状态,否则仍工作在全速(FS)状态。

当ISP1581接收到主机的令牌包、总线复位、挂起和接收到高速模式握手信号等事件后,ISP1581都会给F2812发送中断请求。F2812进人中断服务程序后,首先读ISP1581的中断寄存器,判断中断类型,然后执行相应的操作。总线复位和高速模式中断不需要进行特殊的处理,只需在中断服务程序中设定标志。在软件程序中,比较难处理的是包含标准USB请求的控制传输。由于只有端点0支持控制传输,因此主要是对端点0的编程。控制传输总是在设定(SETUP)阶段开始,之后为可选的数据(DATA)阶段,然后在状态(STATUS)阶段结束。主机会发送建立包(SETUP)、控制读包(CONTROL_IN)和控制写包(CONTROL_OUT)3种包到设备,ISP1581相应的会产生3种中断。在编程中,可以设备空闲(USB_IDLE)、发送(USB_TRANSMIT)和接收(USB_RECEIVE)3种状态来处理控制传输。图2为微控制器对3种包的控制传输处理流程。

USB2.0协议的第九章规定了11种标准请求,软件应对这11种标准请求作出正确响应。这里以“Get_Desctiptor”和“Set_Descriptor”二个标准请求为例,并结合图2来说明软件是如何通过控制传输来响应请求的。“Get_Desctiptor”请求开始时,主机发送一个建立包到ISP1581,ISP1581接收到“Get_Desctiptor”建立包后,将产生一个中断通知F2812。微控制器响应中断,并通过选择端点0SETUP缓冲区来读取建立包的内容并将其存入存储区。微控制器根据建立包的内容判断是否为标准请求,如果是一个标准请求,微控制器必须向控制输出端点发送应答建立命令,以重新使能下一个建立阶段。接下来微控制器再判断控制传输是控制读还是写,这可以通过读建立包中bmRequestType的第8位来确定。如果控制传输是一个控制读,器件将在下一个数据阶段向主机发回数据包。微控制器需要设置一个标准以指示USB设备现在处于传输模式,即准备在主机发送请求时发送数据。

建立阶段结束后,主机会执行数据阶段。当ISP1581接收到所等待的Control_In包后,微控制器将对ISP1581处于传输模式后进行数据包的发送进行确认。ISP1581的控制端点有64B FIFO,每次只能传输64B的数据,微控制器在传输阶段必须控制传输数据的数量。如果剩下的字节数大于64,微控制器将先发送64B并减去参考长度64。当下一个Control_In包到来时,微控制器将确定剩余的字节是否为零。如果已经没有数据要发送,微控制器将发送一个空包向主机表明数据已经发送完毕。

图2

    如果建立包为“Set_Descriptor”请求,那么建立包中的控制传输将指示此包为控制写类型。在执行完“Set_Descriptor”请求过程后,F2812进入等待数据阶段。主机发送Control_Out包标志后,当ISP1581接收到该数据包时会对F2812产生一个端点0 OUT中断。微控制器响应中断时,首先确认ISP1581是否处于USB_Receive状态,然后微控制器通过选择控制输出端点来确认缓冲区是否已满,同时将数据从缓冲区读出。

相对于控制传输来说,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。

5 结束语

本文详细介绍了基于ISP1581型接口电路的USB2.0接口软硬件设计。ISP1581是一个性能优化的USB接口电路,具有同外部微控制器接口简单、应用灵活、调试方便和性价比较高等优点。采用ISP1581可以快速开发出高性能的USB2.0设备。实际上,USB作为新一代串行总线标准,在计算机与外设的互联中得到越来越广泛的应用,因此,USB接口的开发也会得到越来越多的重视。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭