USB虚拟串口(CDC)极限速度测试 | 您所在的位置:网站首页 › usb30测速软件 › USB虚拟串口(CDC)极限速度测试 |
一直以来,想搞USB虚拟串口,这东西不是一般的方便,是特别方便,最近本人在调试USB虚拟串口的时候一直有一个迷惑,USB虚拟串口的传输速度到底能做到多少,网上查找没有找到一个具体明确的数据.于是本人亲自测试,相信得到的结果能说明一些问题,现将测得的数据与大家分享. 本人使用的是国民技术N32G4FR系列芯片描述如下: N32G4FR系列采用 32 bit ARM Cortex-M4F内核,最高工作主频144MHz,支持浮点运算和DSP指令, 集成多达512KB 加密存储Flash, 可用于安全存储指纹信息, 144KB SRAM, 2x12bit 5Msps ADC, 2x1Msps 12bit DAC, 支持多达18通道电容式触摸按键, 集成多路U(S)ART、 I2C、 SPI、 QSPI、 USB、 SDIO、 CAN通信接口, 同时集成数字视频(DVP)接口, 支持主流的半导体指纹及光学传指纹感器, 内置 密码算法硬件加速引擎USB特征如下: N32G4FR系列产品内嵌一个兼容全速USB的设备控制器,遵循全速USB设备(12Mbit/秒)标准,端点可由软件配置,具有待机/唤醒功能。 USB专用的48MHz时钟由内部主PLL直接产生(为保证通信稳定性, 时钟源必须是HSE外部高速晶体)。 测试方法: 1.使用官方给的USB虚拟串口例程修改而来.将不必要的内容去掉.将USB的端点1作为主机接收. 2.其实网上也看到很多测是USB虚拟串口速度的内容,好像更多的是使用软件来测试的.经过分析发现此类方式受限于操作系统,和串口软件等方面影响,所以本人采用示波器测是USB状态的方式进行. 3.将USB例程里面的端点1IN回调函数增加一个IO口跳变. 从机端点1的发送函数如下: USB枚举发送接收端点数据包大小都配置为64字节: 上位机测试使用的软件为SSCOM V5.13.1串口波特率设置为1500000: 测试一:USB发送数据包大小:30 包数量1024 函数如下: 串口调试软件接收到的数据正确: 示波器表笔测试跳变IO口持续时间为56.3ms 如下图: 结论1:USB发送数据包大小:30 包数量1024 总发送字节数为30KByte,所使用的时间是56.3ms 最终的数据传输速度是532.8KByte/S 测试二:USB发送数据包大小:30 包数量2048 函数如下:
串口调试软件接收到的数据正确: 示波器表笔测试跳变IO口持续时间为103.8ms 如下图: 结论二:USB发送数据包大小:30 包数量2048 总发送字节数为60KByte,所使用的时间是103.8ms 最终的数据传输速度是578.03KByte/S 测试三:USB发送数据包大小:30 包数量10240 函数如下: 串口调试软件接收数据错误,经过分析,个人认为这个串口调试软件无法做到短时间大数据接收功能,应该是操作系统接收到了这么多数据,调试软件无法及时的读取缓冲区中的数据,造成数据丢失: 示波器表笔测试跳变IO口持续时间为541ms 如下图: 结论三:USB发送数据包大小:30 包数量10240 总发送字节数为300KByte,所使用的时间是541ms 最终的数据传输速度是554.52KByte/S 测试四:USB发送数据包大小:30 包数量20480 函数如下: 串口调试软件接收数据错误 示波器表笔测试跳变IO口持续时间为1082ms 如下图: 结论四:USB发送数据包大小:30 包数量20480 总发送字节数为600KByte,所使用的时间是1082ms 最终的数据传输速度是554.52KByte/S 测试五:USB发送数据包大小:60 包数量512函数如下: 串口调试软件接收到的数据正确: 示波器表笔测试跳变IO口持续时间为35.5ms 如下图: 结论五:USB发送数据包大小:60包数量512总发送字节数为30KByte,所使用的时间是35.5ms 最终的数据传输速度是845.07KByte/S 测试六:USB发送数据包大小:60 包数量1024函数如下: 串口调试软件接收到的数据正确: 示波器表笔测试跳变IO口持续时间为70ms 如下图: 结论六:USB发送数据包大小:60包数量1024总发送字节数为60KByte,所使用的时间是70ms 最终的数据传输速度是857.14KByte/S 测试七:USB发送数据包大小:60 包数量5120函数如下: 串口调试软件接收数据错误 示波器表笔测试跳变IO口持续时间为353ms 如下图: 结论七:USB发送数据包大小:60包数量5120总发送字节数为300KByte,所使用的时间是353ms 最终的数据传输速度是849.85KByte/S 测试八:USB发送数据包大小:60 包数量10240函数如下: 串口调试软件接收数据错误 示波器表笔测试跳变IO口持续时间为674ms 如下图: 结论八:USB发送数据包大小:60包数量10240总发送字节数为600KByte,所使用的时间是674ms 最终的数据传输速度是890.20KByte/S 总结: 测试包大小(Byte)包数量发送总字节数消耗时间(ms)速度(Kbyte/S)一30102430KByte56.3532.8二204860KByte103.8578.03三10240300KByte541554.52四20480600KByte1082554.52五6051230KByte35.5845.07六102460KByte70857.14七5120300KByte353849.85八10240600KByte674890.2在嵌入式开发中USB虚拟串口数据传输中: 1.传输速度基本可以做到500KB/S~900KB/S的量级. 2.传输速度与上位机软件或操作系统有关系. 3.尽量使用大包数据传输,这样可以把USB的通讯速度发挥到极致. 疑问: 1.在测试过程中,我的端口数据包的长度设置为64字节,但是我使用包大小为64进行通讯测试时会出现严重的丢数据情况,在网上查询说是要在64字节包数据发送完成后加一个0数据包发送才行,最终只是了解了一下没有深究,最大包数量采用60字节进行测试. 2.串口调试软件总得来说是挺强大的,在单次100K字节的传输过程中没有什么问题,档数据大于100K字节时会出现严重的丢数据问题,这个应该跟上位机读取操作和换种数据大小等因素有关系. |
CopyRight 2018-2019 实验室设备网 版权所有 |