|
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 USBX 裸机实现 HID 双向通信:OUT 端点添加完整指南
STM32H5 EDATA (高寿命数据区) 使用指南与注意事项
STM32家族再添猛将:STM32H5F/E高性能系列,4MB闪存+Chrom-ART2,专为中高级图形应用而生
实战经验 | LAT1585 STM32H5在使能TrustZone下实现High-Cycle的数据存储
实战经验 | STM32H5 USBD Classic 驱动 CDC 移植实战指南:裸机环境快速落地方案
STM32H503多轴运动控制卡
【LSM6DSV320X评测】MEMS上位机体验 以及MLS数据预采集
经验分享 | STM32H563 SPI DMA应用演示
实战经验 | 读取STM32H5 Data Flash触发NMI的问题解析
实战经验 | STM32H5的PB14引脚被意外拉低的问题解析
微信公众号
手机版