前几天用upsd3434+MMC卡模拟实现U盘功能,端口配置是MASS STORAGE。
但是数据由单片机上传到计算机时有数据包误重发现象。
仔细阅读该单片机的pdf文档,发现如下Important notes:
Erroneous resend of data packet
When a data packet is sent the respective IN FIFO busy bit is not automatically cleared by
the USB SIE. This can cause a data packet to be erroneously resent to the host in response
to an IN PID immediately after the first correct transmission of this data packet.
??????
多次测试发现FIFO的busy位在每个包成功发送后,多数情况会自动清零,但是有时候则不会,正是它没有清零导致了前一个包的重发。 文档的推荐用法是每次发送完后无条件的手动清零,不过好像效果不是很明显,有时还是会出现误重发的情况。最后害得我只要检测到BUSY位没有自动清零就得RESET一次,很是郁闷,速度慢了很多
请问有没有遇到类似情况的朋友?怎么解决啊? |