|
1. 前言 客户反馈在运行STM32C071固件库Applications/USBX/Ux_Device_HID_Standalone例程时,反馈上位机不能向MCU通过EP OUT1发送数据,每当发数据就STALL。设备描述符正常,端口也是正常状态,MCU可以通过EP IN数据给上位机,如果不添加EP OUT1,通过EP OUT0发数据也不会STALL。
2. 问题调研与复现 以NUCLEO-H563ZI的板子为例,基于此板子上进行了USBx的跟踪和调试。发现一个标准的USB-HID设备及USB_HID_Custom(用户自定义HID设备),是只有IN端点,没有OUT属性的端点,基于USBx的协议栈创建的USB HID应用默认是不支持OUT端点。如果要进行HID的输入输出,需要使能USBx支持HID类OUT端点传输。 3.实现USBx HID类应用 支持OUT传输的步骤
其次修改行下面的配置:
配置OUT端点发送缓冲区,请注意这里的修改,这部分内容属于客户自己添加部分,如果大小不适合会出现问题,详情请参考参考手册。
在USBX_DEVICE_HID_CUSTOM_Task()中添加代码实现,请注意原例程可能不是使用这个函数名(原函数为USBX_DEVICE_HID_MOUSE_Task),按一次按键向PC机发送64Byte数据。
PC机向OUT端点发送数据(PC机发送数据,STM32H5 USB接收数据)
4. 总结 本文旨在实现 USBx HID Custom类的OUT端点通信,限于篇幅原因,读者可以下载本文档的附件工程,并详细阅读源码细节和已有实际调试,以理解USBx协议栈的通信流程,从而高效的开发出自己的USB应用。 经验分享 | LAT1658 STM32H5基于USBx裸机添加OUT端点实现HID类双向通信 |
【STM32H5 评测】MNIST 数字识别
【STM32H5 评测】3、STM32H5 Lwip 移植、官方例程和UDP发送数据
【STM32H5 评测】+开发板拆箱介绍
【STM32H5 评测】4、移植CoreMark
【STM32H5 评测】ADC 电压表
【STM32H5 评测】基础硬件加密与随机数性能 - STM32H5E5实测硬件AES加解密、HASH运算、TRNG真随机数输出速率与稳定性
【STM32H5 评测】基于NUCLEO_H5E5ZJ+Zephyr数字电源
【STM32H5 评测】NUCLEO-H5E5ZJ 使用 TrustZone 安全分区系统实践测试
【STM32H5 评测】CPU核心性能 - STM32H5E5跑 RTOS,观察任务切换速度、中断响应快慢
【STM32H5 评测】内存读写性能 - STM32H5E5实测Flash,SRAM读写速度,用DMA搬运大块数据
微信公众号
手机版