当前位置:首页 > 嵌入式 > 嵌入式硬件
[导读]1 引言通用串行总线(USB)是近年来开发的一种串行总线标准,主要用于PC与外围设备的互联。USB总线具有使用简单、即插即用、易于扩展和传输速度快等优点。其协议主要有USB1.1

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接口实现方案和系统软硬件设计方法。

 


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 设备现在处于传输模式,即准备在主机发送请求时发送数据。[!--empirenews.page--]

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

 


如果建立包为“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接口的开发也会得到越来越多的重视。

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

D类音频放大器参考设计(EPC9192)让模块化设计具有高功率和高效,从而可实现全定制、高性能的电路设计。

关键字: 音频放大器 电路设计

可调电容作为一种重要的电子元器件,在电路设计中具有广泛的应用。本文将对可调电容的基本概念、工作原理、调用方法以及应用场景进行详细探讨,旨在帮助读者更好地理解和应用可调电容。

关键字: 可调电容 电子元器件 电路设计

USB摄像头是一种采用USB接口的视频采集设备,其优点在于即插即用、操作简便,无需额外驱动程序,支持笔记本电脑,并且成本较低,可以支持远程网络观看。

关键字: usb摄像头 驱动程序

近日,国内新一代激光陀螺驱动系列功能芯片问世,由湖南二零八先进科技有限公司(下简称“二零八公司”)技术团队研发。相比行业内普遍应用的上一代激光陀螺驱动控制电路,激光陀螺驱动专用芯片降低了电路设计难度,大幅减小体积重量,实...

关键字: 激光陀螺仪电路 芯片 电路设计

R是施密特触发器输入端的一个10KΩ下拉电阻,时间常数为10×10-6×10×103=100ms。

关键字: 复位 电路设计 施密特触发器

学好电子技术基础知识,如电路基础、模拟电路、数字电路和微机原理。这几门课程都是弱电类专业的必修课程,学会这些后能保证你看懂单片机电路、知道电路的设计思路和工作原理;

关键字: 单片机 编程 电路设计

Buck-Boost电路工作原理及其应用你有没有去了解过呢?随着科技的不断发展,电力电子技术在各个领域得到了广泛的应用。其中,Buck-Boost电路作为一种重要的电力电子变换器,具有很高的实用价值。本文将对Buck-B...

关键字: buck-boost 电路设计

与两相双极步进电机的驱动电路相比,两相单极步进电机的驱动电路在输入段配置、内部逻辑及控制电路和驱动电路使用双通道方面基本相同,但是输出段的配置不同。

关键字: 四相步进电机 驱动程序 程序电路

本文是开发测量核心体温( CBT )传感器产品的刚柔结合电路板的通用设计指南,可应用于多种高精度(±0.1°C)温度检测应用。

关键字: 温度传感器 电路设计

自9月22日开始,2023年中国大学生工程实践与创新能力大赛选拔赛在全国各省市陆续展开,10月29日北京、海南、新疆等区域选拔赛成功举办,也为今年的选拔赛画上了圆满的句号。在此,向那些成功晋级国赛的选手们致以热烈祝贺,同...

关键字: PCB 电路设计
关闭
关闭