太过基础的IIC知识本文不做赘述,如时序,特征,总线拓扑等,主要是总结一下I2C子系统的应用,未完待续,后期会补充BH1750传感器与I2C的实战
IIC
IIC主要特点就是同步,半双工,多主多从机制,同一时刻只能有一个主机与一个从机通信,设备间的通信是通过开漏进行的,IIC又分为模拟IIC和硬件IIC,模拟IIC就是将俩个GPIO引脚分别当作SDA和SCL,通过高低电平模拟出起始,结束,ACK,NACK信号,硬件IIC依赖于I2C子系统,通过编写驱动层IIC_deriver,通过adapter与硬件进行交互。
硬件IIC和模拟IIC的区别?
在硬件IIC中,时序控制由硬件完成,CPU只需要读取数据,CPU占用率较低,且传输速率很快,一般为400KB,但是数量有限,灵活性不如模拟IIC,模拟IIC可以通过任意GPIO硬件模拟出不同的IIC总线,但是时序控制和数据读取全程需要CPU参与,占用率很高。
为什么说设备间的通信是通过开漏进行的?
开漏输出的特点是,设备只能输出低电平,不能主动驱动高电平,在数据线空闲时,自动被上拉为高电平,在通信过程中,主设备拉低SDA表示起始信号,发送7位从机地址和读写位后,从机拉低SDA表示ACK应答信号,在每一字节发送完成后,主机都会拉低SDA表示收到数据,发送完所有数据后,双方都不驱动总线,数据线会被拉回至高电平代表NACK,之后数据线仍然保