打印

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

[复制链接]
3619|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

主题

781

帖子

1

粉丝