|
平台:STM32U575qii-EV板 模块:USBX,ThreadX 目的:stm32u575芯片作为usb device和PC实现双向通信,device为HID Custom类 现状:当前代码基础配置已经完成,可以枚举成功,并且能够通过usbx的api实现数据发送,或者通过HAL_PCD_EP_Transimit()接口实现数据发送。但是如果发送时间间隔超过5s钟,MCU usb直接suspend,发送接口无法实现功能,并且找不到可以恢复的方法。尝试顺着中断去找suspend的函数或者执行代码,没能找到。请教各位大佬,有没有这方面的经验分享一下? |
USBX在F407上创建CDC不能正常使用
STM32H7 USB3300底层寄存器问题
stm32u575 gpdma burst length=1 配置其他数值不工作
大家有做USB_CDC_HOST的吗?
STM32U5进入standby模式时,待机电流有时候大的离谱,有时候却正常
STM32U5系列上电时序
STM32U585进入shutdown模式后偶发无法被唤醒引脚唤醒
STM32F072CBU6的USB虚拟接口应用
stm32f746g-disco开发板的串口通讯连接方式
DMA传输完成后,串口与DMA一直处于忙状态
微信公众号
手机版
之前 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接口,但是没有函数声明,没办法使用。