作为笔记,以便自己以后忘记了可以回顾一下
---------------------------------------------------------------------------------------------------------------------------------
IIC
--硬件层面的 同步 串行通信协议
特征:
- 半双工
- 2条总线:SCL--串行时钟线 SDA--双向串行数据线
- 传输速率:标准模式(100kbps)、快速模式(400kbps)、高速模式下可达3.4Mbit/s,但目前大多 I2C 设备尚不支持高速模式
时序:
- 起始:
SCL=1------>SCL=1
SDA=1------>SDA=0
- 停止:
SCL=1------>SCL=1
SDA=0------>SDA=1
- 数据有效:
SCL=0------>SCL=1
SDA=X------>SDA=X
- 数据切换:
SCL=1------>SCL=0
SDA=X------>SDA=X
- 应答(由接收方控制):
最后一个时钟 SDA=1------>SDA=0
- 非应答(由接收方控制):
最后一个时钟 SDA=1------>SDA=1
- 写过程:
---主机发送开始信号
广播从机地址-->从机应答-->主机发送写入地址-->从机应答-->主机发送数据-->从机应答
---主机发送停止信号
- 读过程
---主机发送开始信号
广播从机地址-->从机应答-->主机发送读取地址-->从机应答
主机再次广播从机地址-->从机发送数据-->主机应答-->从机发送数据-->主机应答。。。。
不再读取数据,主机发送非应答信号
---主机发送停止信号
---------------------------------------------------------------------------------------------------------------------------------
开漏输出
特征:
1、只能输出低电平
2、GPIO本身不能输出高电平-------高电平只能是外部电源提供
3、可以用于匹配不同元器件的对于电平输入的要求
在IIC中
1、线与作用
2、电路保护的作用:
在IIC中元器件都接在同一根总线上,如果用推挽输出的话,当要通信的时候,主机把总线电平拉低,那么此时其他元器件的输出电平是高电平的话就直接短路了。
开漏输出的话,由电源经过上拉电阻提供高电平,避免了上面情况的发生。