打印

GD32F107 USB DEVICS通信时TXFIFO数据如何清除

[复制链接]
2111|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
20062516|  楼主 | 2021-2-24 09:40 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
背景:USB设备不能直接操作USB总线,只有USB主机许可才行。USB主机是PC端软件,USB设备是自定义的一个设备,通信过程是:USB主机发送获取设备状态的指令,USB设备回复设备的状态。但如果USB设备超时才回复一个状态,USB主机超时退出,则接收不到状态帧。

则此时USB设备TXFIFO中一直缓存着这一帧,下次USB主机再发送一帧获取状态帧后,USB设备会马上将之前缓存在TXFIFO中的数据应答到USB主机上。这样的状态帧并不是当前的状态。

使用特权

评论回复
沙发
sonicll| | 2021-2-24 09:50 | 只看该作者
有flush TXFIFO的函数,试试看

使用特权

评论回复
板凳
20062516|  楼主 | 2021-2-24 10:31 | 只看该作者
sonicll 发表于 2021-2-24 09:50
有flush TXFIFO的函数,试试看

测试再每次向上位机发送数据前调用uint32_t  PCD_EP_Flush (uint8_t ep_addr)清空TXFIFO,主机直接读不到数据了超时错误了

使用特权

评论回复
地板
corerocky| | 2021-11-5 15:38 | 只看该作者
20062516 发表于 2021-2-24 10:31
测试再每次向上位机发送数据前调用uint32_t  PCD_EP_Flush (uint8_t ep_addr)清空TXFIFO,主机直接读不到 ...

老哥,这个问题解决了吗?我也碰到了这个问题,查了一个月了,还是不行

使用特权

评论回复
评论
20062516 2021-11-11 10:02 回复TA
我之前用的GD的F107VE,用ST的库不能枚举USB,后来换成GD官方提供的库就可以枚举USB设备了,但是就是会出现上面说的那种情况,也是一直没解决,后来还是选用ST的F107VE用了,就没这个问题,我想这应该是GD的一个软件BUG吧,FAE一直没有给答复,如果你那里有结果也请通知一下我 
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

14

主题

133

帖子

4

粉丝