序言
上一篇,我们清楚了串口是如何通讯的,即用了2根线点对点通讯
如果依旧采取串口来实现多个设备通讯的话,线路就会很繁芜
如果把上图的线路还是变成2根线,是不是方便了很多呢?
这便是通讯办法便是IIC,能实现一主多从并且只用了2根线
写数据
理解IIC如何通讯之前,先来看看主控设备是如何通过IIC给被控设备写数据的
这是一帧完全的写操作
下面,我们来逐步剖析每一位的浸染
第一位是用于掌握是否开始传输数据的起始位
由于是有2根线,所以是2根线共同浸染来掌握(分别是时钟线和数据线)
在时钟线为高电日常平凡代,数据线发生低落沿,就表示开始传输数据了
如果处于空闲状态时,时钟线和数据线都为高电平
紧接着后面的8位是用来表示设备地址的(便是用于掌握哪一个设备的编码)
在时钟线高电日常平凡代,数据线也是高电平,表示逻辑1
在时钟线高电日常平凡代,数据线是低电平,表示逻辑0
以1010000为例,如图所示
如果1010000是24C02的设备地址,那主机就和该设备建立起了通讯
紧接着还要确定是实行什么操作
是写数据(用0表示)还是读取数据(用1表示)
为了确保通讯线路建立成功,被控设备还须要应答主控设备,这样主控设备才知道被控设备准备好了(0表示准备好了,1表示没准备好)
下一步就须要往被控设备的寄存器写数据了(由于有8位,以是可以往256个地址中写数据)
以寄存器中的0X01地址为例
如果将寄存器中的地址写入
那寄存器中地址就会把该数据保存起来
同样也须要被控设备应答,以确保被控设备是准备好的
末了再加上停滞旗子暗记,一帧写操作就大功告成了
读数据知道了怎么写数据,那读数据就很好理解,都是一样的格式
这是一帧完全的读操作
不同的是,读数据要确定两次设备地址,其余读取数据之前一定要把该操作位置为1,否则读取不到数据
总结IIC通讯是一主多从模式,多用于芯片之间通讯,半双工
猜猜下期文章会是啥?兄弟们









