大家都知道自从1996年USB传输协议的诞生,并以其优势很快的风靡了所有计算机外设以及数码设备,大家都知道USB设备分为HOST(主设备)和SLAVE(从设备),只有当一台HOST于一台SLAVE连接时才能实现数据的传输,OTG设备就是是我们的“EX”既能充当HOST,亦能充当SLAVE。自1996年USB1.0规范以后,USB-IF(Universal Serial Bus Implementers Forums)又陆续公布了 USB OTG1.0 、USB2.0和 USB OTG等几个规范,其中USB2.0的传输带宽达到480Mbps,而USB OTG更使USB装置摆脱了原来主从架构的限制,实现了端对端的传输模式,随着USB规范的不断完善,USB的应用领域也得到了拓展。USB诞生的初衷是简化电脑和其外设的连接,早是用在键盘和鼠标上,而现在,USB的应用已经从PC外设跨越到了消费电子产品和通信电子产品领域,显着的应用是在数码相机等消费电子产品上。
1 TUSB6020的特性、内部结构及其工作原理
1.1 TUSB6020特性和内部结构
TUSB6020采用5×5mm封装,符合USBG2.0 OTG规范,具有以下关键特性:
SRP和主机流通协议HNP。
提供多种工作速率,包括 1.5Mbps低速率、12Mbps全速率和 480Mbps高速率。
VBUS短路的保护电路。
片上集成可切换的上拉和下拉电阻。
片上锁相环可降低高速时钟噪声。
电源耗电量小于100mW。

图1为TUSB6020的内部结构。TUSB6020主要模块有USB 2.0 PHY模块、电源/复位/时钟控制模块(PRCM)、USB2.0 OTG控制模块及VLYNQ外部主机接口模块等。
1.2 TUSB6020工作原理
TUSB6020工作状态分为复位状态、空闲状态和正常工作状态。在空闲状态下,USB2.0 PHY挂起;正常工作状态下,使能USB2.0 PHY,从而使能VBUS检测电路和ID检测电路。不妨设TUSB6020为OTG主机设备(A设备),对方USB设备作为OTG从机设备(B设备),分析对话请求协议SRP和主机通信协议HNP的工作过程。
USB OTG是USB On-The-Go的缩写,是近年发展起来的技术,2001年12月18日由USB Implementers Forum公布,主要应用于各种不同的设备或移动设备间的联接,进行数据交换。特别是PDA、移动电话、消费类设备。改变如数码照相机、摄像机、打印机等设备间多种不同制式连接器,多达7种制式的存储卡间数据交换的不便。USB技术的发展,使得PC和周边设备能够通过简单方式、适度的制造成本将各种设备连接在一起,上述我们提到应用,都可以通过USB总线,作为PC的周边,在PC的控制下进行数据交换。
B设备向A设备发起SRP会话的条件是:(1)VBUS跌落到会话有效阀值0.8V以下;(2)DM/DP维持低电平SEO状态至少2ms。之后,B设备开始发起SRP请求,如图2所示。
500)this.style.width=500;" border=0>
工作步骤如下:(1)B设备将上拉电阻接入 DM/DP并持续5-10ms;(2)B设备驱动 VBUS足够长的一段时间直到 VBUS大于会话有效阀值0.8V;(3)A设备检测到 DM/DP或 VBUS升高,开启 VBUS电源给 B设备供电;(4)A设备复位总线对 B设备进行枚举配置,开始传输任务。
HNP协议用来控制A、B两设备主从角色的转换。A设备查询B设备的OTG性能描述符,以判断B设备是否为OTG设备,若B设备为OTG设备,返回有效的性能描述符,A设备向B设备发送Set feature命令,然后挂起总线,等待B设备的HNP请求。如图3所示。

工作流程可以归纳为:(1)A设备挂起总线,DM/DP为高电平;(2)B设备收到Set feature命令,在总线挂起后断开它的DM/DP上拉电阻,将总线释放到SEO状态;(3)A设备检测到SEO状态后响应,连接它的DM/DP上拉电阻;(4)B设备在检测到DM/DP变高后,开始以主机方式工作,B设备复位总线,开始使用总线;(5)B设备使用完总线后,停止总线活动挂起总线,DM/DP再次变为高电平;(6)A设备检测到总线空闲后,断开DM/DP上拉电阻;(7)B设备检测DM/DP变低后,连接DM/DP上拉电阻;(8)A设备等待DM/DP变高后,表明B设备已准备回到从机状态,A设备从新成为主机复位总线,开始使用总线。
2 “达芬奇”处理器 TMS320DM6437与 TUSB6020的接口设计
TMS320DM6437是TI(德州仪器)针对数字视频领域开发的支持达芬奇技术的单核DSP处理器,低廉的开发套件与芯片价格使其主要而向低成本应用场介。它具备C64x+内核。所配备的视频处理子系统(VPSS)极大的支持了前端预处理与后端显示,减轩DSP核负担,配备的10/100M EMAC,减少外围电路,使硬件小型化成为可能。
2.1 硬件设计
TUSB6020与 TMS320DM6437硬件连接的电路图如图 4所示。

TUSB6020的DM/DP、ID和VBUS引脚与USBmicroAB连接器相连,建立与对方 USB设备的物理连接,其中 VBUS 5V电压由 VBUS电源开关提供,CPEN连接至它 EN引脚用以提供电源开关使能信号。双电源调节器向 TUSB6020提供 3.3V和 1.5V的数字、模拟电压。
VLYNQ接口引脚详细描述如下:(1)TUSB6020的 VLYNQ CLK接外部时钟,VLYNQ控制寄存器中的 CLKDIR比特位设置为 1,VLYNQ接口时钟由 DM6437系统时钟提供。(2)VLYNQ SCRUN为 VLYNQ时钟运行请求引脚,低电平表示允许 VLYNQ时钟运行,高电平表示传输事务结束,VLYNQ时钟运行停止。(3)TMS320DM6437写操作时,将数据压缩、地址编译,经串行编码后由 VLYNQTXD[0:3]发出,TUSB6020将数据进行串行解码和解压缩后读取地址,将数据写入指定寄存器。(4)TMS320DM6437读操作时,TUSB6020收到请求后,将数据压缩和串行编码后由 VLYNQ TXD发往TMS320DM6437。(5)VLYNQ接口的数据收发与VLYNQ串行时钟同步。
2.2 软件设计
2.2.1 TMS320DM6437和TUSB6020底层通信的实现
TMS320DM6437和TUSB6020底层通信是整个USB体系软件的根基,包括了DM6437对TUSB6020的读、写、设定地址等操作,主要通过 DM6437访问 TUSB6020的控制寄存器来完成。下面是写TUSB6020控制寄存器的部分程序代码。
void TUSB6020_Write_Reg(Uint32*OTG_base_addr,Uint32 offset,Uint8 size,Uint32 data)
{
Uint32 tmp_addr=0;
Uint16 tmp_data=0;
…
{…
case 16:
tmp_addr=*OTG_base_addr;
tmp_addr=tmp_addr+offset;
tmp_data=(Uint16)data;
(*(volatile Uint16*)tmp_addr)=data;
break;
…/*Todo Print Error Message*/
break;
}
}
2.2.2 TUSB6020驱动程序设计
TUSB6020 是一种小型解决方案,采用业界 5 毫米 x 5 毫米封装,可满足占用空间有限的产品要求。该产品通过相关,符合 USB 实施人员论坛 (USB Implementer’s Forum) 的 USB 2.0 OTG 规范要求,从而有助于确保与其他 USB 设备间的互操作性。其集成的 USB 2.0 PHY 为实现设计灵活性提供了多种单端口工作速率,其中包括 1.5 Mbps 低速、12 Mbps 全速以及 480 Mbps 高速工作。VLYNQ?串行接口允许其无缝接口至各种支持 VLYNQ 功能的应用处理器,而无需加载 GPMC 或EMIF 端口。
图 5为 DSP/BIOS外设驱动模型。TI公司的DSP/BIOS外设驱动模型分为两层三类,即:类驱动层和微型驱动层,PIP/PI0类、SIO/DIO类和 GI0类,结构图如图5所示。
500)this.style.width=500;" border=0>
PIO模型具有良好的缓冲器分配回收机制,适合描述视频设备,SIO模型支持更底层的通信,适合设计比较简单的外设驱动程序,GIO模型设计的目的就是针对特殊硬件的新型设备。
GIO模型在提供必要的同步读/写API函数及其扩展函数的同时,将代码和使用数据缓存的大小尽量简化,应用程序可以调用 GIO的 API函数直接与微型驱动的 IOM交换数据。当调用GIO_create创建 TUSB6020的通道实例时,GIO在通道实例中增加I/O请求状态结构、IOM数据包(TUSB6020_USB_Packets)及一个 GIO数据对象。
微型驱动创建规定的函数,应用程序通过 GIO类驱动调用,这些函数将放入TUSB6020_USB_fxns中的相应位置,供应用程序通过 GIO类驱动调用。TMS320DM6437初始化时调用已注册到微型驱动中的 mdBindDev绑定通道函数。mdBindDev函数实现下列功能:根据配置的 TUSB6020设备参数初始化 TUSB6020设备,挂入中断服务函数,获得缓存、DMA等资源;与其对应的 mdUnBindDev绑定通道解除函数使 TUSB6020设备处于无效状态,不能再使用;mdCreateChan通道创建函数为应用程序和驱动程序建立通信通道,并给通道对象设置初始值,为通道申请缓冲区;mdSubmitChan I/O请求发送函数负责管理缓冲区,处理 TUSB6020_USB_Packet包中的命令字段;mdControlChan设备控制函数用来操作 TUSB6020设备,完成 OTG角色转换及数据收发等功能。
3 小结
TUSB6020节省芯片资源,功耗低,架构简洁,接口灵活,兼容性好。本文介绍了TUSB6020的功能特性、内部结构和TUSB6020的工作原理,分析了TUSB6020与外部主机的连接方式,提出了一种TMS320DM6437与TUSB6020的USB OTG接口设计方案。该接口设计可以广泛应用于各种便携式、嵌入式系统中,从而可靠便捷地实现USB OTG功能。
本文作者创新点:提出了TUSB6020与TMS320DM6437的USB OTG设计方案,硬件设计有效利用了VLYNQ接口,软件设计简捷灵活,为USB OTG的接口设计提供了一种新的参考,有广泛的应用价值。
[1]. SRP datasheet https://www.dzsc.com/datasheet/SRP_1144728.html.
[2]. SIO datasheet https://www.dzsc.com/datasheet/SIO_2032367.html.
免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。