Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
CherryUSB
NXP 微控制器
USB_HID
【FRDM-MCXA156测评】- CherryUSB与hid鼠标设备模仿
发布于 2025-03-01 23:40:35 浏览:20
订阅该版
[tocm] 先谢谢RT-Thread和NXP的测评机会,笔者做的是测评USB部分。板子资源与MCU芯片介绍就略过啦,版友写了很多了可以参考。开发环境搭建请参考RT-Thread的快速入门,咱们就直入主题,折腾USB去。 # MCXA156 USB简介 据官方文档,MCXA156有一个全速(full speed)的USB模块,并集成了对应的USB 全速PHY,尤其重要的是只支持设备模式,深得笔者喜欢毕竟咱测评任务也轻松了不是🙂。板级上这个USB模块通过USB Type-C接出。请注意这板子有两USB Type-C口,一个是上文所述的MCU自身的USB接口,另一个是接的板载MCU-Link调试器(出厂默认是CMSIS-DAP兼容的固件),板子上都有清晰的丝印想弄错也不容易,注意下即可。当然笔者做MCXA156的USB测试,就先把两USB Type-C都通过USB线缆连接电脑。 PS:这个做MCU-Link的MCU其实比MCXA156还要强大嘿嘿 # CherryUSB的移植适配 这块其实同样做USB测评的兄弟已经做好了,咱直接拿来用即可。关于USB这里多说点以供参考。据笔者理解,RT-Thread历史上一共曾有过三个USB协议栈,原自带Legacy USB协议栈、TinyUSB、CherryUSB,但在2024年已经统一切换成CherryUSB了。CherryUSB的适配其实也有固定套路:第一步准确找到USB对应的IP,因为CherryUSB的IP实现是作为一个port存在,复用即可。那么对于MCXA156 USB来说,它的IP应该是kinetis一类;第二步实现usb_dc_low_level_init()与usb_dc_low_level_deinit()函数,前者主要做USB相关的时钟阿、中断阿、甚至pinmux等一些初始化,而后者就是去初始化是前者的逆向操作,这一步可以观察下仓库里的code是不是已经有对应的glue代码,如果有修改即可,如果没有添 加下对应代码也不是难事。 对应到MCXA156来说,如上文所述有版友已经做完CherryUSB适配的修改,咱就搭个顺风车。 #USB HID设备的实践 版友做完CherryUSB适配修改后测试的是CDC ACM设备,那笔者就换USB HID设备玩玩,就模拟个USB HID鼠标吧。 直接上代码,修改bsp/nxp/mcx/mcxa/frdm-mcxa156/board/ports/cherryusb/cherryusb.c,加入以下代码: ```c #ifdef RT_CHERRYUSB_DEVICE_TEMPLATE_HID_MOUSE extern void hid_mouse_init(uint8_t busid, uintptr_t reg_base); extern void hid_mouse_test(uint8_t busid); static int rt_hw_mcxa156_cherryusb_hid_init(void) { hid_mouse_init(0, 0x400A4000u); return 0; } INIT_COMPONENT_EXPORT(rt_hw_mcxa156_cherryusb_hid_init); static int hid_example(int argc, char **argv) { hid_mouse_test(0); return 0; } MSH_CMD_EXPORT(hid_example, USB hid example); #endif ``` 笔者觉得代码挺简单的,调用hid_mouse_init()初始化一个USB HID鼠标,调用hid_mouse_test()做具体测试,其实就是鼠标画圆了可参见文末视频,代码基本是self-commented and explained,在CherryUSB的手册里也有对应的函数API介绍,如有疑问可回帖垂询。 然后在bsp/nxp/mcx/mcxa/frdm-mcxa156/目录下运行如下命令进入menuconfig配置界面 ```bash scons --menuconfig ``` 进入menuconfig配置界面后,进如下路径配置一下: ```bash RT-Thread Components ---> Device Drivers ---> Using USB with CherryUSB ---> Enable usb device mode ---> Select usb device speed (FS) ---> Select usb device ip (X) kinetis_mcx Enable usb hid device Select usb device template (hid_mouse) ---> ``` 运行如下命令编译: ```bash scons -j8 ``` 在当前目录下会有rtthread.bin文件生成,用如下pyocd命令即可烧录: ```bash pyocd load -e sector -t mcxa156vll rtthread.bin ``` 烧录完毕后板子会自动重启,电脑系统中应该会识别出一个新USB HID鼠标设备,笔者电脑的linux系统下dmesg看到内容如下图所示:  在Finsh终端运行hid_example命令,会看到鼠标画圆  测试视频如下: https://www.bilibili.com/video/BV19dX9YUEGr/
1
条评论
默认排序
按发布时间排序
登录
注册新账号
关于作者
rvcore
这家伙很懒,什么也没写!
文章
11
回答
13
被采纳
1
关注TA
发私信
相关文章
1
试贴-消灭0主题
2
LPC M4的一些资料
3
LPC4088的临时分支
4
lpc1788 ad 不稳定
5
1788 LCD控制器缓冲区字节问题
6
一起来学习LPC4088吧
7
上传LPC4088的realtouch主工程
8
RealBoard 4088预定帖 [第一批板子不多,预定提前结束]
9
晒RealBoard LPC4088开箱照啦,速带小板凳前来围观
10
4088主程序需要的SD卡资源
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
DMA
USB
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
rt-smart
FAL
I2C_IIC
UART
ESP8266
cubemx
WIZnet_W5500
ota在线升级
PWM
BSP
flash
freemodbus
packages_软件包
潘多拉开发板_Pandora
定时器
GD32
ADC
flashDB
编译报错
socket
中断
Debug
rt_mq_消息队列_msg_queue
keil_MDK
ulog
SFUD
msh
C++_cpp
MicroPython
本月问答贡献
出出啊
1520
个答案
343
次被采纳
小小李sunny
1444
个答案
290
次被采纳
张世争
813
个答案
177
次被采纳
crystal266
550
个答案
161
次被采纳
whj467467222
1222
个答案
149
次被采纳
本月文章贡献
出出啊
1
篇文章
5
次点赞
小小李sunny
1
篇文章
1
次点赞
张世争
1
篇文章
3
次点赞
crystal266
2
篇文章
1
次点赞
whj467467222
2
篇文章
2
次点赞
回到
顶部
发布
问题
投诉
建议
回到
底部