"); //-->
来源:公众号【鱼鹰谈单片机】
作者:鱼鹰Osprey
ID :emOsprey
今天鱼鹰简单聊聊 STM32F103 USB 外设实际传输速度的问题。
103 的外设号称 USB 2.0,但实际上是全速的 USB 2.0,即传输 1 bit 数据的速度是 12Mbit/s,类似串口波特率 115200 的概念。
但是我们知道串口协议本身也是有开销的,比如 1 bit 起始位,1 bit 停止位,这都是必须的,否则接收方就无法正确接收。
下图是 8 位数据情况下的传输波形图(来源STM32官方手册)

所以上述情况下,115200 波特率换算字节单位,实际传输速度为 11.52KB/s ,注意这里的 B 是大写,代表字节 Byte,小 b 代表位 bit,这里面的区别很大,别被忽悠了。
比如 10 M 网速宽带,一般说的是 bit 单位,所以实际传输大概在 1 MB 左右。
说回 USB 的话题,STM32F103 搭载的 USB 外设支持 2.0 协议,但是 2.0 协议也分两种,一种是 全速 版本,即 USB1.1 , 12 Mb/s,另外一种是 高速 版本,480 Mb/s,而 103 只支持全速模式。
F4系列在增加外部 USB PHY 芯片才可以达到高速,否则也只能以全速的方式工作。
那么 F103 的 USB 真实传输速度可以达到多少呢?
首先说说为什么想得到这个值,有些产品要求速率很高,必须 1 s 传输 1 M字节的传输速度(1 MB/s)才行,但为了降成本,使用了 103 的芯片,认为全速 12 Mb/s 的速度怎么也够了吧,殊不知,这里的速度单位是 bit,还没考虑 USB 协议的开销。
所以当你绞尽脑汁优化代码,你都无法达到这个目标,因为它的理论值只有 12/8 = 1.5 MB/s ,可能你会说,这也够了啊?
但是 USB 本身是有协议开销的,就像串口有开始、停止位一样,USB 也有令牌包、数据包、CRC校验之类的开销,还有一次传输事务的结束,一般会间隔一小段时间再进行下一次传输,还有协议中也会 1 ms 发送一次帧号。

上图是鱼鹰弄的 USB 双缓冲传输波形(一个白块代表了一次传输事务),我们可以看到,每传输一个数据包之后都会停顿一段时间,而每一次事务里面也不全包含了用户数据,这些用户数据被封装在 USB 协议包里面。
所以,对于用户来说,实际传输速度远远不到 1.5 MB/s,估计就 1 MB/s(最为理想情况下,即不浪费每一次 IN OUT 令牌包的机会,另外 USB 总线上只有一个设备需要传输数据才可能达到),而如果在数据传输过程中,还加入了上层协议,比如 模拟 U 盘,里面会加入协议,速度就更低了。
所以,为了尽可能达到接近 1 MB/s 的用户数据传输速度,可以使用如下方式:批量传输 + 双缓冲 + 环形缓冲(比如 SD 卡的数据可以在 USB 传输时同步写入 FIFO 中)。尽可能的利用带宽。
在鱼鹰测试模拟 U 盘的性能时,发现传输速度可以稳定在 700 KB /s 以上(单向)。而如果没有 U 盘协议本身开销和加大代码优化(即不浪费 IN 、OUT 令牌包),估计能到 900 KB/s,刚好模拟串口就没有多少协议开销,到时候可以测试一波数据。
专栏文章内容及配图由作者撰写发布,仅供工程师学习之用,如有侵权或者其他违规问题,请联系本站处理。 联系我们
相关推荐
用AT89C2051单片机实验合弦乐
《ATmega8原理及应用手册》
5V 单片机与5V 耐压单片机有何区别,为什么至关重要
双芯智控革命:IGBT与单片机如何重塑智能微波炉
16位语言函数工具库
瑞萨RA0单片机连载——面向对象编程之SHT31温度计
MSP430x2xx4xx系列
超低功率高性能新一代产品MSP430F5xx
AVR 单片机专栏,资料下载!
功率监测与控制系统DIY——搭建环境,定时器翻转LED
Microchip发布PIC16F17576单片机(MCU)系列,简化模拟传感器设计
AVR 单片机专栏,资料下载!之二
倾情奉献:MSP430汇编指令集(中文),详解带实例!
《AVR单片机C语言库》
语音合成芯片T6668和单片机8031的接口电路图
车规级MCU介绍
创维数码5000系列彩电开关电源(AN单片机)电路
介绍采用 nanoWatt XLP技术的超低功耗系列单片机
GD32E230F6V6实用指南:为下一个项目选择合适单片机
MSP430单片机TIMER_A在产品设计中的应用
单片机语言C51应用实战集锦
瑞萨单片机技术概述
Microchip推出集成高性能模拟外设的32位PIC32A单片机
MSP430 电表解决方案
瑞萨RA0单片机连载——PWM实现呼吸灯
长虹R2118A型彩电开关电源(LA单片机)电路
用单片机制作的纯正弦波逆变电源电路
[转帖]从Cygnal C8051F看8位单片机发展之路
利用PIC12C508单片机来实现加密狗技术[转帖]
新手必看的单片机知识