本节视频的目的是学习USB OTG的运用和工作原理,并实现USB从方式,将实验板模拟成一个USB存储设备,实现主机和实验板之间的数据传输。
实验过程中使用的是USBOG接口T
本节视频的目的是学习USB OTG的运用和工作原理,并实现USB从方式,将实验板模拟成一个USB存储设备,实现主机和实验板之间的数据传输。
通用串口总线,USB为解决即插即用PnP(Plug and Play)需求而诞生,支持热插拔。能在不断电的情况下,插拔USB设备。
USB协议版本有USB1.0、USB1.1、USB2.0、USB3.0等,USB2.0目前比较常用,以下以2.0为主介绍。由于USB是主从模式的结构(所有的通信都由主机发起,设备不能发起),故设备与设备之间、主机与主机之间不能互连,为解决这个问题,扩大USB的应用范围,出现了USB OTG,全拼 ON The Go。USB OTG连接的同一个设备,在不同的场合下可在主机和从机之间切换。
USB家族成员可以分为以下:
USB Host:USB主机,一般是PC机。
USB Device:即USB设备,有USB键盘、U盘等,而USB Hub集线器是一种特殊的USB设备。
USB OTG:OTG即On-The-Go,同时具备USB主机和USB设备的功能,数码相机就带有OTG的功能。
根据USB接口所属协议,OTG可分为5类:
USB2.0 OTG:理论传输速率480Mbps,即60MB/s
Micro 5PIN OTG
Mini 5PIN OTG
Micro USB3.0 OTG:USB3.0的理论数据传输速率是5Gbps/10bitt=500MB/s
Type C OTG
Micro、Mini和TypeC 是比较常见的接口,在本实验中使用的是Mini USB接口。
本实验中使用的是Mini USB线
USB体系包括"主机"、"设备"、"物理连接"三个部分。
主机是一个提供USB接口及接口管理能力的硬件、软件的复合体,可以是PC,也可以是OTG设备。一个USB系统中仅有一个USB主机;
设备包括USB功能设备和USB集线器,最多支持127个设备,这是因为协议规定了每个USB设备具有一个7bit的地址(取值范围0~127,而地址0是保留给未初始化的设备使用的);
物理连接指的是USB的传输线使用屏蔽的双绞线。
设备的初始功能是通过定义连接器来实现的。OTG定义了一个叫做MiniAB的插孔,他能直接接入MiniA或者MiniB插口,MiniAB有一个ID引脚 上拉至电源端,MiniA插头有一个与地连接好的ID(R<10 Ω),Mini B插头有一个与地连接的开路ID引脚(R>100 kΩ)。当2个OTG设备连接到一起的时候 ,MiniA插头边的ID引脚会注入一个“0”状态,MiniB插头边的ID引脚为 “1”,ID为0的OTG设备默认为主机(Adevice),ID为1的OTG设备默认为从机(B device)。
USB接口层为OTG主机和OTG设备提供物理连接,USB系统软件使用主机控制器来管理主机与 USB设备的数据传输。USB系统软件相对于主机控制器而言,处理的是以客户角度观察的数据传输及客户与设备的交互。USB设备层为USB主机系统软件提供一个可用的逻辑设备。主机通过与之功能匹配的客户软件实现其各种功能。
OTG设备与以往的USB设备一样有两种通道:数据流通道和消息通道。数据流通道没有定义好的结果,而消息通道则有固定的结构。但是,每个通道都有一定的带宽、传输类型、传输方向和缓冲区大小。自供电设备配置一个默认的控制通道,由他提供该设备的配置和状态等信息。
程序流程设计中首先要进行外设使能配置,接着初始化设备的状态,进行DSP和USB的中断初始化,初始化USB大容量设备和DMA,最后分配数据缓冲区并进行USB数据的接收传输
使用StarterWare 库函数初始化大容量存储设备。相关函数通过“usbdmsc.h”文件引用。
void *USBDMSCInit(unsigned int ulIndex, const tUSBDMSCDevice *psDevice)
初始化USB大容量存储设备的函数源码和使用说明可以查看usbdmsc.c。其中,第一个参数是要为大容量存储类设备操作初始化的USB控制器的索引。第二个参数是指向包含自定义大容量存储设备操作的参数的结构。
使用StarterWare 库函数初始化DMA。相关函数通过“cppi41dma.h”文件引用。
void Cppi41DmaInit(unsigned short usbDevInst, endpointInfo *epInfo, unsigned short numOfEndPoimts)
初始化DMA的函数源码和使用说明可以查看cppi41dma.c。其中,第一个参数是USB设备实例。第二个参数是端点信息结构。第三个参数是要配置的端点总数。
使用StarterWare 库函数接收传输DMA数据。
相关函数通过“cppi41dma.h”文件引用。
void doDmaRxTransfer(unsigned short usbDevInst, unsigned int length, unsigned char *buff, unsigned int endPoint)
DMA数据接收传输的函数源码和使用说明可以查看cppi41dma.c。其中,第一个参数是USB设备实例。第二个参数是数据缓冲区的长度。第三个参数是要数据缓冲区。第四个参数是接收数据的端点。
(1)使用Mini USB线连接实验板的USB OTG和电脑端的USB接口。
(2)连接仿真器和电脑的USB接口,
(3)将拨码开关拨到DEBUG模式01111,
(4)连接实验箱电源,拨动电源开关上电。
导入工程,选择Demo文件夹下的对应工程
编译工程
将CCS连接开发板并加载程序
点击运行程序
可看到弹出格式化提示界面,点击”格式化磁盘”,点击”开始”,点击”确定”,可以在PC中看到新产生约48MByte大小的可移动磁盘盘符,可以像操作普通的U盘一样操作此磁盘。请保持实验箱状态和连接,进行下面的速度测试步骤。
双击测试软件文件,选择磁盘,选择32MByte空间,然后点击”开始”按钮,等待3分钟左右,可以在界面中看到文件读写速度测试结果。
可看到当传输文件达到64KByte以上,读和写速度可以分别稳定在24MByte/S和23MByte/S左右。
实验结束后,先点击黄色按钮暂停程序运行,再点击红色按钮退出CCS与实验箱的连接,最后实验箱断电即可。
更多回帖