下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、1/ 8對USB的初步了解:1、USB 的優(yōu)點:可以熱插拔,即插上后可以自動識別;系統(tǒng)總線供電,USB 共有四根線,一根電源線,一根地線,一根 D+線,一 根D-線,D+和 D-線是差分輸入線;可以支持多種設(shè)備,且擴(kuò)展容易,通過 HUB 可以再一個主機(jī)上連接多個設(shè) 備傳輸數(shù)據(jù)的速度快,最快可達(dá) 480Mbit/s方便的設(shè)備互聯(lián):在沒有主機(jī)的情況下,實現(xiàn)點到點的通信(還可以實現(xiàn)主從互換) ( U S BOTG)2、USB 的基本規(guī)范:USB1. 0/1. 1 低速情況下1. 5Mbit/s :鍵盤、鼠標(biāo)等全速情況下 12Mbit/s :U 盤、 CD-ROMUSB2. 0 高速達(dá)到 480Mbi
2、t/s :音頻設(shè)備、顯示器等USB OTG 設(shè)備到設(shè)備的傳輸3、USB 設(shè)備類規(guī)范:2/ 8大容量存儲設(shè)備類(Mass Storage Device U 盤、CD-ROM 等人機(jī)交互設(shè)備類(Human In terface Device)鍵盤、鼠標(biāo)、游戲手柄語音設(shè)備類(Audio Device)麥克風(fēng)、音響等通信設(shè)備類(Communication Device)電話、調(diào)制解調(diào)器等打印機(jī)設(shè)備類(Printer Device)打印機(jī)監(jiān)視設(shè)備類(Monitor Device)顯示器、攝像頭等4、USB 邏輯上分為 3:信號層,協(xié)議層,數(shù)據(jù)傳輸層協(xié)議層:包是 USB 系統(tǒng)中信息傳輸?shù)幕締挝唬械臄?shù)
3、據(jù)都是經(jīng)過打包后在總線 上傳輸?shù)?。包?6 部分組成:同步字段(SYNC ;包標(biāo)識符(PID);地址字段(ADDR ;數(shù)據(jù)字段 (DATA);檢驗字段(CRC ;包結(jié)束(EOP包標(biāo)識符( PID :令牌包( Token (輸出,輸入,幀起始,建立 ,數(shù)據(jù)包( DATA (數(shù) 據(jù),數(shù)據(jù) 1 ,握手包( Handsnake (確認(rèn),不確認(rèn),停止 ,專用包 (Special (前同步5、USB 協(xié)議提供 4 種數(shù)據(jù)傳輸方式:控制傳輸:突發(fā),非周期性,由主機(jī)發(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è)備標(biāo)準(zhǔn)支持雙向 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 的枚舉枚舉過程就相當(dāng)于主機(jī)和設(shè)備建立連接的過程(接頭),Host 向 Device 詢問一些東西,Device 將自身的設(shè)備類型,如何進(jìn)行通信報告給 Host,這樣, Host就知道怎么對 Device 進(jìn)行操作。在枚舉過程中就是如何處理好 SETUP 事件,如果 STM32 USB 接收到正確的SETUP 事件,將響應(yīng)函數(shù) CTR_SETUPQ()此事件是特殊的 OUT 事件,數(shù)據(jù)方向Host-Device, SETUP 事件數(shù)據(jù)長度固定為1、在 USB 插入主機(jī)時,主機(jī)首先需要先對 USB 設(shè)備進(jìn)行供電2、接著 USB
7、 總線復(fù)位:5/ 8設(shè)置分組緩沖區(qū)描述表起始地址;初始化端點 0,設(shè)置發(fā)送和接收狀態(tài)。默認(rèn)所有的設(shè)備地址和端口地址都會 初始化為0.3、USB 主機(jī)往端點 0 的 0 地址位置發(fā)送獲取設(shè)備描述符的請求。/* 發(fā)送請求屬于控制傳輸?shù)慕⑦^程,控制傳輸包括建立過程,可選數(shù)據(jù) 過程及狀態(tài)過程, 首先是主機(jī)發(fā)送一個令牌, 其次是發(fā)送的數(shù)據(jù), 最后設(shè)備回 應(yīng)一個應(yīng)答 (握手包) */4、獲取設(shè)備描述符信息 設(shè)備在接收到請求以后,首先需要對主機(jī)發(fā)送來的命令進(jìn)行解析,并將要發(fā)送給主機(jī)的描述符信息填入 USB 緩沖區(qū)中,等待 USB 主機(jī)發(fā)送 IN 命令,主機(jī) 在接收到設(shè)備發(fā)送來的 ACK 回應(yīng)以后,發(fā)送 I
8、N 令牌包,從而進(jìn)入到數(shù)據(jù)過程, 之前存儲在 USB 緩沖區(qū)中的描述符信息發(fā)給主機(jī),并等待主機(jī)的應(yīng)答。主機(jī)在 正確接收到設(shè)備描述符的信息時會返回一個確認(rèn)信息。5、主機(jī)給設(shè)備分配一個新的地址 該階段是一個沒有數(shù)據(jù)過程的控制傳輸。首先,在建立過程中主機(jī)往設(shè)備的端點 0 發(fā)送一個設(shè)備地址的請求,新地址在建立過程的數(shù)據(jù)包中。在建立過 程之后直接進(jìn)入到狀態(tài)過程,在狀態(tài)過程中,設(shè)備等待主機(jī)發(fā)送一個IN 令牌包,收到 IN 令牌包后,設(shè)備就會返回一個數(shù)據(jù)包,如果主機(jī)確認(rèn)該數(shù)據(jù)包正確 接收,就會回應(yīng)設(shè)備一個 ACK 設(shè)備收到 ACK 之后啟用新的設(shè)備地址6、 主機(jī)重新獲取設(shè)備描述符,配置描述符和字符串描述符(
9、如果是HID 還要獲取報告描述符等)至此 USB 的枚舉過程完成,主機(jī)可以根據(jù)枚舉的過程了解到的設(shè)備信息對 USB安裝驅(qū)動程序,并對 USB 進(jìn)行操作。三、對程序的分析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è)備標(biāo)準(zhǔn)請求,設(shè)備的支持等的 初始化,供枚舉過程的使用至此,對于 USB 設(shè)備的初始化過程已經(jīng)完成,接下來進(jìn)行 USB 的主要程序 部分,也就是枚舉過程。插上 USB 之后首先會進(jìn)入中斷過程,執(zhí)行 USB_lst()函數(shù)中的操作,逐 步進(jìn)入枚舉過程,接下來從中斷操作開始分析1、進(jìn)入中斷執(zhí)行 USB_lst()函數(shù)后,首先獲得中
11、斷的狀態(tài),因為在初始 化階段,首先先對 USB 進(jìn)行了復(fù)位操作,所以直接可以進(jìn)入Device_Property .R eset(函數(shù)進(jìn)行復(fù)位操作。得到 USB 的各類描述符值,設(shè)置報表地址為 0 x00,端點地址為 0 x00,又對 USB的端點 0 和端點 1 的進(jìn)行了初始化設(shè)置/*在 usb_prop.c 文件中*/2、因為在USB枚舉的階段是通過控制傳輸?shù)膫鬏斶^程來實現(xiàn)的, 所以數(shù)據(jù) 的發(fā)送接收,通過 CTR_LP()中斷進(jìn)入的在這個函數(shù)中等待中斷狀態(tài)設(shè)置好,并且數(shù)據(jù)發(fā)送正確。然后檢查是不是 端點 0的收發(fā)數(shù)據(jù),因為在一開始枚舉階段首先是通過端點 0 來接收主機(jī)發(fā)來 的數(shù)據(jù),所以直接進(jìn)入
12、端點 0 的函數(shù)中 if (EPindex = 0)等地啊主機(jī)的 IN 命令 if (wlstr &ISTR_DIR) = 0)接著進(jìn)入 In0_Process()函數(shù)往主機(jī)中發(fā)送數(shù)據(jù)。進(jìn)入 In0_Process(函數(shù)以后首先要判斷控制狀態(tài)是 IN_DATA、LAST_IN_DAT7/ 8A、WAIT_STATUS_I 中的哪一個或者都不是。等待數(shù)據(jù)的發(fā)送,假設(shè)是 IN_DATA 或 LAST_IN_DATA 則進(jìn)入數(shù)據(jù)發(fā)送階段DataStageIn ()函數(shù),主要是發(fā)送開始存入緩存區(qū)中的數(shù)據(jù),以描述符為主, 發(fā)送給主機(jī)。3、 在主機(jī)接收到 USB 發(fā)送來的數(shù)據(jù)之后,主機(jī)會重新給 U
13、SB 分配新地址, 這是進(jìn)入中斷在輪詢時會檢測到(wEPVal&EP_CTR_RX)!=進(jìn)入到 USB 的接收狀 態(tài),接著會執(zhí)行 Out0_Process()的主機(jī)輸出,USB 接收狀態(tài)。此數(shù)據(jù)輸出主機(jī)的 過程與上面數(shù)據(jù)輸入主機(jī)的過程相類似。也會初始化數(shù)據(jù)包長,并根據(jù)數(shù)據(jù)長 度來進(jìn)行數(shù)據(jù)的接收狀態(tài)。數(shù)據(jù)從主機(jī) SB 和數(shù)據(jù)從 USB 寫入主機(jī)主要由 UserToPMABufferCopy()MAToUserBufferCopy ()兩個函數(shù)來完成4、接下來主機(jī)會以分配給 USB 的新地址來與 USB 進(jìn)行數(shù)據(jù)通信。通信過程與之前相類似,只是不再使用端點 0,而是使用新地址,非 0 端點
14、的處理。接下來說一下 USB 不同的 c 文件的功能:Usb_core.c 枚舉過程重要的函數(shù)在此列出,包括數(shù)據(jù)輸出主機(jī)的函數(shù)DataStageOut ()數(shù)據(jù)輸入主機(jī)的函數(shù) DataStageI n(),非 0 數(shù)據(jù)包的建立Data_Setup0 (), 0 數(shù)據(jù)包的建立 NoData_Setup0 (),還有主機(jī)發(fā)送的 IN 進(jìn) 程In0_Process(,主機(jī)發(fā)送的 Out 進(jìn)程 Out0_Process ()。還有一些標(biāo)準(zhǔn)的配置 函數(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)機(jī)處理和恢復(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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度租房維修合同2025版維修責(zé)任及費用說明2篇
- 2025年人教A新版九年級科學(xué)下冊階段測試試卷含答案
- 2024年欽州幼兒師范高等??茖W(xué)校高職單招語文歷年參考題庫含答案解析
- 采購總監(jiān)周工作總結(jié)
- 2024年重慶護(hù)理職業(yè)學(xué)院高職單招職業(yè)技能測驗歷年參考題庫(頻考版)含答案解析
- 2024年重慶城市職業(yè)學(xué)院高職單招語文歷年參考題庫含答案解析
- 2025-2030年中國冰醋酸工業(yè)行業(yè)市場發(fā)展現(xiàn)狀及投資前景規(guī)劃研究報告
- 2024年重慶公共運輸職業(yè)學(xué)院高職單招職業(yè)技能測驗歷年參考題庫(頻考版)含答案解析
- 2025-2030年中國倉儲行業(yè)市場發(fā)展?fàn)顩r及投資策略研究報告
- 二零二五版KTV應(yīng)急預(yù)案制定與演練合同3篇
- 重慶市主城四區(qū)2025屆高一物理第一學(xué)期期末聯(lián)考試題含解析
- 燃?xì)庑袠I(yè)有限空間作業(yè)安全管理制度
- 胡夾桃綜合征
- 污水土地處理系統(tǒng)中雙酚A和雌激素的去除及微生物研究
- HG-T+21527-2014回轉(zhuǎn)拱蓋快開人孔
- JTS-167-2-2009重力式碼頭設(shè)計與施工規(guī)范
- DBJ-T15-81-2022 建筑混凝土結(jié)構(gòu)耐火設(shè)計技術(shù)規(guī)程
- GB/T 22849-2024針織T恤衫
- 山東省淄博市2023-2024學(xué)年高二上學(xué)期教學(xué)質(zhì)量檢測化學(xué)試題
- 人工智能在電影與影視制作中的創(chuàng)新與效果提升
- 新生兒腸絞痛的課件
評論
0/150
提交評論