IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> USB虚拟串口(CDC)极限速度测试 -> 正文阅读

[嵌入式]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字节时会出现严重的丢数据问题,这个应该跟上位机读取操作和换种数据大小等因素有关系.

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2022-06-29 19:16:14  更:2022-06-29 19:16:47 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年4日历 -2024/4/20 14:51:36-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码