硬汉嵌入式论坛

 找回密码
 立即注册
查看: 50|回复: 2
收起左侧

求助:使用USB传输数据一段时间后能正常运行但是不会再上发数据

[复制链接]

2

主题

6

回帖

12

积分

新手上路

积分
12
发表于 3 天前 | 显示全部楼层 |阅读模式
尝试过两种程序都会出现这种问题:使用USB传输数据一段时间后能正常运行但是不会再上发数据,都是基于正点原子水星开发板,主控为STM32H743iit6进行测试
使用的是PB14/PB15的HS,上发速率是10ms上发331个字节,同时1s上位机下发一个需要回复的包,10字节以内比较短

1、正点原子的USB虚拟串口
调试发现是USBD_CDC_TransmitPacket函数中,hcdc->TxState一直为1导致无法调用到USBD_LL_Transmit以进行发送,而是返回USBD_BUSY,然后调试确定是……\HALLIB\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_pcd.c中431行的if(__HAL_PCD_GET_FLAG(hpcd, USB_OTG_GINTSTS_IEPINT))一直进不去,进而hcdc->TxState一直为1,无法置为0再次进行发送

通过强制复位USB可以短暂解决问题,但是过了一段时间(大概30~60分钟)后就有两种情况出现,一种是能正常运行程序但是调用USB数据发送函数不会发送数据,另一种是虚拟串口一直闪烁,一会连接一会断开。

2、CherryUSB
基于CherryUSB例程中的stm32h743vbt6,添加了DMA,然后可以正常的发送接收数据,但是传输一段时间后(大概3分钟)卡死,找到后发现是usbd_core.c中USB_LOG_ERR("ep:%02x clear halt\r\n", ep);这一句,无法正常printf导致的,但是注释本句后出现上述问题,能正常运行但无法上发数据,测试时发现是可以接收数据但是调用usbd_ep_start_read无法上传

回复

使用道具 举报

2

主题

6

回帖

12

积分

新手上路

积分
12
 楼主| 发表于 3 天前 | 显示全部楼层
最后那个是usbd_ep_start_write,不是usbd_ep_start_read,粘错了
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
116121
QQ
发表于 前天 09:23 | 显示全部楼层
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-6-8 12:05 , Processed in 0.220944 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表