wuyouwuyou

I2C使用的一点小节

0
阅读(17876)

这里详细介绍一下两个寄存器:I2C控制位寄存器(I2CONSET)和I2C控制清零寄存器(I2CONCLR)。

I2C控制置位寄存器(I2CONSET)

AA为声明应答标志。当该位置位时,SCL线的应答时钟脉冲内出现下面的任意条件之一将产生一个应答(SDA上的低电平):

1. 接收到从地址寄存器中的地址。

2. 当I2ADR中的通用调用位(GC)置位时,接收到通用调用地址。

3. 当I2C接口处于主接收器模式时,接收到一个数据字节。

4. 当I2C接口处于可寻址的从接收器模式时,接收到一个数据字节。

向I2CONCLR寄存器中的AAC位写入1会使AA位清零。当AA为零时,SCL线的应答时钟脉冲内出现下列情况将返回一个非应答信号(SDA上的高电平):

1. 当I2C接口处于主接收器模式时,接收到一个数据字节。

2. 当I2C接口处于可寻址的从接收器模式时,接收到一个数据字节。

SI为I2C中断标志。当进入25种可能的I2C状态中的任何一个后,该位置位。通常,I2C中断只在空闲的从器件中用于指示一个起始条件,或在一个空闲的主器件(如果它等待使用I2C总线)中指示一个停止条件。向I2CONCLR寄存器中的SIC位写入1使SI位清零。

STO为停止标志。当STO为1时,在主模式中,向I2C总线发送一个停止条件或在从模式中使总线从错误状态中恢复。当主模式中STO=1时,向总线发送停止条件。当总线检测到停止条件时,STO自动清零。

在从模式中,置位STO位可从错误状态中恢复。这种情况下不向总线发送停止条件。硬件的表现就好像是接收到一个停止条件并切换到不可寻址的从接收器模式。STO标志由硬件自动清零。

STA为起始标志。当STA=1时,I2C接口进入主模式并发送一个起始条件,如果已经处于主模式,则发送一个重复起始条件。

当STA=1并且I2C接口还没进入主模式时,I2C接口将进入主模式,检测总线并在总线空闲时产生一个起始条件。如果总线忙,则等待一个停止条件(释放总线)并在延迟半个内部时钟发生器周期后发送一个起始条件。当I2C接口已经处于主模式中并发送或接收了数据时,I2C接口会发送一个重复的起始条件。STA可在任何时候置位,当I2C接口处于可寻址的从模式时,STA也可以置位。

向I2CONCLR寄存器中的STAC位写入1使STA位清零。当STA=0时,不会产生起始或重复起始条件。

当STA和STO都置位时,如果I2C接口处于主模式,I2C接口将向总线发送一个停止条件,然后发送一个起始条件。如果I2C接口处于从模式,则产生一个内部停止条件,但不发送到总线上。

I2EN为I2C接口使能。当该位置位时,使能I2C接口。向I2CONCLR寄存器中的I2ENC位写入1将使I2EN位清零。当I2EN位为0时,I2C功能被禁止

I2C控制清零寄存器(I2CONCLR)实现的功能和I2C控制置位寄存器(I2CONSET)实现的功能完全相反。