
平台:STM32U575qii-EV板 模块:USBX,ThreadX 目的:stm32u575芯片作为usb device和PC实现双向通信,device为HID Custom类 现状:当前代码基础配置已经完成,可以枚举成功,并且能够通过usbx的api实现数据发送,或者通过HAL_PCD_EP_Transimit()接口实现数据发送。但是如果发送时间间隔超过5s钟,MCU usb直接suspend,发送接口无法实现功能,并且找不到可以恢复的方法。尝试顺着中断去找suspend的函数或者执行代码,没能找到。请教各位大佬,有没有这方面的经验分享一下? |
STM32F407读写U盘出现程序卡死问题
STM32U5A9NJH6Q使用160Mhz HSPI读取外部PSRAM失败
stm32f746g-disco开发板的串口通讯连接方式
STM32F103C8T6做USBCDC串口,在WINDOWS上面不能识别设备名称
STM32U575从低功耗模式唤醒后,无法获取唤醒源
USB连接开发板影响主机风扇的RGB
STM32H7使用HAL库如何控制外置USB HS PHY进入低功耗
STM32U5+LPBAM需设置RAM为SRAM4的地址,否则LPBAM无法运行?
STM32U575VGT6在cubeMX中没有FATFS中间件,是不支持?还是待开发?现在这块板子使用FATFS只能自己手动移植吗?
搭载文件系统FatFs,运行写测试后,串口打印失效了,但是串口指示灯正常工作,哪里的问题?
之前 ST提供的USB库里是有类似函数的,比方 USBD_LL_Resume();
你现在使用USBX,可以试试使用ux_device_stack_host_wakeup()之类的函数。
非常感谢大佬的回复和指点
我这边尝试了ux_device_stack_host_wakeup()函数去唤醒USB,失败了
我查看stm32的pcd hal库,有个函数
HAL_StatusTypeDef HAL_PCD_ActivateRemoteWakeup(PCD_HandleTypeDef *hpcd)
{
return (USB_ActivateRemoteWakeup(hpcd->Instance));
}
调用这个函数,device会一直上报一个0x04的数据,但是数据发送函数还是无法正常使用
不知道这个和用户自定义的descriptor有没有关系,用同样的工程,把描述符换成Mouse的标准描述符就不会出现休眠,用如下的描述符就会休眠:
uint8_t USBD_CustomHID_ReportDesc[] =
{
0x05, 0xFF, // USAGE_PAGE(User define)
0x09, 0xFF, // USAGE(User define)
0xa1, 0x01, // COLLECTION (Application)
// The Input report
0x05, 0x01, // USAGE_PAGE(1)
0x19, 0x00, // USAGE_MINIMUM(0)
0x29, 0xFF, // USAGE_MAXIMUM(255)
0x15, 0x00, // LOGICAL_MINIMUM (0)
0x25, 0xFF, // LOGICAL_MAXIMUM (255)
0x75, 0x08, // REPORT_SIZE (8)
0x95, 0x40, // REPORT_COUNT (64)
0x81, 0x02, // INPUT (Data,Var,Abs)
// The Output report
0x05, 0x02, // USAGE_PAGE(2)
0x19, 0x00, // USAGE_MINIMUM (0)
0x29, 0xFF, // USAGE_MAXIMUM (255)
0x15, 0x00, // LOGICAL_MINIMUM (0)
0x25, 0xFF, // LOGICAL_MAXIMUM (255)
0x75, 0x08, // REPORT_SIZE (8)
0x95, 0x20, // REPORT_COUNT (32)
0x91, 0x02, // OUTPUT (Data,Var,Abs)
0xc0 /* End Collection */
};
找了一下这个函数,在库里没有找见呀,然后去Microsoft官网上查了一下,也没有找到这个接口。
倒是从ux_device_stack的相关介绍里找到这样一段话,不过这段插在了ux_device_stack_initialize()函数的介绍里。
然后在库里有一个ux_device_stack_connect接口,但是没有函数声明,没办法使用。