I2C时序分析-主机控制从机

I2C是由2根线进行操作的,一个是主控时序SCL,另一根主控数据SDA

对于操作主要分成读写,读写的两个操作有部分是相似的

而时序的操作主要分为:START,DATA,ACK,STOP,NOACK

 

写的时序用到的时序为:STRAR,DATA,ACK,STOP

时序如图所示:

 

读时序用到的时序有:START,DATA,ACK,STOP,NOACK

时序如图所示:

 

下面对时序的说明:

IDLE:空闲的时候,尽量将SDA和SCL拉到高电平

START:保持SCL为高电平,然后SDA由H->L

DATA:数据是当SCL为低电平的时候数据有效,也就是说,SCL由L->H的时候,采集SDA的数据

ACK:在发完数据后,从设备会将SDA拉到L

NOACK:在发送完数据后,从设备不会将SDA拉低

STOP:保持SCL为高电平,然后SDA由L->H

 

好了,说一下时序的流程和时序图:

写时序的流程是:START –>

                      从设备的写地址 –> ACK –>

                      从设备的寄存器地址 –> ACK –>

                      写入的数据 –> ACK –>

                      STOP

写时序图:

 

读时序的流程是:START –>

                      从设备的写地址 –> ACK –>

                      从设备的寄存器地址 –> ACK –>

                      从设备的读地址 –> ACK ->

                      读出的数据 –> NOACK –>

                      STOP

读时序图:

 

其中要注意的是I2C的2根线上都必须接上拉电阻,阻值一般是4.7K

在获得ACK的时候,一般将SDA输出一个高阻,然后再读入ACK,好让从设备拉低SDA

posted @ 2010-07-17 16:35  flying1104  阅读(3508)  评论(0编辑  收藏  举报