基于USB接口的存儲設備實驗

2023-08-09 17:10:39 來源:創龍教儀-木江鵬

實驗原理

硬件原理圖

實驗過程中使用的是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與實驗箱的連接,最后實驗箱斷電即可。

標簽:

上一篇:高共模抑制比(CMRR)儀表放大器電路原理圖講解
下一篇:最后一頁