您尚未登录。

楼主 # 2022-01-16 21:07:01

echo
会员
注册时间: 2020-04-16
已发帖子: 359
积分: 364.5

一个GD32E103的USB硬件bug

使用某个双向端点来通讯,比如端点2,我们记为EP2_OUT和EP2_IN,分别处理主机的OUT和IN请求。设备收到主机OUT请求以后,应答ACK,然后设置EP2_OUT的TF中断标志,中断延迟大约6us或者更少一些。

如果在6us中断延迟时间内没有EP2_IN的IN请求,或者即使有IN请求,设备EP2_IN没有准备好,应答NAK,那一切正常。我的应用中实际测试EP2_OUT响应ACK以后,大约0.6us以后主机就会发送IN请求,刚好落在6us的中断延迟时间内。这时候如果设备EP2_IN端点准备好,那么就开始响应EP2_IN请求,给主机发送数据,发送完成主机应答ACK,触发EP2_IN的TF中断标志,正常触发中断,这个中断会把它前面EP2_OUT的中断标志冲掉,导致丢失前面的EP2_OUT传输完成中断。

usb的固件库代码我看过是可以同时处理同一个端点OUT和IN两个TF中断标志的,所以问题大概率在USB硬件。目前该问题还未得到官方确认。这个问题在USB实际通讯速率不高的问题,极少出现,大流量的通讯的时候会出现,概率几十万分之一吧,没有什么规律,所以定位起来十分困难。

离线

#1 2022-01-17 11:41:38

le062
会员
注册时间: 2019-02-07
已发帖子: 73
积分: 68.5

Re: 一个GD32E103的USB硬件bug

现在这种知名度稍高的单片机基本是供货、价格双不稳,搞它干嘛呢。
用SOC,如ESP32-S2,BL702啥的。

离线

楼主 #2 2022-01-17 12:31:14

echo
会员
注册时间: 2020-04-16
已发帖子: 359
积分: 364.5

Re: 一个GD32E103的USB硬件bug

le062 说:

现在这种知名度稍高的单片机基本是供货、价格双不稳,搞它干嘛呢。
用SOC,如ESP32-S2,BL702啥的。

因为它有USB和两路CAN

离线

#3 2022-01-17 12:55:44

Rsestudio
会员
注册时间: 2022-01-17
已发帖子: 2
积分: 2

Re: 一个GD32E103的USB硬件bug

该评论内容与本帖子无关,鼓励各位坑友积极发言讨论与帖子有关的内容!

离线

  • 不通过:其他

页脚

工信部备案:粤ICP备20025096号 Powered by FluxBB

感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信(wechat): whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn