数据通讯速率

数据通讯速率
常遇到一句话“数据通讯链路的数据传输速率为400kbit/s400千比特每秒”关于这句话的理解。数据通讯速录400k也就是很多人认为 400KHZ 每秒可以传400 000Byte这种表面上的理解是错误的实际上400kHz表示的是SCLSerial Clock串行时钟每秒产生400 000个时钟脉冲。I²C有两根线SCLClockSDAData其中SCL____ ____ ____ |____| |____| 一个高低变化 就是一个Clock400kHz表示每秒400000个Clock 不是400 000Byte一个时钟到底在干什么I²C规定每一个Clock只能传输1bit。例如发送 10100110需要Clock1 发送 1 Clock2 发送 0 Clock3 发送 1 ... Clock8 发送 0但是实际上IIC发送一个字节需要9个clock这就是ACK的作用I²C规定发送方发送完8bit以后不能立即发送下一个Byte。必须等待接收方告诉发送方我收到了。这个动作就是ACK。因此Byte 10100110 ↓ Clock 1 2 3 4 5 6 7 8 ↓ 数据发送完成 ↓ 第9个Clock ACKACK全称Acknowledge中文应答、确认ACK由接收方产生概念含义400kHzSCL 每秒产生约400000个时钟脉冲不是400000 Byte/s1个Clock最多传输1 bit数据1 Byte等于8 bit数据ACKAcknowledge接收方在第9个时钟把SDA拉低表示这一字节已正确收到可以继续发送NACKNot Acknowledge接收方不拉低SDA保持高电平表示没有收到或不再接收1 Byte传输通常需要8个数据时钟 1个ACK时钟 9个时钟周期400kHz理论最大数据率约400000 ÷ 9 ≈44.4 KB/s未计入START、地址、STOP等协议开销实际可用数据率通常约3542 KB/s取决于每次传输的协议开销和数据长度1、bit和Bbyte的区别通讯速率一般使用bit 比特 通讯领域常用单位Byte 字节 存储领域常用单位2、如何判断数据传输速率是否够用2.1 如果仅考虑有效数据带宽假设我传输四种类型的数据协议帧头单帧大小Byte发送频率Hz每秒发送帧数每秒数据量Byte/s每秒数据量KB/s每秒数据量kbps第一种0x55 0x010x55 0x019220201,8401.8014.72第二种0x55 0x020x55 0x025620201,1201.098.96第三种0x55 0x030x55 0x03551001005,5005.3744.00第四种0x55 0x040x55 0x046410106400.635.12合计---150 帧/s9,100 Byte/s8.89 KB/s72.80 kbps汇总结果项目数值每秒总发送帧数150 帧/s每秒总数据量9,100 Byte/s每秒总数据量8.89 KB/s每秒总传输速率72.80 kbps通信链路速率400 kbps带宽占用率18.2%2.2 考虑ACK四类数据总有效载荷约72.8 kbps考虑I²C ACK 的话每传输一个字节增加一个bit的ACK 819。因此72.8 kbps 实际变成72.8×9/881.9kbps新的占用81.9/40020.5%2.3 考虑完整的IIC协议2Byte Address 1Byte Register 20Byte Data ACK START STOP整个协议一般增加5%15%取10%那么实际带宽81.9×1.190kbps