01介紹
前面寫(xiě)過(guò)兩遍關(guān)于 USB 協(xié)議基礎的帖子,如果對 USB 協(xié)議不了解,可以去看看下列的基礎內容。
這篇開(kāi)始使用 M62 板子來(lái)實(shí)現 USB 的設備開(kāi)發(fā),首先從最簡(jiǎn)單的 USB HID 鍵盤(pán)開(kāi)始。固件的 SDK 使用的是 CherryUSB 開(kāi)源 USB 固件。CherryUSB 是一個(gè)小而美的、可移植性高的、用于嵌入式系統的 USB 主從協(xié)議棧。設備端的協(xié)議執行流程如下圖:
02描述符
CherryUSB 實(shí)現好了一套 USB 的設備協(xié)議,只需要使用的 CheryyUSB 提供的接口調用就可以實(shí)現想要的 USB 設備了。首先應該為 USB 設備填描述符。描述符的種類(lèi)很多,先得理解他們的含義。
設備(Device) :就是一個(gè)實(shí)實(shí)在在的 USB 設備,比如 USB 鼠標,U 盤(pán)。
配置(Configuration):一個(gè) USB 設備可以有多種配置。比如 4G 上網(wǎng)卡就有 2 種配置:U 盤(pán)、上網(wǎng)卡。第 1 次把 4G 上網(wǎng)卡插入電腦時(shí),它是一個(gè) U 盤(pán),可以安裝里面的程序。裝好程序后,把它再次插入電腦,它就是一個(gè)上網(wǎng)卡。驅動(dòng)程序可以選擇讓它工作于哪種配置,同一時(shí)間只能有一種配置有效。大多數的 USB 設備只有一種配置。
接口(Interface) :每個(gè)配置下可以有多個(gè)接口,這個(gè)接口不是硬件上的接口,可以把這個(gè)接口理解為功能,一個(gè)接口就代表該設備當前支持的一種功能。
端點(diǎn)(Endpoint) :每個(gè)接口可以有多個(gè)端點(diǎn)。USB 主機和設備就是通過(guò)端點(diǎn)進(jìn)行數據交互的。每個(gè)端點(diǎn)地址對應一個(gè)方向,例如端點(diǎn) 2-IN,端點(diǎn) 2-OUT,這兩個(gè)含義完全不同。
對于 HID 設備來(lái)說(shuō)還有 HID 描述符和 HID 報告描述符。
HID 描述符:描述設備數據包的固定代碼字節數組,包括設備支持多少個(gè)包,包有多大,以及包中每個(gè)字節和比特的含義。
HID 報告描述符:HID 報告描述符是一個(gè)硬編碼的字節數組,用于描述設備的數據包。這包括:設備支持多少數據包,數據包有多大,以及數據包中每個(gè)字節和位的用途。
下面來(lái)一一看看它們都怎么寫(xiě)的。
設備描述符
cherryUSB 中封裝了宏來(lái)定義設備描述符:
詳細說(shuō)說(shuō)字段表示的意思:
配置描述符
cherryUSB 中封裝了宏來(lái)定義配置描述符:
接口描述符
接口描述符是需要自己寫(xiě)成數組的:
端點(diǎn)描述符
HID 描述符
HID 報告描述符
03設備的實(shí)現
在設備連接時(shí)設備端就需要向主機上報各種描述符,主機這時(shí)候就會(huì )識別到設備然后給 USB 設備分配端口(USB 協(xié)議基礎中的設備枚舉)。
連接完成后設備就可以通過(guò) usbd_ep_start_write 函數(cherryUSB 提供的 API)向主機上報數據了。
在主函數中調用它, 如下就實(shí)現了一個(gè)不斷向主機發(fā)送字母 a 的 usb 鍵盤(pán)設備。
為了能和真實(shí)的鍵盤(pán)對應上,這里特意使用矩陣鍵盤(pán)接上板子來(lái)讀取矩陣鍵盤(pán)的鍵值,將對應的鍵值轉換成對應的 hid 報告發(fā)送給電腦端。
硬件的接線(xiàn)順序如下:
在矩陣鍵盤(pán)掃描的 task 里面循環(huán)掃描矩陣鍵盤(pán),如果按鍵有按下直接轉換成對應的 hid 鍵值:
這些鍵值的定義可以在這里找到:
在 usb 鍵盤(pán)的 task 里面則取接受消息,并把消息發(fā)松給 pc 端。
04USB描述符的查看
Windows 下可以使用 usbview 來(lái)查看 usb 描述符信息,這有利于我們調試分析使用。
05USB協(xié)議調試軟件
usb 協(xié)議相對還是比較復雜的,任何的描述符寫(xiě)錯了都可能導致設備沒(méi)辦法正常的工作。這時(shí)候好用的調試軟件就非常的重要了。
USBlyzer, WireShark 都是可以用來(lái)抓 USB 數據包進(jìn)行分析的。
審核編輯:湯梓紅
-
usb
+關(guān)注
關(guān)注
59文章
7521瀏覽量
260090 -
物聯(lián)網(wǎng)
+關(guān)注
關(guān)注
2880文章
42146瀏覽量
361046 -
開(kāi)發(fā)板
+關(guān)注
關(guān)注
25文章
4579瀏覽量
94984
原文標題:【外設移植】USB鍵盤(pán)+M61開(kāi)發(fā)板
文章出處:【微信號:安信可科技,微信公眾號:安信可科技】歡迎添加關(guān)注!文章轉載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
用MINI STM32板子實(shí)現USB虛擬串口
如何用STM32板子實(shí)現了NRF24L01無(wú)線(xiàn)通信實(shí)驗
基于RT-Thread+RA6M4的USB設備驅動(dòng)適配設計實(shí)現
三星Galaxy Tab M62通過(guò)WiFi聯(lián)盟認證
三星新機Galaxy M62詳細規格參數曝光
三星Galaxy M62平板電腦再獲Wi-Fi認證
三星Galaxy Tab M62平板芯片與跑分曝光
三星Galaxy M62將成為Galaxy M系列的首款平板電腦
三星Galaxy M62電池容量已通過(guò)美國聯(lián)邦通信委員會(huì )頒發(fā)的證書(shū)
傳聞許久的三星Galaxy M62新機上市在即
智能家居之旅(3):Ai-M61/M62 接入HomeAssistant 實(shí)現點(diǎn)燈
![智能家居之旅(3):Ai-M61/<b class='flag-5'>M62</b> 接入HomeAssistant <b class='flag-5'>實(shí)現</b>點(diǎn)燈](https://file1.elecfans.com//web2/M00/ED/47/wKgaomZia1mANAk5AAB7Npr4BoI85.jpeg)
評論