19.8 I2C操作模式的详解I2C接口有4种操作模式:主发送模式;主接收模式;从发送模式。每种操作模式的数据传输如图19.2、图19.3、图19.4、图19.5和图19.6所示。表19.16说明了图中缩写的含义:

表19.16 描述I2C操作的缩写

| 缩写 | 说明 |

|-------|--------------------|

| S | 起始条件 |

| SLA | 7位从机地址 |

| R | 读数据位(SDA为高电平) |

| W | 写数据位(SDA为低电平) |

| A | 应答位(SDA为低电平) |

| A | 非应答位(SDA为高电平) |

| DATA | 8位数据字节 |

| P | 停止条件 |

在图19.2到图19.6中,圆圈用来指示串行中断标志何时被置位。圆圈中的数字表示I2STAT寄存器中的状态代码。每当出现这些状态代码时,必须执行服务程序来继续或结束串行传输。若串行传输被挂起,就不要考虑服务程序,直至串行中断标志被软件清除。当进入串行中断程序时,I2STAT的状态代码用来指向跳转到的相应的服务程序。对于每个状态代码需要的软件操作以及后面串行传输的详细情况见表19.20~表19.24。

19.8.1 主发送模式

在主发送模式中,向从接收器发送数据字节。在进入主发送器模式之前,I2CON必须进行如下初始化:

表19.17 I2CONSET用于初始化主发送器模式

| 位 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |

|------|---|---|---|---|---|---|---|---|

| 符号 | - | I2EN | STA | STO | SI | AA | - | - |

| 值 | - | 1 | 0 | 0 | 0 | x | - | - |

I2C速率也必须在I2SCLL和I2SCLH寄存器中配置。必须将I2EN设置为逻辑1来使能I2C模块。如果AA位复位,当另一个器件正变成总线主机时,I2C模块将不会应答其自身的从机地址或通用调用地址。换句话说,如果AA位复位,I2C接口就不能进入从机模式。STA,STO和SI必须复位。此时,可通过置位STA位进入主发送模式。一旦总线空闲,I2C逻辑会马上测试I2C总线并产生一个起始条件。当发送起始条件时,串行中断标志(SI)置位,状态寄存器(I2STAT)中的状态代码为0x08。中断服务程序利用该状态代码进入相应的状态服务程序,将从机地址和数据方向位(SLA+W)装入I2DAT。I2CON的SI位必须在串行传输继续之前复位。

有时候阅读这些技术文档,感觉就像在解谜!如果你想了解更多关于I2C模式的具体操作,可以查看这个通用串行通信接口的I2C模式。这个链接会带你更详细地了解I2C的复杂世界。是不是很方便?