IIC可以分为三个部分,分别是IIC总线、IIC主机和IIC从机。这里对IIC主机进行简要介绍。
本文以STM32F40X和S3C2440的IIC控制器为例来介绍。
首先简要介绍STM32F40X的IIC框图。
由上图可知,在STM32F40X中,IIC的SCL线的时钟信号是由IIC接口根据时钟控制寄存器(CCR)控制,控制的参数主要为时钟频率。CCR寄存器中12位的配置因子CCR与IIC外设的输入时钟源(PCLK1)共同作用来产生SCL时钟。
IIC的SDA信号来源于数据移位寄存器,而数据移位寄存器的数据来源于数据寄存器(DR)、地址寄存器(OAR)以及PEC寄存器。
最终,IIC的工作模式是根据配置的控制寄存器(CR1/CR2)的参数而改变。而当IIC工作时,“状态寄存器(SR1和SR2)”会根据IIC的工作状态而被控制逻辑所改变。因此,IIC的工作状态便可通过读取状态寄存器相关的寄存器位而获得。
由上图可知,在芯片发出对应信号后,如果IIC总线上发生了对应的响应,则状态寄存器的对应位会被改变,比如:
当STM32芯片产生起始信号后,事件“EV5”便会发生,也就是说SR1寄存器的“SB”会被置1来表示起始信号已发送;