STM32 USB发送又一奇怪问题...

[复制链接]
4258|3
 楼主| Swd21ic 发表于 2010-3-30 14:51 | 显示全部楼层 |阅读模式
本帖最后由 Swd21ic 于 2010-3-30 16:45 编辑

程序中使用USB CDC的方式与上位机通讯..用的是标准的那个usbser.sys文件

每次发送64字节包后死等一个全局标志位.. 在发送端点回调函数里面清除这个标志位,以证明数据发送成功. 然后再发下一个64字节.. 直到所有数据发送完成.

在死等的时候做了一个超时的机制. 如果发生了超时则认为USB被拔掉了.

发现一个奇怪的问题.

当使用串口助手打开串口接受板卡USB发送的数据时, 无论发送多少数据都不会有问题.

一旦关掉串口或者在插上USB后根本就不打开串口. 那么间隔一段时间(跟发送数据量大小有密切关系)后的一次发送中.就会发生超时. 也就说主机在既定的时间内没有应答.

现在看上去很像是PC机上有一个缓冲区,如果不打开串口助手读取数据的话,缓冲区一旦接受满了后就不允许下面发送数据了.. 我根据自己的数据量和测量的时间计算了一下.大概时13KB的样子..

大家有没有晓得这个问题的?..谢谢
ShakaLeo 发表于 2010-3-30 16:43 | 显示全部楼层
这应该跟PC机上的USB虚拟串口的驱动程序有关系。
 楼主| Swd21ic 发表于 2010-3-30 16:46 | 显示全部楼层
那个是用的标准的usbser.sys噢...   只是搞了个inf文件.

大家有遇到的说下哈
ShakaLeo 发表于 2010-3-30 16:52 | 显示全部楼层
标准的usbser.sys也有缓冲区大小的限制,不可能无限制地存储吧。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

71

主题

780

帖子

1

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