STM32USB发送又一奇怪问题...

ljxh401   2010-3-30 14:51 楼主


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

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

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

发现一个奇怪的问题.

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

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

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

大家有没有晓得这个问题的?..谢谢

回复评论 (3)

                                 这应该跟PC机上的USB虚拟串口的驱动程序有关系。
点赞  2010-3-30 16:43
那个是用的标准的usbser.sys噢...   只是搞了个inf文件.

大家有遇到的说下哈
点赞  2010-3-30 16:46
                                 标准的usbser.sys也有缓冲区大小的限制,不可能无限制地存储吧。
点赞  2010-3-30 16:52
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复