51单片机的I2C总线
学会总线,掌控芯片。了解串口,真理全有。
I2C时序
1.起始条件:
SCL在高电平期间,SDA从高电平切换到低电平
终止条件:
SCL在高电平期间,SDA从低电平切换为高电平
开始状态
截止状态
2.发送一个字节 : SCL在低电平期间 主机将数据依次放到SDA线上(高位在前) ,然后拉高SCL,从机将在SCL高电平期间,读取数据,所以在SCL高电平期间,不允许SDA有任何数据变化,依次循环上述过程8次
3.接受一个数据 :
其实来说和上面发送数据差不太多
在SCL低电平期间,从机将数据依次放到SDA线上(高位在前) , 然后拉高SCL,主机将在SCL高电平期间读取数据,这就也要求了SDA不能变化 一次循环8次,就能接收1个字节(主机在接收之前,需要先释放SDA)
其实读发都差不多的
4.发送应答和接收应答:
这两个是用在发送和接收时使用的,例如
发送应答是在接收完一个字节后,主机在下一个时钟发送一位数据,数据0表示应答,数据1表示非应答
而同理 在发送完一个字节后,主机在下一个时钟接收一位数据,判断从机是否应答,数据0表示应答,数据1 表示非应答
(主机在接收之前,需要释放SDA)
I2C的数据帧