
平台:STM32U575qii-EV板 模块:USBX,ThreadX 目的:stm32u575芯片作为usb device和PC实现双向通信,device为HID Custom类 现状:当前代码基础配置已经完成,可以枚举成功,并且能够通过usbx的api实现数据发送,或者通过HAL_PCD_EP_Transimit()接口实现数据发送。但是如果发送时间间隔超过5s钟,MCU usb直接suspend,发送接口无法实现功能,并且找不到可以恢复的方法。尝试顺着中断去找suspend的函数或者执行代码,没能找到。请教各位大佬,有没有这方面的经验分享一下? |
新手小白,SMT32 TP Tool Windows无法安装驱动怎么处理
STM32 OCTOSPI 读取 ICNA3306 显示屏 ID 失败,求助;
STM32U5 IWDG的提前唤醒中断无法在STOP模式下触发
如何用c#使用ST25R3911DISCOComm.dll来读取和写入NDEF区的数据,需要相关例程,感谢各位大佬拯救一下我啊!????
USBx配置有哪些小的需要注意的细节?
STM32U5 驱动库从1.6.0更新至1.7.0本可以正常运行的代码出现问题
H743ZIT6 USB虚拟串口 CDC电脑无法识别(获取描述符失败)
STM32U5G9J-DK2 已经实现CustomHID 进行数据收发,一包数据64字节,如何提升到一包1024字节
stm32u5 Usart IDEL 中断 , DMA 读取数据。
STM32U575 串口接收+GPDMA 波特率不匹配导致失败
之前 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接口,但是没有函数声明,没办法使用。