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

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

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

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

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

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

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

評(píng)論