在线时间2229 小时
UID3253523
注册时间2016-3-21
NXP金币3507
该用户从未签到
超级版主
 
- 积分
- 25374
- 最后登录
- 2025-9-2
|
发表于 2016-8-26 10:03:08
|
显示全部楼层
楼主你好!
从其他地方看到一些对这个问题比较合理的说法,在此罗列出来:
1:
虚拟串口里面,不存在波特率的概念,虚拟串口中的波特率只有在用于USB转串口的时候才会用到,设置了虚拟串口的波特率之后,在打开虚拟串口的时候,USB包里面会有一个控制命令,告知电脑设置的波特率是多少,如果你是要做usb转串口的应用,则在这个时候,初始化你的串口比较合适,如果你不是转串口,那么可以直接无视。
另外,WINDOWS平台下的IO读写速度,取决于设备本身的读取速度(即和USB硬件和驱动有关),排除使用了很挫的驱动和硬件的情况下,虚拟串口的速度理论上为USB的速度。
但是,实际使用过程中,IO读写的效率也有很大关系。
i = 100;
while(i--)
{
writefile(file, buf, 1);
}
和
writefile(file, buf, 100);
这两个在实际使用中的速度,就会差别很大。因此,如果想要获得较大的传输速度,一次性写入IO的内容需要大一些,否则效率低下,速度上不去
楼主可以实测一下,不管是直接写程序还是用串口调试助手,一次性写入不同长度的数据,将会很影响速度。
2.
MCU向PC发送的是USB协议的数据包,跟串口没有一毛钱的关系。。。
PC端的USB接口收到USB协议的数据包后,由驱动程序来解包并放入操作系统的串口缓冲区里,这样,串口助手类的工具就能够从缓冲区里读到数据,串口助手就认为是有 uart数据到来了。
我刚才说的,是指PC的uart受到串口助手的波特率限制时如何摆脱这个限制,跟usb没关系。
3.
你可以自己动手测试一下,别人也都是自己测试出来的。
只能说跟波特率依然没有关系,瓶颈在1.windows驱动的好坏 2.MCU对usb处理能力 3.你所用的传输线质量 4.stm32拿到数据后是否要做耗时的工作 5.pc主板所用usb芯片的质量 6.软件组织是否合理 等
4.
前些时间研究过USB的HID类和CDC类,结论是USB1.1虚拟串口的速度很快,PC端用起来很简单甚至不需要专门的驱动(用系统默认驱动),就可以简单的达到600~800K字节/S 差不多相当于串口5~7M波特率,而且稳定可靠(几乎没有误码),当然这一切是在你两边程序充分发挥USB批量传输的优势的基础上,不然也就10~50K字节/S
希望上面一些网友的回复能够对你有帮助。
上位机的波特率不应该是固定的,应该是可以调节的,具体你要去看你的上位机情况了。
|
|