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

[复制链接]
2445|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,主机直接读不到 ...

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

评论

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

本版积分规则

14

主题

144

帖子

5

粉丝
快速回复 在线客服 返回列表 返回顶部