基于USB接口的存储设备实验

实验原理硬件原理图实验过程中使用的是usbog接口t
本文学习usb otg的运用和工作原理,并实现usb从方式,将实验板模拟成一个usb存储设备,实现主机和实验板之间的数据传输。
usb(universal serial bus)通用串口总线,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根据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
usb接头匹配表micro、mini和typec 是比较常见的接口,在本实验中使用的是mini usb接口。
匹配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(r100 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数据的接收传输
初始化源码初始化usb设备使用starterware 库函数初始化大容量存储设备。相关函数通过“usbdmsc.h”文件引用。
starterware api 接口void *usbdmscinit(unsigned int ulindex, const tusbdmscdevice *psdevice)
初始化usb大容量存储设备的函数源码和使用说明可以查看usbdmsc.c。其中,第一个参数是要为大容量存储类设备操作初始化的usb控制器的索引。第二个参数是指向包含自定义大容量存储设备操作的参数的结构。
dma初始化源码初始化dma使用starterware 库函数初始化dma。相关函数通过“cppi41dma.h”文件引用。
starterware api 接口void cppi41dmainit(unsigned short usbdevinst, endpointinfo *epinfo, unsigned short numofendpoimts)
初始化dma的函数源码和使用说明可以查看cppi41dma.c。其中,第一个参数是usb设备实例。第二个参数是端点信息结构。第三个参数是要配置的端点总数。
dma数据接收传输源码dma数据接收传输使用starterware 库函数接收传输dma数据。
相关函数通过“cppi41dma.h”文件引用。
starterware api 接口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与实验箱的连接,最后实验箱断电即可。

在汽车、物联网中实施MIPI相机和显示接口
音响集成电路简介
用SystemVue仿真ADC的噪声系数
实例图解空调器常见故障
京东天猫店关闭 HTC否认放弃手机业务
基于USB接口的存储设备实验
中国北方AI算力创新中心启动
华为弯道超车或将成功?
最大限度地减少SiC FET中的EMI和开关损耗
高校实验室如何实现统一管控,智能物联?
LED照明雪莱特营业收入减少27.85%,面临着双重考验
单片机和PLD有什么联系与区别,PLD入门须知的几点小常识!
压电陶瓷功率放大器驱动压电超声换能器
动力电池领域宁德时代PK比亚迪,谁将领跑市场
微处理器S3C44B0X音频文件播放
华为在芯片上获得松口的机会非常大?
2019年兰卡威国际海事和航空展览将于3月份专注于无人机和网络战
vivo成为首款配备Synaptics FS9500的“屏下指纹识别”的手机
应用于平板电视的五大虚拟环绕声技术
减小电动机启动电流的五种方法介绍