基于TUSB6020的USB OTG接口设计
时间:08-25
来源:微计算机信息
点击:
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驱动程序设计
图 5为 DSP/BIOS外设驱动模型。TI公司的DSP/BIOS外设驱动模型分为两层三类,即:类驱动层和微型驱动层,PIP/PI0类、SIO/DIO类和 GI0类,结构图如图5所示。
PIO模型具有良好的缓冲器分配回收机制,适合描述视频设备,SIO模型支持更底层的通信,适合设计比较简单的外设驱动程序,GIO模型设计的目的就是针对特殊硬件的新型设备,因此,TUSB6020类驱动程序的设计选用 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通道创建函数为应用程序和驱动程序建立通信通道,并给通道对象设置初始值,为通道申请缓冲区;mdDeleteChan通道删除函数删除已创建好的通道对象,释放缓冲区资源;
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的接口设计提供了一种新的参考,有广泛的应用价值。
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驱动程序设计
图 5为 DSP/BIOS外设驱动模型。TI公司的DSP/BIOS外设驱动模型分为两层三类,即:类驱动层和微型驱动层,PIP/PI0类、SIO/DIO类和 GI0类,结构图如图5所示。
PIO模型具有良好的缓冲器分配回收机制,适合描述视频设备,SIO模型支持更底层的通信,适合设计比较简单的外设驱动程序,GIO模型设计的目的就是针对特殊硬件的新型设备,因此,TUSB6020类驱动程序的设计选用 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通道创建函数为应用程序和驱动程序建立通信通道,并给通道对象设置初始值,为通道申请缓冲区;mdDeleteChan通道删除函数删除已创建好的通道对象,释放缓冲区资源;
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的接口设计提供了一种新的参考,有广泛的应用价值。
TUSB6020 USB2 0 SRP HNP USB OTG 相关文章:
- USB 2.0标准(04-14)
- USB2.0规范的主要特点(04-14)
- USB设备驱动程序的设计(05-20)
- 基于SOPC的高速数据采集系统的分析与设计(01-01)
- 基于USB2.0的高性能移动存储设备的设计(02-05)
- IEEE 802.16x标准和机制(08-28)