瓶颈在
1.windows驱动的好坏
2.stm32对usb处理能力
3.你所用的传输线质量
4.stm32拿到数据后是否要做耗时的工作
5.pc主板所用usb芯片的质量
6.软件组织是否合理 等
虚拟串口里面,不存在波特率的概念,虚拟串口中的波特率只有在用于USB转串口的时候才会用到,设置了虚拟串口的波特率之后,在打开虚拟串口的时候,USB包里面会有一个控制命令,告知电脑设置的波特率是多少,如果你是要做usb转串口的应用,则在这个时候,初始化你的串口比较合适,如果你不是转串口,那么可以直接无视。
另外,WINDOWS平台下的IO读写速度,取决于设备本身的读取速度(即和USB硬件和驱动有关),排除使用了很挫的驱动和硬件的情况下,虚拟串口的速度理论上为USB1.1的速度。
但是,实际使用过程中,IO读写的效率也有很大关系。
i = 100;
while(i--)
{
writefile(file, buf, 1);
}
和
writefile(file, buf, 100);
这两个在实际使用中的速度,就会差别很大。因此,如果想要获得较大的传输速度,一次性写入IO的内容需要大一些,否则效率低下,速度上不去
楼主可以实测一下,不管是直接写程序还是用串口调试助手,一次性写入不同长度的数据,将会很影响速度。
STM32F4串口的波特率实测【多图】
http://forum.eepw.com.cn/thread/240529/1/
挺有意思的测试,图太多了,自己看吧。
结论就是:波特率是脉冲频率的二倍。一个波形一秒钟发送的次数是多少波特率就是多少。比如波特率是9600时候,测得的脉冲宽度是1/9600=104.2us,波形频率是4.8k。