wandeng123 发表于 2023-9-27 14:45:25

STM32H7:USB复合设备MSC+CDC,USBD_CDC_TransmitPacket函数发送不正常

本帖最后由 wandeng123 于 2023-9-27 14:58 编辑

OS:freertos MCU:STM32H743
使用USB作为虚拟串口和U盘,虚拟串口作为控制台使用,用于打印日志和接收控制指令


1、设备在USB复合状态下,设备主动向USB发送数据,只有在刚开机的一两组数据发送成功,后面的数据一个都不行

2、在接收到usb数据之后的1s内可以发送数据包,超过1s后数据依然无法主动发送。期间如果进行打开串口、关闭串口或更改波特率,能间接的发出一些数据
3、设备单独工作在CDC(虚拟串口)模式下,以上的问题统统不存在

经过测试发现,复合设备状态下,USB中断中的设备枚举每次都是MSC地址,只有在接收到数据后才会枚举到CDC地址。
1、无法发送的原因是设备没有枚举到CDC,导致无法执行USBD_CDC_DataIn函数

2、USBD_CDC_DataIn这个函数中会将hcdc->TxState标志清零。不清零的话在USBD_CDC_TransmitPacket函数内部判断会不执行。所以导致数据发送不出去



wandeng123 发表于 2023-9-27 14:49:35

如果直接使用USBD_LL_Transmit函数发送数据的话倒也能发送出一些数据,只要加延时即可,但是数据量大的话还是会出现很多组数据发送失败的情况,而且很多数据包和上一组的一样,似乎在传递数据指针时没有赋值成功

wandeng123 发表于 2023-9-27 14:56:48

本帖最后由 wandeng123 于 2023-9-27 15:01 编辑

被这个问题给困住了现在,有哪位兄弟碰到过这种虚拟串口发不出去的情况吗

wandeng123 发表于 2023-10-9 09:47:01

问题解决了

data:image/png;base64,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
在发送数据的时候需要单字节发送,在发送完后循环等待USB HOST端确认消息。并且为了防止发送大量数据时出现没有接收到确认消息的bug,在发送之前加上一段强制置位hcdc->TxState状态。

wandeng123 发表于 2023-10-9 09:47:55

总之和复合设备没有关系{:16:}

eric2013 发表于 2023-10-9 09:53:01

wandeng123 发表于 2023-10-9 09:47
问题解决了




{:8:}

wandeng123 发表于 2023-10-24 16:50:52

更正下,上次并没有真正解决问题,在后期的使用中陆续还是会出现问题。
经仔细排查后发现是因为PC每隔1s会轮询一遍设备的虚拟U盘,导致USB设备指针切到了U盘模式。在这种情况下,如果虚拟串口正在发送数据的话,hcdc->TxState标志会被置1,使串口在发送前的判断标志出错,从而程序执行不下去
void MC_Switch_CDC(USBD_HandleTypeDef *pdev)
{
static USBD_CDC_HandleTypeDef cdc_handle;

        USBD_CDC_RegisterInterface(pdev,&USBD_CDC_fops);
        pdev->pClassData = &cdc_handle;
       
}
void usb_printf(char* fmt,...)
{
                uint16_t i,len;
                va_list ap;
       
                MC_Switch_CDC(&USBD_Device);                //每次发送前切换到CDC模式(串口),防止PC将设备切换到MSC模式(U盘)
                va_start(ap,fmt);
                vsprintf((char*)USART_PRINTF_Buffer,fmt,ap);
                va_end(ap);
                len=strlen((const char*)USART_PRINTF_Buffer);
               
                for(i=0;i<len;i++)
                {
                        USB_USART_SendData(&USART_PRINTF_Buffer);
                }
                SCB_CleanDCache_by_Addr((uint32_t *)USART_PRINTF_Buffer,i);
}


eric2013 发表于 2023-10-25 16:03:13

wandeng123 发表于 2023-10-24 16:50
更正下,上次并没有真正解决问题,在后期的使用中陆续还是会出现问题。
经仔细排查后发现是因为PC每隔1s会 ...

谢谢分享。

1350280419 发表于 2024-3-10 23:58:42

wandeng123 发表于 2023-10-24 16:50
更正下,上次并没有真正解决问题,在后期的使用中陆续还是会出现问题。
经仔细排查后发现是因为PC每隔1s会 ...

请问楼主最后解决了该问题吗?请教一下楼主,调用CDC_TransmitFS这个函数,只能在回环中发送,无法在main中发送数据。

小嵌 发表于 2024-4-12 10:38:48

eric2013 发表于 2023-10-9 09:53


楼主,请问使用ST H7,是不是可以做到让USB于虚拟串口模式(从机,用来收发数据),和U盘(用于写一些故障数据到U盘)之间切换呢?纯小白,

eric2013 发表于 2024-4-13 09:10:08

小嵌 发表于 2024-4-12 10:38
楼主,请问使用ST H7,是不是可以做到让USB于虚拟串口模式(从机,用来收发数据),和U盘(用于写一些故 ...

可以运行的时候动态切换。

小嵌 发表于 2024-4-15 15:07:10

eric2013 发表于 2024-4-13 09:10
可以运行的时候动态切换。

咱们硬汉有参考吗

eric2013 发表于 2024-4-16 08:51:17

小嵌 发表于 2024-4-15 15:07
咱们硬汉有参考吗

之前测试过可以,只是没有做参考例子。
页: [1]
查看完整版本: STM32H7:USB复合设备MSC+CDC,USBD_CDC_TransmitPacket函数发送不正常