03.I2C
约 461 字大约 2 分钟
I2C总线
双向二线制同步串行总线。它只需要两根线即可在连接于总线上的器件之间传送信息。
支持100Kbit/s和400Kbit/s的速率,7位、10位设备地址,
SDA(串行数据线)
SCL(串行时钟线)

通常vcc = 3.3v 时
接的上拉电阻通常为4.7k
协议层
主机写数据到从机

机由从机中读数据

S : 传输开始信号
SLAVE_ADDRESS: 从机地址
R/W- : 传输方向选择位,1为读,0为写
A/A- : 应答(ACK)或非应答(NACK)信号
P : 停止传输信号
起始信号 、停止信号
当 SCL 线是高电平时 SDA 线从高电平向低电平切换,这个情况表示通讯的起始
当 SCL 是高电平时 SDA 线由低电平向高电平切换,表示通讯的停止

数据有效性
SCL为高电平的时候SDA表示的数据有效,
即此时的SDA为高电平时表示数据“1”,为低电平时表示数据“0”。
当SCL为低电平时,SDA的数据无效

响应、仲裁、时钟同步和地址广播
响应包括“应答(ACK)”和“非应答(NACK)”两种信号。
作为数据接收端时, 当设备(无论主从机)接收到I2C传输的一个字节数据或地址后,
若希望对方继续发送数据, 则需要向对方发送“应答(ACK)”信号,
发送方会继续发送下一个数据;若接收端希望结束数据传输, 则向对方发送“非应答(NACK)”信号,
发送方接收到该信号后会产生一个停止信号,结束信号传输
