下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、1/ 8對USB的初步了解:1、USB 的優(yōu)點:可以熱插拔,即插上后可以自動識別;系統(tǒng)總線供電,USB 共有四根線,一根電源線,一根地線,一根 D+線,一 根D-線,D+和 D-線是差分輸入線;可以支持多種設(shè)備,且擴展容易,通過 HUB 可以再一個主機上連接多個設(shè) 備傳輸數(shù)據(jù)的速度快,最快可達 480Mbit/s方便的設(shè)備互聯(lián):在沒有主機的情況下,實現(xiàn)點到點的通信(還可以實現(xiàn)主從互換) ( U S BOTG)2、USB 的基本規(guī)范:USB1. 0/1. 1 低速情況下1. 5Mbit/s :鍵盤、鼠標等全速情況下 12Mbit/s :U 盤、 CD-ROMUSB2. 0 高速達到 480Mbi
2、t/s :音頻設(shè)備、顯示器等USB OTG 設(shè)備到設(shè)備的傳輸3、USB 設(shè)備類規(guī)范:2/ 8大容量存儲設(shè)備類(Mass Storage Device U 盤、CD-ROM 等人機交互設(shè)備類(Human In terface Device)鍵盤、鼠標、游戲手柄語音設(shè)備類(Audio Device)麥克風、音響等通信設(shè)備類(Communication Device)電話、調(diào)制解調(diào)器等打印機設(shè)備類(Printer Device)打印機監(jiān)視設(shè)備類(Monitor Device)顯示器、攝像頭等4、USB 邏輯上分為 3:信號層,協(xié)議層,數(shù)據(jù)傳輸層協(xié)議層:包是 USB 系統(tǒng)中信息傳輸?shù)幕締挝?,所有的?shù)
3、據(jù)都是經(jīng)過打包后在總線 上傳輸?shù)?。包?6 部分組成:同步字段(SYNC ;包標識符(PID);地址字段(ADDR ;數(shù)據(jù)字段 (DATA);檢驗字段(CRC ;包結(jié)束(EOP包標識符( PID :令牌包( Token (輸出,輸入,幀起始,建立 ,數(shù)據(jù)包( DATA (數(shù) 據(jù),數(shù)據(jù) 1 ,握手包( Handsnake (確認,不確認,停止 ,專用包 (Special (前同步5、USB 協(xié)議提供 4 種數(shù)據(jù)傳輸方式:控制傳輸:突發(fā),非周期性,由主機發(fā)起,用于命令和狀態(tài)的傳輸同步傳輸:周期性,持續(xù)性的傳輸,用于傳輸與時效相關(guān)的信息,并且在數(shù)據(jù)中保存 時間戳的信息中斷傳輸:3/ 8周期性,低頻率
4、,允許有限延遲的通信大容量的數(shù)據(jù)傳輸:非周期性,大容量突發(fā)數(shù)據(jù)的通信6、USB 描述符:1) 設(shè)備描述符:描述設(shè)備的類型、廠商信息、USB 的協(xié)議類型、端點的報數(shù)據(jù)的最大長度 等,每個 USB 設(shè)備只有一個 Device Descriptor2) 配置描述符:每個配置描述符提供了設(shè)備特定的配置,描述了設(shè)備的接口和端點的性 質(zhì)、供電模式、設(shè)備的耗電3) 接口描述符:描述了設(shè)備的不同接口的特性,例如,一個設(shè)備 U 盤的功能,又有鍵盤的 功能,用兩個接口描述符分別描述兩個功能4) 字符串描述符:描述了設(shè)備制造商、設(shè)備名稱、何序列號等信息基于 STM32 制作 USB 的過程STM32 的 USB 模
5、塊特性:遵循 USB8。 4/ 82. 0 全速設(shè)備標準支持雙向 8 個端點, 8 個 IN 端點和 8 個 OUT 端點(每個端點最大可使用 512字節(jié)) 每個端點都有一個緩沖區(qū)描述塊,描述該端點使用的緩沖區(qū)地址、 大小和需要傳輸?shù)淖止?jié)數(shù) 硬件實現(xiàn) CRC 自動生成/校驗,NRZI 編碼/解碼和 bit-stuffing(位插入,位填 充)支持控制傳輸、中斷傳輸、大容量傳輸和同步傳輸四種傳輸方式支持 USB 的掛起和/喚醒*USB 設(shè)備的實現(xiàn)過程 *一、系統(tǒng)初始化1、初始化系統(tǒng)時鐘,設(shè)置 USB 時鐘2、配置 USB 中斷,選擇通道,設(shè)置優(yōu)先級,使能中斷3、配置 GPIO4、USB 的初始化
6、,對描述符、設(shè)備的端點接口等的初始化5、FLASH 勺初始化二、USB 的枚舉枚舉過程就相當于主機和設(shè)備建立連接的過程(接頭),Host 向 Device 詢問一些東西,Device 將自身的設(shè)備類型,如何進行通信報告給 Host,這樣, Host就知道怎么對 Device 進行操作。在枚舉過程中就是如何處理好 SETUP 事件,如果 STM32 USB 接收到正確的SETUP 事件,將響應(yīng)函數(shù) CTR_SETUPQ()此事件是特殊的 OUT 事件,數(shù)據(jù)方向Host-Device, SETUP 事件數(shù)據(jù)長度固定為1、在 USB 插入主機時,主機首先需要先對 USB 設(shè)備進行供電2、接著 USB
7、 總線復(fù)位:5/ 8設(shè)置分組緩沖區(qū)描述表起始地址;初始化端點 0,設(shè)置發(fā)送和接收狀態(tài)。默認所有的設(shè)備地址和端口地址都會 初始化為0.3、USB 主機往端點 0 的 0 地址位置發(fā)送獲取設(shè)備描述符的請求。/* 發(fā)送請求屬于控制傳輸?shù)慕⑦^程,控制傳輸包括建立過程,可選數(shù)據(jù) 過程及狀態(tài)過程, 首先是主機發(fā)送一個令牌, 其次是發(fā)送的數(shù)據(jù), 最后設(shè)備回 應(yīng)一個應(yīng)答 (握手包) */4、獲取設(shè)備描述符信息 設(shè)備在接收到請求以后,首先需要對主機發(fā)送來的命令進行解析,并將要發(fā)送給主機的描述符信息填入 USB 緩沖區(qū)中,等待 USB 主機發(fā)送 IN 命令,主機 在接收到設(shè)備發(fā)送來的 ACK 回應(yīng)以后,發(fā)送 I
8、N 令牌包,從而進入到數(shù)據(jù)過程, 之前存儲在 USB 緩沖區(qū)中的描述符信息發(fā)給主機,并等待主機的應(yīng)答。主機在 正確接收到設(shè)備描述符的信息時會返回一個確認信息。5、主機給設(shè)備分配一個新的地址 該階段是一個沒有數(shù)據(jù)過程的控制傳輸。首先,在建立過程中主機往設(shè)備的端點 0 發(fā)送一個設(shè)備地址的請求,新地址在建立過程的數(shù)據(jù)包中。在建立過 程之后直接進入到狀態(tài)過程,在狀態(tài)過程中,設(shè)備等待主機發(fā)送一個IN 令牌包,收到 IN 令牌包后,設(shè)備就會返回一個數(shù)據(jù)包,如果主機確認該數(shù)據(jù)包正確 接收,就會回應(yīng)設(shè)備一個 ACK 設(shè)備收到 ACK 之后啟用新的設(shè)備地址6、 主機重新獲取設(shè)備描述符,配置描述符和字符串描述符(
9、如果是HID 還要獲取報告描述符等)至此 USB 的枚舉過程完成,主機可以根據(jù)枚舉的過程了解到的設(shè)備信息對 USB安裝驅(qū)動程序,并對 USB 進行操作。三、對程序的分析1、 在 Set_System ()中首先配置了 RCC 時鐘,在設(shè)置并開啟 USB 的時鐘6/ 8RCC_USBCLKConfig(RCC_USBCLKSource_PLLCLK_1Div5);RCC_APB1PeriphClockCmd(RCC_APB1Periph_USB, ENABLE);2、 對 USB 的引腳的設(shè)置,主要設(shè)置上拉電阻,對于此 STM32 板子而言是 設(shè)置 PC13 為開漏輸出(GPIO_Mode_Ou
10、t_OD3、USB 中斷的設(shè)置,設(shè)置了 USB_LP_CAN_RXO_IRQChanr 中斷,因為在USB 傳輸?shù)倪^程中使用的是控制傳輸過程4、最后對 USB 的初始化, 初始化 USB 的控制狀態(tài)為 IN_DATA 狀態(tài), 對一 些需要使用的指針的初始化,包括設(shè)備信息,設(shè)備標準請求,設(shè)備的支持等的 初始化,供枚舉過程的使用至此,對于 USB 設(shè)備的初始化過程已經(jīng)完成,接下來進行 USB 的主要程序 部分,也就是枚舉過程。插上 USB 之后首先會進入中斷過程,執(zhí)行 USB_lst()函數(shù)中的操作,逐 步進入枚舉過程,接下來從中斷操作開始分析1、進入中斷執(zhí)行 USB_lst()函數(shù)后,首先獲得中
11、斷的狀態(tài),因為在初始 化階段,首先先對 USB 進行了復(fù)位操作,所以直接可以進入Device_Property .R eset(函數(shù)進行復(fù)位操作。得到 USB 的各類描述符值,設(shè)置報表地址為 0 x00,端點地址為 0 x00,又對 USB的端點 0 和端點 1 的進行了初始化設(shè)置/*在 usb_prop.c 文件中*/2、因為在USB枚舉的階段是通過控制傳輸?shù)膫鬏斶^程來實現(xiàn)的, 所以數(shù)據(jù) 的發(fā)送接收,通過 CTR_LP()中斷進入的在這個函數(shù)中等待中斷狀態(tài)設(shè)置好,并且數(shù)據(jù)發(fā)送正確。然后檢查是不是 端點 0的收發(fā)數(shù)據(jù),因為在一開始枚舉階段首先是通過端點 0 來接收主機發(fā)來 的數(shù)據(jù),所以直接進入
12、端點 0 的函數(shù)中 if (EPindex = 0)等地啊主機的 IN 命令 if (wlstr &ISTR_DIR) = 0)接著進入 In0_Process()函數(shù)往主機中發(fā)送數(shù)據(jù)。進入 In0_Process(函數(shù)以后首先要判斷控制狀態(tài)是 IN_DATA、LAST_IN_DAT7/ 8A、WAIT_STATUS_I 中的哪一個或者都不是。等待數(shù)據(jù)的發(fā)送,假設(shè)是 IN_DATA 或 LAST_IN_DATA 則進入數(shù)據(jù)發(fā)送階段DataStageIn ()函數(shù),主要是發(fā)送開始存入緩存區(qū)中的數(shù)據(jù),以描述符為主, 發(fā)送給主機。3、 在主機接收到 USB 發(fā)送來的數(shù)據(jù)之后,主機會重新給 U
13、SB 分配新地址, 這是進入中斷在輪詢時會檢測到(wEPVal&EP_CTR_RX)!=進入到 USB 的接收狀 態(tài),接著會執(zhí)行 Out0_Process()的主機輸出,USB 接收狀態(tài)。此數(shù)據(jù)輸出主機的 過程與上面數(shù)據(jù)輸入主機的過程相類似。也會初始化數(shù)據(jù)包長,并根據(jù)數(shù)據(jù)長 度來進行數(shù)據(jù)的接收狀態(tài)。數(shù)據(jù)從主機 SB 和數(shù)據(jù)從 USB 寫入主機主要由 UserToPMABufferCopy()MAToUserBufferCopy ()兩個函數(shù)來完成4、接下來主機會以分配給 USB 的新地址來與 USB 進行數(shù)據(jù)通信。通信過程與之前相類似,只是不再使用端點 0,而是使用新地址,非 0 端點
14、的處理。接下來說一下 USB 不同的 c 文件的功能:Usb_core.c 枚舉過程重要的函數(shù)在此列出,包括數(shù)據(jù)輸出主機的函數(shù)DataStageOut ()數(shù)據(jù)輸入主機的函數(shù) DataStageI n(),非 0 數(shù)據(jù)包的建立Data_Setup0 (), 0 數(shù)據(jù)包的建立 NoData_Setup0 (),還有主機發(fā)送的 IN 進 程In0_Process(,主機發(fā)送的 Out 進程 Out0_Process ()。還有一些標準的配置 函數(shù),接口設(shè)置函數(shù)等等。Usb_init.c 這個 c 文件中只包含一個主要的函數(shù) USB_Init(,這里主要是對在usb_core.c 中使用的重要指針的
15、初始化,包括 pinformation, pProperty 和pUser_Standard_RequestS 這三個指針,另外就是在初始化狀態(tài)時已經(jīng)將 usb 的控制狀態(tài)設(shè)置為 IN_DATA 狀態(tài)。并將 USB 初始化為初始配置,上電,開始設(shè)備 的狀態(tài)為未連接狀態(tài)等Usb_int.c 包含兩個主要函數(shù) CTR_HP()和 CTR_LPQCTR_HP()用于處理 高優(yōu)先級中斷,用于同步傳輸模式和批量模式(雙緩沖區(qū)),CTR_L(P )用于處理低優(yōu)先級中斷,用于控制傳輸,中斷傳輸和批量傳輸(單緩沖區(qū))。8/ 8Usb_mem.c 包含兩個函數(shù) PMAToUserBufferCopy ()和UserToPMABufferCopy(),是將 PMA 緩沖區(qū)的數(shù)據(jù)傳給用戶,和將用戶緩沖 區(qū)數(shù)據(jù)傳給 PMA 緩沖區(qū)的主要數(shù)據(jù)傳輸過程。Usb_regs.c 主要是調(diào)用宏,實現(xiàn)寄存器的操作,但是上層函數(shù)很少調(diào)用這些 函數(shù)直接就是用宏。Usb_pwr.c 主要是包括對一些電源的配置,包括 USB 上電 PowerOn (), USB斷電 PowerOff(),掛起函數(shù) Suspend (),處理喚醒恢復(fù)操作 Resumenit (),狀態(tài)機處理和恢復(fù)函數(shù) Resume()Usb_desc.c 主要是對描述符的定義,有 CustomHID_D
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年裝修機械項目發(fā)展計劃
- 2024年適用離婚協(xié)議書模板集錦
- 廣州市物業(yè)公共糾紛調(diào)解與和解
- 化工行業(yè)工藝文件編制
- 鄉(xiāng)村環(huán)境美化執(zhí)行標準
- 樂器店辦公室管理辦法
- 科技館公寓租賃合同
- 跨國公司高管聘用證書及合同
- 腳手架搭建班組施工合同
- 基建項目質(zhì)量控制與改進流程
- 城市軌道交通的智能監(jiān)控與預(yù)警系統(tǒng)
- 小學(xué)數(shù)學(xué)重量單位克、千克、噸換算練習(xí)100道及答案
- 生物信息學(xué)研究現(xiàn)狀及發(fā)展趨勢
- 骨科手術(shù)的術(shù)中應(yīng)急處理與糾正
- 漁業(yè)安全與事故預(yù)防
- 國開電大軟件工程形考作業(yè)3參考答案
- 中職產(chǎn)教融合建設(shè)實施方案
- GB/T 16462.1-2023數(shù)控車床和車削中心檢驗條件第1部分:臥式機床幾何精度檢驗
- 通用電子嘉賓禮薄
- 廣東省深圳市南山區(qū)2023-2024學(xué)年八年級上學(xué)期期末數(shù)學(xué)試題(含解析)
- 品質(zhì)體系規(guī)劃
評論
0/150
提交評論