USB虚拟串口(CDC)极限速度测试 您所在的位置:网站首页 usb30测速软件 USB虚拟串口(CDC)极限速度测试

USB虚拟串口(CDC)极限速度测试

2023-08-25 22:35| 来源: 网络整理| 查看: 265

一直以来,想搞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 实验室设备网 版权所有