本文為大家?guī)鞢herryUSB-HID設(shè)備實踐,以MCXA156為例。開發(fā)環(huán)境搭建請參考RT-Thread的快速入門,咱們就直入主題,折騰USB去。
CherryUSB的移植適配
據(jù)筆者理解,RT-Thread歷史上一共曾有過三個USB協(xié)議棧,原自帶Legacy USB協(xié)議棧、TinyUSB、CherryUSB,但在2024年已經(jīng)統(tǒng)一切換成CherryUSB了。CherryUSB的適配其實也有固定套路:第一步準(zhǔn)確找到USB對應(yīng)的IP,因為CherryUSB的IP實現(xiàn)是作為一個port存在,復(fù)用即可。那么對于MCXA156 USB來說,它的IP應(yīng)該是kinetis一類;第二步實現(xiàn)usb_dc_low_level_init()與usb_dc_low_level_deinit()函數(shù),前者主要做USB相關(guān)的時鐘阿、中斷阿、甚至pinmux等一些初始化,而后者就是去初始化是前者的逆向操作,這一步可以觀察下倉庫里的code是不是已經(jīng)有對應(yīng)的glue代碼,如果有修改即可,如果沒有添加下對應(yīng)代碼也不是難事。
對應(yīng)到MCXA156來說,如上文所述有版友已經(jīng)做完CherryUSB適配的修改,咱就搭個順風(fēng)車。
USB HID設(shè)備的實踐
版友做完CherryUSB適配修改后測試的是CDC ACM設(shè)備,那筆者就換USB HID設(shè)備玩玩,就模擬個USB HID鼠標(biāo)吧。
直接上代碼,修改bsp/nxp/mcx/mcxa/frdm-mcxa156/board/ports/cherryusb/cherryusb.c,加入以下代碼:
#ifdefRT_CHERRYUSB_DEVICE_TEMPLATE_HID_MOUSEexternvoidhid_mouse_init(uint8_tbusid,uintptr_treg_base);externvoidhid_mouse_test(uint8_tbusid);staticintrt_hw_mcxa156_cherryusb_hid_init(void){ hid_mouse_init(0,0x400A4000u); return0;}INIT_COMPONENT_EXPORT(rt_hw_mcxa156_cherryusb_hid_init);staticinthid_example(intargc,char**argv){ hid_mouse_test(0); return0;}MSH_CMD_EXPORT(hid_example, USB hid example);#endif
筆者覺得代碼挺簡單的,調(diào)用hid_mouse_init()初始化一個USB HID鼠標(biāo),調(diào)用hid_mouse_test()做具體測試,其實就是鼠標(biāo)畫圓了可參見文末視頻,代碼基本是self-commented and explained,在CherryUSB的手冊里也有對應(yīng)的函數(shù)API介紹,如有疑問可回帖垂詢。
然后在bsp/nxp/mcx/mcxa/frdm-mcxa156/目錄下運(yùn)行如下命令進(jìn)入menuconfig配置界面
scons--menuconfig
進(jìn)入menuconfig配置界面后,按如下步驟配置一下:
配置主界面進(jìn)RT-Thread Components
再進(jìn)Device Drivers
最下面有Using USB with CherryUSB
進(jìn)入CherryUSB配置頁面,這里選中Enable usb device mode
再Enter鍵進(jìn)入USB Device模式配置,這里選中FS,IP選kinetis_mcx, 并Enable usb hid device, usb device template選hid_mouse
配置完畢,運(yùn)行如下命令編譯:
scons-j8
編譯成功,在當(dāng)前目錄下也會有rtthread.bin文件生成,用如下pyocd命令即可燒錄:
pyocdload -e sector -t mcxa156vll rtthread.bin
燒錄完畢后板子會自動重啟,電腦系統(tǒng)中應(yīng)該會識別出一個新USB HID鼠標(biāo)設(shè)備,筆者電腦的linux系統(tǒng)下dmesg看到內(nèi)容如下圖所示:
在Finsh終端運(yùn)行hid_example命令,會看到鼠標(biāo)畫圓
-
HID
+關(guān)注
關(guān)注
2文章
135瀏覽量
47327 -
USB協(xié)議棧
+關(guān)注
關(guān)注
0文章
3瀏覽量
7298
發(fā)布評論請先 登錄
什么是藍(lán)牙HID?應(yīng)用藍(lán)牙HID鼠標(biāo)操控小米2
CherryUSB軟件包不知道如何使用
使用CherryUSB報錯缺少usb_config.h是何原因
cherryusb hid 高速模式demo
如何編寫應(yīng)用程序與USB HID設(shè)備通訊

基于Wave Panel的HID設(shè)備通訊接口設(shè)計

USB HID設(shè)備應(yīng)用(進(jìn)階篇)
基于USB總線接口芯片CH372的HID設(shè)備接口設(shè)計

HID_CDC復(fù)合設(shè)備在WIN10的識別問題

安卓設(shè)備的USB-HID通訊例程的開發(fā)(2)

基于HAL庫的USB自定義HID設(shè)備實現(xiàn)

HID設(shè)備例程
【技術(shù)專欄】泰凌微電子USB HID 用戶自定義設(shè)備應(yīng)用及調(diào)試

評論