平台:STM32U575qii-EV板 模块:USBX,ThreadX 目的:stm32u575芯片作为usb device和PC实现双向通信,device为HID Custom类 现状:当前代码基础配置已经完成,可以枚举成功,并且能够通过usbx的api实现数据发送,或者通过HAL_PCD_EP_Transimit()接口实现数据发送。但是如果发送时间间隔超过5s钟,MCU usb直接suspend,发送接口无法实现功能,并且找不到可以恢复的方法。尝试顺着中断去找suspend的函数或者执行代码,没能找到。请教各位大佬,有没有这方面的经验分享一下? |
STM32U575ZIT 怎么配置GPDMA+DCMI 求解
STM32U575 LPBAM中I2C的Sequence Number如何理解
电脑识别不到stlink,指示灯也不亮
stm32U5低功耗
U575功耗问题
stm32u535芯片usb hid custom类接收数据有问题?
如何用c#使用ST25R3911DISCOComm.dll来读取和写入NDEF区的数据,需要相关例程,感谢各位大佬拯救一下我啊!????
STM32U5退出stop2模式后进入HardFault_Handler
U575VGT6功耗问题
spi 9 bit data width DMA sends STM32CubeMX configuration
之前 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接口,但是没有函数声明,没办法使用。