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

接口/总线/驱动

1143人已加入

描述

实验原理

硬件原理图

实验过程中使用的是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(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数据的接收传输

控制器

初始化源码

初始化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与实验箱的连接,最后实验箱断电即可。

控制器

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分