完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
电子发烧友论坛|
我在 STM32F745 上的 USB 复合设备出现间歇性问题,端点无法将数据发送回 PC,然后 PC 重置连接。
我已经应用了中断禁用 确实有所改善,但并未修复。 我的代码来源于ST的示例代码。 在正常操作中,PC 会定期使用“测试单元就绪”命令查询 MSC。CDC 以每秒约 150 个有用数据包的速度全速传输。 在随机时间段(几分钟到几小时之间)后,USB 发送功能无法将数据添加到 IN FIFO。 此行失败: 如果 ( ((USBx_INEP(ep)->DIEPCTL & USB_OTG_DIEPCTL_EPENA) == 0) && ((USBx_INEP(ep)->DTXFSTS & USB_OTG_DTXFSTS_INEPTFSAV) >= len32b) ) { 因为 EPENA 已设置。 我的代码之前只是忽略了这一点,并希望主机再次请求数据。但是,当测试单元就绪命令失败时,主机会在大约 30 秒后重置 USB 连接,这会破坏我的 CDC 数据。 此外,一旦发生这种情况,它会继续每 30 秒重置一次,因为 MSC 再也不会工作了——端点似乎坏了。调试器中的设备重置会将其清除。 我尝试添加代码进行短暂等待并重试(无效果),还尝试设置 EPDIS,然后检查 DIEPINT_EPDISD,但似乎从未设置过。 客户有直接清除 EPENA 位的代码- 这行得通吗?数据表只提到核心清除位。 EPENA 钻头“卡住”的原因是什么?为什么不设置 DIEPCTL_EPDIS 位来清除它? 还有其他想法吗? |
|
相关推荐
1个回答
|
|
|
我_think_我现在实际上已经解决了这个问题。我的 FIFO 设置错误(自 2018 年以来一直如此)。我的最小测试代码现在已经运行了 20 小时。
如果您设置的 FIFO 超出 USB RAM 区域,HAL_PCDExSetTxFifo 代码不会执行任何错误检查或提供返回代码。我试图以字节而不是单词来设置它们。我开始的示例代码没有解释这些数字。当我 100% 确信我已经解决了它时,我将发布一个带有注释的固定代码示例,这些注释可能会帮助其他人在未来绊倒这篇文章。 |
|
|
|
|
只有小组成员才能发言,加入小组>>
stm32mp157的异核通信的rpmsg_sdb的m4固件和a7驱动该如何编写?
1453 浏览 0 评论
stm32f103用freertos对一个采样率为1kHz的传感器,进行采样,数据出差
1502 浏览 0 评论
请教:在使用UDE STK时,单片机使用SPC560D30L1,在配置文件怎么设置或选择?里面只有SPC560D40的选项
3649 浏览 1 评论
3842 浏览 1 评论
请问是否有通过UART连接的两个微处理器之间实现双向值交换的方法?
2461 浏览 1 评论
STM32H7打开DCache后,出现了串口接收信息为空的现象,是哪里出了问题?
727浏览 5评论
用NANO STM32F103RBT6的开发板烧录不了是哪里出了问题?
663浏览 5评论
710浏览 5评论
外部中断触发类型为双边沿触发,进入中断回调后有什么办法判断该边沿是上升沿还是下降沿?
941浏览 5评论
STM32L071CBT6低温环境下无法正常工作是什么原因引起的?
745浏览 5评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-2 09:51 , Processed in 0.682502 second(s), Total 74, Slave 57 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
497