波特率、比特率,传输速率,通信速度怎么区分?
首先有几个概念:比特率,波特率,传输速率,通信速度。
比特率:是指每秒传送的比特(bit)数。单位为 bps(Bit Per Second),比特率越高,每秒传送数据就越多。
波特率:表示每秒钟传送码元符号的个数,是衡量数据传送速率的指标,一个符号可能含多个比特。在信息传输通道中,携带数据信息的信号单元叫码元,每秒钟通过信道传输的码元数称为码元传输速率,简称波特率。波特率是传输通道频宽的指标。
传输速率:传输速率是一种泛指,指的是数据从一点向另一点传输的速率,用户实际可用的数据吞吐量,需扣除协议开销(地址、ACK等)。也就是包含上面的比特率、波特率等。
通信速度:通信速度和传输速度同样也是一种泛指。比如I²C通信速度400KHz,SPI最大通信速度支持150Mbps,指的是时钟的频率,仅仅是一个硬件参数。
以我们常用的I2C场景为例,速率400KHz;
比特率
I2C的比特率是400K,因为I2C的每个周期指传输一个数据(在SCL稳定期间读取SDA上的数据);
波特率
I2C由属于NRZ编码,1符号=1比特,所以比特率=波特率,I2C的波特率=400K;
传输速度
I2C的数据包为:1个起始位 + 7位地址 + 1位读写标志 + 1位ACK + 8位数据 + 1位ACK + 停止位(不占位)=19位,也就是19位中只有8为数据位,所以速率:8/19*400K=168Kbit/s(约21KB/s);
通信速度
I2C的的CLK频率是400K,这个就是I2C的通信速度。
下面看看我们经常用的串口波特率数据,以常用的115200为例。
波特率:
波特率115200 = 115200 bit/s
以最普通的串口(起始位+8位数据+停止位)为例,合计共10位,所以波特率115200 = 115200 (bit/s) = 11520 (Byte/s)
再除以 1024,就是每秒 KB 数:
波特率115200 = 115200 (bit/s) = 11.25 (KB/s)
如果有一位奇偶校验位,就应该是11位,得到的是每秒字节数
波特率115200 = 115200 (bit/s) = 10.27 (KB/s)
所以波特率的数据量就要按照数据结构来计算、另外我们只是讨论了这种二进制环境下的波特率。