1.IIC通信
I2C(Inter IC Bus)是由Philips公司开发的一种通用数据总线
两根通信线:SCL(Serial Clock)、SDA(Serial Data)
同步,半双工
带数据应答
支持总线挂载多设备(一主多从、多主多从)
2.硬件电路
为IIC连接上拉电阻:如果不接上拉电阻,当主机输出1,从机输出0时,容易导致电路短路。所以规定主机从机只能输出0也就是只能选择开漏输出,接入上拉电阻之后当你想要输出时便输出低电平,当想要获得高电平则不输出,上拉电阻会自动使电路处于高电平。
3.IIC时序基本单元
4.IIC时序,指定地址写
解析:在SCL高电平时,SDA从高电平到低电平,起始条件。SCL高电平读取数据,主机发送指定地址1101000,前七位是从机地址,第八位为读写位,0表示主机要写入,1表示主机要读取。然后SCL高电平期间读取SDA数据为0,则表示主机接收到应答,发送成功。随后主机再次发送数据,0x19表示从机中寄存器的地址。然后主机接收应答。最后再次发送数据,主机接收应答。最后在SCL高电平期间,SDA从低电平到高电平,终止条件。
5.IIC时序,当前地址读
起始位,主机发送数据前七位1101000,第八位1,表示主机要进行读操作。接收应答。主机读取00001111。主机发送接收应答。终止位。此主机接收的数据来自当前指针下的数据。
6.IIC时序,指定地址读
首先主机发送0XD0的从机地址,再发送一个0X19的寄存器地址,此时的当前地址指针指向了0X19。然后再发送一个起始条件,再发送1101000的从机地址,1为读标志位,表示主机要读取数据。此时读取的0XAA数据就是从机地址的0x19寄存器的数据了。