一、物联网中常用的通信协议
每一种通信协议的出现都是为了解决特定场景下的通信问题。这里的通信场景需要综合考虑:通信距离、通信速度、抗干扰能力以及是否有线通信。
IIC是为了与低速设备通信而发明的,所以IIC的传输速率比不上SPI。
二、通信基础知识
2.1串行通信与并行通信
并行通信中数据一次8bit,串行通信中数据一次1bit。
2.2传输方向:单工、半双工、全双工
2.3通信方式:异步通信、同步通信
2.3.1异步通信
DHT11和超声波模块为异步通信。
- 首先主控拉低信号(粗黑线),表示:“我要接受温湿度信号”;
- DHT11接受到该信号就返回自己信号,由主控去读取。其中每一段时序都有严格的规定(如图),只需要按照规定时长去读取数据就可以读出。
- 当DHT11将数据发送给主控后,DHT11就不管这段数据了,至于读出什么样的数据由主控自行控制。
但是存在问题:主控读取数据过程中来了一个优先级更高的中断,主控需要处理该中断,主控处理回来之后中断返回,该处理中断的时间中的数据主控无法读取,所以就出现了一段空白期,数据已经错过了。
2.3.2同步通信
三、IIC基础知识
3.1定义
llc(inter-ntegrated circuit)中文称为集成电路总线,它是一种串行、半双工通信总线,使用多主从架构,主要用于板内低速的芯片之间的通信。IC总线硬件结构简单,成本低,在各领域得到广泛的应用。
3.2连线图
SDA:date(数据);SCL:clock(时钟)。
IIC是一个两线串行通信总线,包含一个SCL信号和SDA信号,SCL是时钟信号,从主设备发出,SDA是数据信号,是一个双向的,设备发送数据和接收数据都是通过SDA信号。
外部电路有两个上拉电阻,表示SDA线和SCL线默认状态下保持高电平,当两者都高电平时,表示IIC处于空悬状态。
IIC的一个优点是它支持多主控(multimastering)其中任何一个能够进行发送和接收的设备都可以成为主总线。一个主控能够控制信号的传输和时钟频率。当然,在任何时间点上只能有一个主控。
IIC主线上可以挂载128个设备,一个设备可以是主机也可以是从机。
主机:一次对话的发起者;从机:一次对话的响应者。
3.3粗略通信过程
3.3.1主机向从机发信息
(红)主机→总线(所有从机):王五在不在?我要发信息。
(蓝)王五→总线(主机可以收到):在,请发送消息。
主机主机收到后,开始向王五发送信息。
3.3.2主机向从机要信息
(红)主机→总线(所有从机):王五在不在?发信息给我。
(蓝)王五→总线(主机可以收到):在,这是我的信息。
主机收到后,王五开始发送。
3.4细节通信过程
SCL高电平 | SCL低电平 | |
SDA由高变低(1→0) | 开始通信 | 信号变化 |
SDA=0 | 读取为0 | - |
SDA=1 | 读取为1 | - |
SDA由低变高(0→1) | 结束通信 | 信号变化 |
SCL高电平+SDA变化:仅用于通信的开始和结束
SCL高电平+SDA电平:读SDA电平
SCL低电平:仅用于数据的变化
通信还没有开始时,IIC的SCL和SDA都处于空悬的高电平状态,SDA变化为低电平表示开始通信。
四、IIC 总线数据传送完整过程
4.1响应位
每次传输必须以字节(8bit)为单位,每字节传输完成后必须跟一个响应位(ACK),响应位为低电平且响应位由接收者发送。
主机→从机
主机发送者→从机接收者
从机→主机
从机发送者→主机接收者
4.2寻址
IIC总线上可以挂载多个(最多2的7次方)设备,主机要进行一次对话,做的第一件事是呼叫对用从机。
每次对话发送的第一个字节必须用于寻址。每个设备都自己一个唯一的地址,来确保不同设备之间访问的准确性。
寻址:地址为一个7bit数据,占据一个字节的高7位。
字节最低位为数据方向位,0表示写(数据由主机→从机);1表示读(数据由从机→主机)。
主机发出的开始信号后面必须紧跟装载着从机地址的字节。
4.3完整的发送过程
4.3.1主机→从机
(1)主机→从机:主机向从机1001001发送一个字节数据01001011
(下图很重要!)
(2)主机→从机:主机向从机1001001发送2个字节数据01001011和10011100
4.3.2从机→主机
SDA:黑线-主机操作,红线-从机操作
注意:主机在接受完最后一个数据之后是不向从机响应的,为NACK
(1)从机→主机:从机1001001向主机发送一个字节数据01001011
(2)从机→主机:从机1001001向主机发送2个字节数据01001011和10011100
4.3.3主机←→从机
(1)主机←→从机:主机先向从机发送1个字节数据01001011,然后往从从机接收数据10011100
注意:当主机发送完成,从机响应后,发送的并不是停止信号。而是重新开始(Sr)信号;
重新开始(Sr)信号就是开始信号,用来替代停止信号并马上开始信号。
从机发送信息给主机,还要再次重新寻址
五、总线速度
(1)双向总线:
- 标准模式(Sm),比特率可达100 kbit/s
- 快速模式(Fm),比特率可达400 kbit/s
- 快速模式增强(Fm+),比特率可达1 Mbit/s
- 高速模式(HS模式),比特率高达3.4Mbit/s。
(2)单向总线:
- 超快模式(UFm),比特率高达5 Mbit/s