I2C详细介绍

I2C时序

1.开始和停止:

说明:

开始:在SCL的高电平的时候SDA线的从高电平到低电平的跳变定义为开始

停止:在SCL的高电平的时候SDA线的从低电平到高电平的跳变定义为停止

2.有效数据的位置:


说明:在SCL的上升沿读取数据,这就告诉我们,在SCL为高电平的时候SDA线必须是稳定的,在进一步说,在SCL的低电平SDA线变数据,或者说在SCL变成高电平之前,将要发送的数据(至于读,读SCL为高电平时间段上SDA线上的数据)放到SDA线上去

3.应答:


当一个字节(8bits)的数据都传输完成的时候继续进行第9位的发送或者判断,SDA线上的低电平定义为应答ACK信号

应答信号的作用是当你向目标机写数据的时候,写完一个字节后,目标机会返回一个应答信号,告诉你是不是写成功,当有应答信号的时候,表示写成功。

4.写周期的时序:


从这里可以看到,数据的传输是先高位再低位再加一个应答位的顺序

这里的Twr限制的是最大值。

Note: 1. The write cycle time t  is the time from a valid stop condition of a write sequence to the end of the internal clear/write cycle

翻译是这个时间表示的是写序列中从一次8位数据的写完到整个写周期的结束的时间,比如,要对芯片写数据。那写地址,到将要写数据之间的延时不能超过这个值,否则,芯片认为这个写周期结束,在写进的数据将是被认为是地址。

5.总线时序:


具体的时间要看具体的芯片,下边表格是AT24C01A,AT24C02,AT24C04,AT24C08AT24C16的时间


需要解释的几个时间:

Tsu.sta:SCL变高电平的时刻到开始发送开始信号的时间

Thd.sta:开始信号发送完到SCL允许变低的时间

Tbuf:一组数据发送完,下一组可以开始的时间

6.其他注意的事项:

总线上应该加上拉电阻,因为I2C协议的芯片的内部是OC门(开漏输出的),外部上拉的电阻阻值4.7K或10K。

电压的不同,对时间有影响,因此要想得到不出错的时序,需要验证不同电压下的通信。


版权声明:本文为博主原创文章,未经博主允许不得转载。

原文地址:https://www.cnblogs.com/otaku-lip/p/4765048.html