要求:
所有的I2C设备的SCL连在一起,SDA连在一起;
设备的SCL和SDA均要配置成开漏输出模式;
SCL和SDA各添加一个上拉电阻;
开漏输出和上拉电阻的共同作用实现了“线与” 的功能,此设计主要是为了解决多机通信互相干扰的问题
上拉电阻模型,开关断开输出1,开关闭合输出0,因此高电平驱动能力弱,低电平驱动能力强
开漏输出模型,开关断开时,电压不稳定,为悬空输出
I2C时序
起始时序:SCL高电平期间,SDA从高电平切换到低电平
终止时序:SCL高电平期间,SDA从低电平切换到高电平
发送一个字节:SCL低电平期间,主机将数据位依次放到SDA线上(高位在前),然后拉高SCL,从机将在SCL高电平期间读取数据位,所以SCL高电平期间SDA不允许有数据变化,依次循环上述过程8次,即可发送一个字节
接受一个字节:SCL低电平期间,从机将数据位依次放到SDA线上(高位在前),然后拉高SCL,主机将在SCL高电平期间读取数据位,所以SCL高电平期间SDA不允许有数据变化,依次循环上述过程8次,即可接收一个字节(主机在接收之前,需要释放SDA)
发送应答:在接收完一个字节之后,主机在下一个时钟发送一位数据,数据0表示应答,数据1表示非应答
接收应答:在发送完一个字节之后,主机在下一个时钟接收一位数据,判断从机是否应答,数据0表示应答,数据1表示非应答(主机在接收之前,需要释放SDA)
发送一帧数据
完成任务:向谁发送了什么
接收一帧数据
完成任务:向谁接收什么
复合格式
完成任务:向谁收指定的什么