IIC master 和 slave 浅析
IIC 总线本身支持多主控,成为主控的必要条件是能够主动控制数据的传输和时钟频率。
总线空闲时,上拉电阻是SDA和SDL均保持高电平,IIC器件都是集电极开路输出,遵循“线与”逻辑
也就是说,任意器件输出低电平都会拉低信号线。
任何通信都是由master发起,master 发起传输需要先发送开始位,停止传输需要发送停止位。
开始位的定义:当SCL稳定在高电平时,master 拉低SDA, 将产生一个开始位;
停止位的定义:当SCL稳定在高电平时,master 拉高SDA, 将产生一个停止位;
因此还可以推断出,SDA传输有效数据的时候,一定是在SCL为低电平的时候;
在选择从设备时,如果从设备采用7bit地址,则主设备在发起传输之前,需要先发送一字节的地址信息,
其中前7bit为设备地址,最后一位为读写标志。之后,每次传输的数据也是1字节,从MSB开始传输
传送完8bit之后还不算完,在第8个SCL下降沿之后,第9个SCL的上升沿到来之前,master释放SDA,
slave要发出一个ACK位,以保证通信的可靠性。
- IIC设备的地址会在器件手册上标明;
- 有的AP上IIC控制器没有自己的地址,也就是说它只能是master,不支持slave