在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

【外設(shè)移植】USB鍵盤+M61開發(fā)板

AIoT行業(yè)洞察 ? 來源:安信可社區(qū)用戶bzhou830 ? 作者:安信可社區(qū)用戶 ? 2024-02-26 11:31 ? 次閱讀

本作品由安信可社區(qū)用戶

bzhou830制作

01介紹

前面寫過兩遍關(guān)于 USB 協(xié)議基礎(chǔ)的帖子,如果對 USB 協(xié)議不了解,可以去看看下列的基礎(chǔ)內(nèi)容。

【探索 USB】01. USB 協(xié)議基礎(chǔ) - 小安派 S1&M61 教程合集 - 物聯(lián)網(wǎng)開發(fā)者社區(qū)-安信可論壇 - Powered by Discuz! (ai-thinker.com)

【探索 USB】02. 設(shè)備的連接和枚舉 - 小安派 S1&M61 教程合集 - 物聯(lián)網(wǎng)開發(fā)者社區(qū)-安信可論壇 - Powered by Discuz! (ai-thinker.com)

這篇開始使用 M62 板子來實(shí)現(xiàn) USB 的設(shè)備開發(fā),首先從最簡單的 USB HID 鍵盤開始。固件的 SDK 使用的是 CherryUSB 開源 USB 固件。CherryUSB 是一個小而美的、可移植性高的、用于嵌入式系統(tǒng)的 USB 主從協(xié)議棧。設(shè)備端的協(xié)議執(zhí)行流程如下圖:

wKgaomXcBeyAHBbrAAI3DTJGN2c257.png

02描述符

CherryUSB 實(shí)現(xiàn)好了一套 USB 的設(shè)備協(xié)議,只需要使用的 CheryyUSB 提供的接口調(diào)用就可以實(shí)現(xiàn)想要的 USB 設(shè)備了。首先應(yīng)該為 USB 設(shè)備填描述符。描述符的種類很多,先得理解他們的含義。

設(shè)備 (Device) :就是一個實(shí)實(shí)在在的 USB 設(shè)備,比如 USB 鼠標(biāo),U 盤。

配置(Configuration):一個 USB 設(shè)備可以有多種配置。比如 4G 上網(wǎng)卡就有 2 種配置:U 盤、上網(wǎng)卡。第 1 次把 4G 上網(wǎng)卡插入電腦時,它是一個 U 盤,可以安裝里面的程序。裝好程序后,把它再次插入電腦,它就是一個上網(wǎng)卡。驅(qū)動程序可以選擇讓它工作于哪種配置,同一時間只能有一種配置有效。大多數(shù)的 USB 設(shè)備只有一種配置。

接口 (Interface) :每個配置下可以有多個接口,這個接口不是硬件上的接口,可以把這個接口理解為功能,一個接口就代表該設(shè)備當(dāng)前支持的一種功能。

端點(diǎn) (Endpoint) :每個接口可以有多個端點(diǎn)。USB 主機(jī)和設(shè)備就是通過端點(diǎn)進(jìn)行數(shù)據(jù)交互的。每個端點(diǎn)地址對應(yīng)一個方向,例如端點(diǎn) 2-IN,端點(diǎn) 2-OUT,這兩個含義完全不同。

對于 HID 設(shè)備來說還有 HID 描述符和 HID 報告描述符。

HID 描述符:描述設(shè)備數(shù)據(jù)包的固定代碼字節(jié)數(shù)組,包括設(shè)備支持多少個包,包有多大,以及包中每個字節(jié)和比特的含義。

HID 報告描述符:HID 報告描述符是一個硬編碼的字節(jié)數(shù)組,用于描述設(shè)備的數(shù)據(jù)包。這包括:設(shè)備支持多少數(shù)據(jù)包,數(shù)據(jù)包有多大,以及數(shù)據(jù)包中每個字節(jié)和位的用途。

有關(guān) USB 鍵盤鼠標(biāo)的數(shù)據(jù)報格式可以看如下帖子:

USB-HID 鍵鼠通訊數(shù)據(jù)格式 - 技術(shù)干貨 - 物聯(lián)網(wǎng)開發(fā)者社區(qū)-安信可論壇 - Powered by Discuz! (ai-thinker.com)

下面來一一看看它們都怎么寫的。

>>>>設(shè)備描述符

cherryUSB 中封裝了宏來定義設(shè)備描述符:

wKgZomXcBeyAKlS8AAAxptCpBgc464.png

詳細(xì)說說字段表示的意思:

wKgaomXcBe2AAgLjAAK0LfJPAMI153.png

>>>>配置描述符

cherryUSB 中封裝了宏來定義配置描述符:

wKgZomXcBe2AFFGcAAAzQVx4doA273.pngwKgaomXcBe6AdwhvAAGTlE3WTA4517.png

>>>>接口描述符

接口描述符是需要自己寫成數(shù)組的:

wKgZomXcBe6AQmwuAAELmV4kBiM759.pngwKgaomXcBe-AQEu_AAEFF27GXys025.png

>>>>端點(diǎn)描述符

wKgZomXcBfWAWs3GAAFltw0cYfM06.jpegwKgaomXcBfWADOeXAAEERjpKNC4997.png

>>>>HID 描述符

wKgZomXcBfaABC3-AAD_pV01JCQ217.pngwKgZomXcBfeANDKPAAEfB1ad9Nw576.png

>>>>HID 報告描述符

wKgaomXcBfeAPU6tAAOobq-ftec460.png

03設(shè)備的實(shí)現(xiàn)

在設(shè)備連接時設(shè)備端就需要向主機(jī)上報各種描述符,主機(jī)這時候就會識別到設(shè)備然后給 USB 設(shè)備分配端口(USB 協(xié)議基礎(chǔ)中的設(shè)備枚舉)。

連接完成后設(shè)備就可以通過 usbd_ep_start_write 函數(shù)(cherryUSB 提供的 API)向主機(jī)上報數(shù)據(jù)了。

wKgaomXcBfiALcYDAAMnDVUKRP0561.png

在主函數(shù)中調(diào)用它, 如下就實(shí)現(xiàn)了一個不斷向主機(jī)發(fā)送字母 a 的 usb 鍵盤設(shè)備。

wKgZomXcBfiANJMYAAM_CuxJqis798.png

為了能和真實(shí)的鍵盤對應(yīng)上,這里特意使用矩陣鍵盤接上板子來讀取矩陣鍵盤的鍵值,將對應(yīng)的鍵值轉(zhuǎn)換成對應(yīng)的 hid 報告發(fā)送給電腦端。

硬件的接線順序如下:

wKgZomXcBfmATt8UAABpCAxD07g609.png

在矩陣鍵盤掃描的 task 里面循環(huán)掃描矩陣鍵盤,如果按鍵有按下直接轉(zhuǎn)換成對應(yīng)的 hid 鍵值:

wKgaomXcBfqANNo0AAKbKZ3Hphg092.png

這些鍵值的定義可以在這里找到:

wKgZomXcBfuAO4-nAAgKtc2GlQA606.png

在 usb 鍵盤的 task 里面則取接受消息,并把消息發(fā)松給 pc 端。

wKgaomXcBfuASvYlAAFre_9WJhE420.png

04USB描述符的查看

Windows 下可以使用 usbview 來查看 usb 描述符信息,這有利于我們調(diào)試分析使用。

wKgZomXcBfyAEi6fAAJUGP9w1R8550.png

05USB協(xié)議調(diào)試軟件

usb 協(xié)議相對還是比較復(fù)雜的,任何的描述符寫錯了都可能導(dǎo)致設(shè)備沒辦法正常的工作。這時候好用的調(diào)試軟件就非常的重要了。

USBlyzer, WireShark 都是可以用來抓 USB 數(shù)據(jù)包進(jìn)行分析的。

審核編輯 黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • usb
    usb
    +關(guān)注

    關(guān)注

    60

    文章

    7981

    瀏覽量

    266118
  • 協(xié)議
    +關(guān)注

    關(guān)注

    2

    文章

    606

    瀏覽量

    39343
  • 開發(fā)板
    +關(guān)注

    關(guān)注

    25

    文章

    5121

    瀏覽量

    98218
收藏 人收藏

    評論

    相關(guān)推薦

    TCL 飛利浦超級SMT M61機(jī)芯電路圖

    TCL SMT M61彩電電路圖TCL SMT M61彩色電視機(jī)電路圖,TCL SMT M61彩電圖紙,TCL SMT M61原理圖。
    發(fā)表于 05-06 14:40 ?35次下載
    TCL 飛利浦超級SMT <b class='flag-5'>M61</b>機(jī)芯電路圖

    ARM開發(fā)板上uClinux內(nèi)核移植

    ARM開發(fā)板上uClinux內(nèi)核移植 簡述:針對“如何在以S3C44B0X為核心的ARMSYS開發(fā)板上建立uClinux內(nèi)核移植”的一個總結(jié),其內(nèi)容包括對Bootloader的功能分
    發(fā)表于 02-02 11:07 ?736次閱讀

    USB開發(fā)板功能特點(diǎn)

    USB2.0 開發(fā)板 USB+FPGA 開發(fā)板 USB2.0 開發(fā)板功能特點(diǎn) ● 符合
    發(fā)表于 12-13 10:32 ?57次下載
    <b class='flag-5'>USB</b><b class='flag-5'>開發(fā)板</b>功能特點(diǎn)

    FreeRTOS移植MAPS-K22開發(fā)板

    FreeRTOS移植MAPS-K22開發(fā)板,本文以MAPS-K22開發(fā)板為例,介紹了將FreeRTOS移植于NXP Kientis 系列MCU中的步驟,希望能對想學(xué)習(xí)RTOS和Kine
    發(fā)表于 12-24 16:39 ?4次下載

    盤古STM32F103開發(fā)板移植uCGUI教程

    盤古STM32F103開發(fā)板移植uCGUI教程
    發(fā)表于 09-29 09:21 ?21次下載
    盤古STM32F103<b class='flag-5'>開發(fā)板</b><b class='flag-5'>移植</b>uCGUI教程

    iTOP-4412開發(fā)板-實(shí)戰(zhàn)教程-ssh服務(wù)器移植到arm開發(fā)板

    迅為iTOP-4412開發(fā)板-實(shí)戰(zhàn)教程-ssh服務(wù)器移植到arm開發(fā)板
    發(fā)表于 05-15 11:11 ?28次下載

    怎樣在迅為iTOP-iMX6開發(fā)板 Qt4.7系統(tǒng)中移植

    4G_EC20模塊在迅為iTOP-iMX6開發(fā)板 Qt4.7系統(tǒng)中的移植 EC20 模塊封裝成標(biāo)準(zhǔn)的 PCIe 接口,和開發(fā)板主要通過 usb通訊。
    發(fā)表于 07-09 09:50 ?2452次閱讀

    如何移植OpenHarmony 3.0 到星空派開發(fā)板

    9 月 30 日,OpenHarmony 3.0 LTS 版本發(fā)布。本文將介紹如何移植 OpenHarmony 3.0 到星空派開發(fā)板上。 星空派開發(fā)板介紹 星空派(GD)開發(fā)板是由旗
    的頭像 發(fā)表于 10-19 09:08 ?2573次閱讀
    如何<b class='flag-5'>移植</b>OpenHarmony 3.0 到星空派<b class='flag-5'>開發(fā)板</b>上

    MQTT移植到stm32開發(fā)板——使用TencentOS tiny操作系統(tǒng)

    手把手教你將MQTT客戶端移植到stm32開發(fā)板上,使用TencentOS tiny官方開發(fā)板——TencentOS_tiny_EVB_MX_Plus開發(fā)板作為
    發(fā)表于 12-08 13:21 ?6次下載
    MQTT<b class='flag-5'>移植</b>到stm32<b class='flag-5'>開發(fā)板</b>——使用TencentOS tiny操作系統(tǒng)

    小熊派開發(fā)板移植RT-FOTA

    小熊派開發(fā)板移植RT-FOTA
    發(fā)表于 12-08 15:06 ?4次下載
    小熊派<b class='flag-5'>開發(fā)板</b><b class='flag-5'>移植</b>RT-FOTA

    開發(fā)板評測】Renesas RA6M4開發(fā)板之CAN

    介紹 通過閱讀用戶手冊,我們可以了解到RA6M4 MCU具有豐富的外設(shè)如IIC、SPI、CAN、USB等(如下圖)。在此次測評中我們暫且只關(guān)心CAN的使用。 國際慣例先看說明書,打開《開發(fā)板
    的頭像 發(fā)表于 12-20 12:10 ?1560次閱讀

    Ai-M61/62系列的固件燒錄指導(dǎo)

    本文介紹Ai-M61/62系列模組/開發(fā)板的固件燒錄。
    的頭像 發(fā)表于 07-02 11:23 ?1718次閱讀
    Ai-<b class='flag-5'>M61</b>/62系列的固件燒錄指導(dǎo)

    用Ai-M61-32S開發(fā)板能玩出多少拓展板?

    時間過的真快,眨眼間樓主玩M61這個模組已經(jīng)有一個多月了,學(xué)習(xí)的同時結(jié)交了很多不講武德志同道合的朋友,從最開始剛接觸的點(diǎn)燈到慢慢嘗試上手用M61驅(qū)動各種電子模塊,深感還要學(xué)習(xí)很多。
    的頭像 發(fā)表于 11-13 10:29 ?517次閱讀
    用Ai-<b class='flag-5'>M61</b>-32S<b class='flag-5'>開發(fā)板</b>能玩出多少拓展板?

    安信可Ai-M61-32S開發(fā)板能玩出多少拓展板?

    控制家里的一些設(shè)備~ 實(shí)物展示 這次使用M61開發(fā)板只引出了串口,把usb引出到底板上了,順便簡單的寫了一些代碼,可以在讀取ds1302的時間顯示在屏幕上,讀取溫濕度,光敏電阻讀取光照,還有燈珠~ DS1302時鐘 板載了一個d
    的頭像 發(fā)表于 11-13 14:54 ?635次閱讀
    安信可Ai-<b class='flag-5'>M61</b>-32S<b class='flag-5'>開發(fā)板</b>能玩出多少拓展板?

    外設(shè)移植】Ai-M61-32s 開發(fā)板+3.5寸SPI彩屏

    M61-32S3.5寸SPI屏VCCVCCGNDGNDIO12CSIO26RSIO27D/CIO19SDIIO13SCLIO28BLIO18SDO 02、庫文件介紹 該移植庫共包含五個部分,分別
    的頭像 發(fā)表于 03-07 10:02 ?555次閱讀
    【<b class='flag-5'>外設(shè)</b><b class='flag-5'>移植</b>】Ai-<b class='flag-5'>M61</b>-32s <b class='flag-5'>開發(fā)板</b>+3.5寸SPI彩屏
    主站蜘蛛池模板: 视频在线视频免费观看 | 天堂中文在线资源库用 | 久久久久国产精品免费免费 | 亚洲 欧美 自拍 另类 欧美 | 色偷偷女男人的天堂亚洲网 | 亚洲国产精品热久久2022 | avbobo在线观看 | 看片在线 | 男操女免费视频 | 国产午夜a理论毛片在线影院 | 狠狠色噜噜狠狠狠狠97不卡 | 国产美女影院 | 天天艹在线| 中文在线天堂网 | 伦理一区二区三区 | va国产 | www毛片| 午夜嘿嘿| 九月丁香婷婷亚洲综合色 | 91网址在线播放 | 成人欧美一区二区三区 | 黄网站色视频 | 色色色爱| 色视频日本| 亚洲欧美成人综合久久久 | 精品国产影院 | 欧美成人高清性色生活 | 丁香在线视频 | 最新版天堂中文在线官网 | 精品videosex性欧美 | 99色视频在线 | 天天操精品 | 一级做a爰片久久毛片看看 一级做a爰片久久毛片毛片 | аⅴ资源天堂8在线 | 性感美女福利视频 | 久久久久久久国产精品电影 | 亚洲美女爱爱 | 免费抓胸吻胸激烈视频网站 | 五月激情婷婷丁香 | 欧美激情五月 | 国产欧美日韩电影 |