通信总线传输速率计算
1. uart 、can 、SPI通信速率比较
baud | 1/baud(s/bit) | 传输1byte数据 | 10bit 传输时间 | 数量级 | 吞吐量 |
---|---|---|---|---|---|
115200 | 0.00868ms | 10bit | 0.09ms | 0.1ms | 115k |
9600 | 0.10417ms | 10bit | 1.04ms | 1ms | 9.6k |
500k | 0.002ms | 0.02ms | 0.02ms | 500k | |
1M | 0.001ms | 0.008ms(8bit) | 0.01ms | 1M |
数量级为方便计算会取整。
uart传输1byte数据需要: 数据8bit+停止位2bit=10bit
- 1M的SPI 传输速度,大约是115200的uart的10倍
- 500k的can 传输速度,大约是115200的uart的5倍
- 500k的can 传输速度,大约是9600的uart的50倍
- 115200的uart传输速度,是9600的uart的12倍
协议举例一
假如协议头占2个字节,协议尾(校验)占1个字节。传输一个字节的数据,实际要有4个字节传输。(uart)加上停止位,共4*10bits需要传输。此时(按10bit一个字节来算,为方便与uart对比):
- 115200 uart 传输时间:0.4ms
- 9600 uart 传输时间:4ms
- 500k can 传输时间: 0.08ms
- 1M SPI 传输时间: 0.04ms
协议举例二
假如协议头占2个字节,数据长度占2个字节,数据最小1个字节,最大1024字节,协议位(校验位)占一个字节。
传输一个字节的数据,实际要有6个字节传输。uart加上停止位,共610bits需要传输。spi方式共68bits传输。此时:
- 115200 uart 传输时间:0.6ms
- 9600 uart传输时间:6ms
- 500k can传输时间:0.12ms
- 1M SPI传输时间:0.06ms
在传输1个字节数据的基础上,数据每多一个字节,传输时间增加对应一个数量级。
该协议,传输时间用时1ms的数据包,包含的数据字节数大约为:
- 115200 uart:5个
- 9600 uart:6ms才传1个包含一个字节数据的数据包
- 500k can:45个byte数据
- 1M SPI:95个byte数据
衡量系统的实时性用响应时间、吞吐量、生存时间三个指标。
2. USB 带宽和速度
- 理论值:USB2.0的带宽是480MB/S, 大约每秒中可以传输60MB的数据
- USB2.0接口的实际极限写入速度在25M/S左右,读速度在35M/S左右。而一般的U盘写入在10M左右,读在20M左右。
不同USB规范的理论速度
USB1.1:
- 低速模式(low speed):1.5Mbps
- 全速模式(full speed): 12Mbps
USB2.0:向下兼容。增加了高速模式,最大速率480Mbps。 - 高速模式(high speed): 25~480Mbps
USB3.2:向下兼容。 - super speed :理论上最高达4.8Gbps,实际中,也就是high speed 的10倍左右。
3. I2C总线
半双工,只有2根线。数据线和时钟线。
- 标准速度:100kbps
- 快速模式:400kbps
- 高速模式:3.4Mbps