我们之前简单介绍了SPI通讯协议,他属于总线协议的一种,除此之外还有CAN总线,USB总线协议,今天我们简单介绍一下I2C总线通讯协议。
I2C也是芯片与芯片之间的通讯,他采用的也是主从模式,一般是一主多从,他的物理硬件连接有点类似于缆车,在两条总线上挂载很多个设备,那它是如何通讯的呢?
以写入数据为例,标准的一帧写数据帧是包含起始位,设备地址(7位),读写位,应答信号,寄存器地址(8位),应答信号,数据(8位),停止位。
I2C的这两条线是时钟线和数据线,每一帧的写数据都是由时钟线和数据线共同作用的,在一个时间,要么处于发送信息,要么处于接收信息,当处于空闲状态时,时钟线和数据线都是处于高电平。
当要发送信息时,先发送的是起始位,时钟线先保持高电平,数据线在时钟线保持高电平期间完成高电平到低电平的跳变,这样就完成起始位的发送。
然后要选择和哪个从设备进行通讯,需要发送7位的设备地址码,发送地址码时,在时钟保持一段高电平时,数据线也要保持一定时间的高电平或者低电平,这样按照高低电平来决定逻辑0还是1,
应答信号是从机接收到信息就是0,没有收到或者读取完成则为1, 最后的停止位,是当时钟信号为高电平时,数据线完成从低电平到高电平的跳变。
读数据和写数据有点类似,起始位 设备地址 写数据 应答信号 寄存器地址 应答信号 起始位,设备地址,读数据,要接收的数据 应答信号 停止位。
以上就是我的简单总结,希望对你有帮助。