USB OTG扩展子板的实现
2008-05-30
作者:宋宇宁, 周兆英, 赵焕军, 姜
摘 要:介绍了采用ISP1362控制芯片制作的一块扩展子板,该板为美国模拟器件公司的ADSP-BF533 EZKIT-Lite 评估板" title="评估板">评估板提供了USB OTG支持,并在BlackFin 16位DSP上通过USB OTG接口实现了与PC机以及U盘的数据通信。
关键词: USB OTG BlackFin DSP U盘
USB协会于2000年推出了USB 2.0规范,将USB的传输速度" title="传输速度">传输速度由全速的12Mbps 提高到高速的480Mbps,使得USB的传输速度得以大幅度提升;2001年底又推出了USB OTG技术,提供了USB产品彼此间可以脱离电脑进行连接通讯的规范;之后,许多半导体公司先后推出了支持这一新型标准的芯片解决方案,其中飞利浦公司的单芯片USB OTG主机及外设" title="外设">外设控制器ISP1362就适用于嵌入式系统及外设的点到点连接。
USB一开始被定位在电脑与周边设备的连接,USB 协会在制定USB 的基本架构时选择了主从式的架构,将较困难及较复杂的工作都交给主机(Host)端,从而降低了USB设备(Slave)设计的复杂度。同时,USB具有即插即用、提供电源等特性,使得USB产品的使用方便性大幅度提高。
USB 2.0规范将传输速度提高到480Mbps,使USB技术在电脑周边产品的连接应用上进入成熟阶段。越来越多的USB产品出现后,有部分产品需要脱离电脑的约束互相连接进行通讯,例如数码相机和打印机的连接。但是USB原有的架构限制了USB产品间互相连接的可能性。对于这种情况,USB协会又推出了USB OTG规范来弥补这个缺陷。
1 USB OTG规范简介
USB OTG是USB On The Go的缩写。在这里“Go”是国际象棋棋盘的意思,On The Go的意思为在国际象棋棋盘上任一条黑格线和白格线都可以找到相连的点。USB OTG意味着,在USB OTG规范之下,任意两个符合规范的USB产品都可以互相连接进行通讯,而不是必须通过电脑才能做到,从而实现了各类USB产品完全脱离电脑进行数据传输的功能。
USB OTG 是一个依存于USB 2.0的规范,所有在USB OTG规范中未提到的事项都必须以USB 2.0 的规范为准。因此USB OTG规范存在的目的仅在于提供一种方式,让两个USB产品得以连接,实现数据处理的功能。
随着USB 体系结构的逐步完善,移动数据的交换和存储设备" title="存储设备">存储设备大量涌入市场,U 盘在计算机上的应用已经十分常见。因此,USB 主机的嵌入式应用就成了USB 领域新的研究焦点。在此基础上人们希望以嵌入式USB 主机为核心的系统能够同时兼容通用USB 设备的功能,在需要的时候依然可以作为通用PC 机的可移动存储器。
2 ISP1362控制器简介
飞利浦公司生产的ISP1362控制器主要包括一个OTG控制器、一个主机控制器及一个外设控制器" title="外设控制器">外设控制器。它们彼此相连,同时还通过一个数据总线接口与外部CPU相连。主机及外设控制器都配有内置存储器,以缓冲USB通信流量。ISP1362芯片上还集成了一个OTG收发器、一个VBUS电荷激励器以及上拉与下拉电阻器,用来减少外部元件的数量以降低成本。ISP1362内部结构如图1所示。
ISP1362控制器提供OTG模式要求的所有控制、监控及角色交换功能。它支持OTG Supplement 1.0标准规定的所有功能。
若以OTG模式进行配置,ISP1362控制器既可用作主机,也可用作外设,并支持主机与外设互相转换的主机通信协议HNP(Host Negotiation Protocol)。此外,它还支持两种模式下的对话请求协议SRP(Session Request Protocol),作为主机使用时能够关闭VBUS以响应SRP;而作为外设使用时,能够启动SRP以唤醒主机。
ISP1362有一套OTG寄存器,能提供控制及状态监控功能,用来支持HNP及SRP软件。
ISP1362支持内置电源及外部电源两种供电模式。对于极低功率设计,采用内部集成的电荷激励器可避免使用外部电源;对于较高功率要求,ISP1362采用外部电源为USB总线供电。
它还集成了4KB可直接寻址的片内缓冲存储器,并可随意扩展。
ISP1362采用更稳定、更先进的USB数据传输结构,在增强了已经应用成熟的ISP1161控制器性能的同时,还充分利用USB带宽提供了比以往产品更高的性能。其独特的结构特性,如用于海量传输的配对缓冲、用于等时传输的多帧缓冲、用于中断传输的自动中断轮询速率,使得ISP1362能够实现USB 2.0标准制定的全速数据传输速率。
ISP1362由经市场检验应用成熟的ISP1181外设控制器及2462B内置缓冲存储器等组成,可满足各种不同应用场合的需求。ISP1362的高效双缓冲结构最大限度地增加了数据的吞吐量。
作为外设控制器,ISP1362除支持两个控制端点外,还能以全速及低速将多达14个端点编程为任何四种传输类型。
3 USB OTG扩展子板
为了方便开发人员基于ADSP-BF533 16位DSP处理器进行开发,美国模拟器件公司研制了ADSP-BF533 EZKIT-Lite评估板。评估板的核心是一片160脚Mini-BGA封装的ADSP-BF533 DSP处理器,工作频率最高可以达到600MHz,评估板具有32MB(16M×16bit)SDRAM,2MB Flash存储器(512K×16bit×2chip)。在音频处理方面评估板由AD1836提供多路声音接口,包括4路2通道音频输入端口、6路3通道音频输出端口;在视频方面则由ADV7183视频解码器和ADV7171视频编码器分别提供3路视频输入/输出端口。评估板还提供了JTAG、UART等标准接口,按钮电路和LED显示电路等,其扩展接口预留了包括PPI、SPI、EBIU、PF、SPORT0/1等所有关键信号管脚,使得USB OTG扩展功能能够得以实现。基于ISP1362设计的USB OTG子板原理框图如图2所示。它由ADSP-BF533 EZKIT-Lite评估板、ISP1362控制器和一些接口及电源管理电路组成。
4 Blackfin软件设计
基于USB OTG子板,本文设计了一套层次分明的C语言驱动程序,其底层提供了操作ISP1362控制器的所有函数,并且经过了科学、合理的封装;而上层提供了许多使用方便的API,使用这些API可以实现设备状态与PC机的通信和主机状态对U盘的读写。
4.1 VDSP ++集成调试环境
Visual DSP++是美国模拟器件公司为其DSP系列研制的集成编译环境,提供了界面良好、效率极高的编辑和编译环境,并且支持ASM,C,C++。所有的文件都以项目(Project)和工作空间(Workspace)的形式存储和管理,使用方便、简洁。
VDSP++的在线仿真和软件仿真功能可以方便地进行程序调试,最新版本的VDSP++支持Xthread多线程实时操作系统,同时支持双核DSP的调试。本文的USB OTG程序全部在VDSP++上实现。
4.2 USB OTG 程序设计
USB OTG驱动程序用来控制ISP1362完成各种操作,实现其功能。其程序栈结构如图3所示。主要分为四个部分:USB设备栈,OTG驱动程序,USB主机栈和OTG设备应用程序接口(API)。其中,USB设备栈由设备控制器驱动、USB协议层、USB设备类驱动三层组成;USB主机栈由主机控制器驱动、USB驱动和目标外设主机类驱动组成。
USB OTG 驱动程序简要流程图如图4所示。系统上电后,首先进行初始化,对CPU的频率、读写周期及延时、GPIO、中断等进行初始设置。通过检测连接在ISP1362的ID管脚上的跳线,判断当前是工作于从设备状态还是主机状态。如果工作于主机状态,则对ISP1362进行相应初始化,并对端口进行检测。如果有设备连接,则进行枚举;否则进入空闲(IDLE)状态。若工作于从设备状态,则对ISP1362进行相应的初始化,等待连接到主机完成枚举。
为了节省开发时间,本文使用WinDriver生成PC端驱动程序,并开发了简单的PC端用户应用程序,与工作于USB从设备状态的子板进行通信。
4.3 U盘读写的实现
嵌入式系统通常需要进行大容量数据存储,U盘是一种很好的存储媒介,具有容量大、可移动、可扩展、与PC机交互数据方便等优点,因而在本文的USB OTG子板上实现与U盘的读写具有很强的应用价值和市场前景。
U盘属于USB大容量存储设备(USB Mass Storage Device),要对U盘读写,USB主机必须具有相应的驱动,对各种读写指令进行封装、解释和执行。
本文首先在USB主机接口驱动上层封装一个API函数——USBXfer,实现USB数据传输。USBXfer函数流程图如图5所示。
其次,在USBXfer函数的基础上,添加USB大容量存储设备中规定的CBW和CSW管理程序,并进一步添加实现各种ATAPI指令的CBW。
最后,通过各种命令的有机组合使用,实现数据传输。U盘读写程序流程图如图6所示。
本文采用飞利浦公司的ISP1362控制芯片,基于ADSP-BF533 EZKIT-Lite评估板设计的USB OTG子板初步实现了从设备和主机的数据传输:作为从设备,PC机端的应用程序可以通过USB OTG接口对评估板上的SDRAM进行数据的读写;作为主机,可以枚举连接到USB OTG接口上的各种USB 设备,如鼠标、键盘、U盘、USB硬盘等,而且实现了对U盘的读写。基于本文的USB OTG子板,可以方便地将USB OTG功能加入到各种基于Blackfin DSP的嵌入式系统之中去,实现USB嵌入式设备之间的数据传输。
参考文献
1 Lane Hauck. Embedding USB. Embedded Systems Confer-ence, Session 206, Cypress Semiconductor, March 13, 2002
2 ADSP-BF533 EZ-KIT Lite Evaluation System Manual. Ana-log Device Inc., April 2004
3 谭 刚, 林水生. ISP1362 USB OTG控制芯片及其应用. 国外电子元器件,2005;(2)
4 杨智君,田 地,余青松等. USB On-The-Go技术概述,电子技术应用,2003;29(4)
5 程 军,陈贵灿,姜 飞.通用串行总线的OTG技术.微电子学与计算机,2003;(6)