理论教育 I2C主模式数据发送过程中相关寄存器详解

I2C主模式数据发送过程中相关寄存器详解

时间:2023-10-19 理论教育 版权反馈
【摘要】:I2C主模式数据发送过程中涉及到的寄存器有TRISC、SSPBUF、SSPSTAT、SSPADD、SSPCON2、PIR1、PIE1、INTCON。用于决定I2C主模式下的通信速率。在I2C主机发送模式时,0:无写冲突发生。当I2C模式被使能时,相关引脚必须通过方向寄存器正确地设定为输入或者输出状态。

I2C主模式数据发送过程中相关寄存器详解

I2C主模式数据发送过程中涉及到的寄存器有TRISC、SSPBUF、SSPSTAT、SSPADD、SSPCON2、PIR1、PIE1、INTCON。下面依次介绍。

1.SSP缓冲寄存器(SSPBUF)

bit7~bit0 SSP收发寄存器。

要发送的数据(包括地址数据和读/写信号)必须通过写入SSPBUF来实现。每写入一次SSPBUF,硬件会自动启动一次I2C的数据写操作时序。

2.SPP状态寄存器(SSPSTAT)

1)bit7 SMP:I2C模式的斜率控制位。

0:使能快速模式(400kbit/s)。

1:使能标准模式(100kbit/s)。

2)bit6 CKE:I2C输入电平选择位。

0:输入电平遵从I2C协议规范。

1:输入电平遵从SMBus协议规范。

3)bit3 R/W:I2C主模式数据发送状态标志位(跟R/W#无关)。

0:数据发送(写)完毕。

1:数据发送(写)进行中。

3.波特率分频系数寄存器(SSPADD)

bit7~bit0 主模式波特率分频系数寄存器。

用于决定I2C主模式下的通信速率。其计算方法为

F12C=FOSC/(4(SSPADD+1))

4.SSP控制寄存器(SSPCON)

1)bit7 WCOL:写冲突检测位。

在I2C主机发送模式时,

0:无写冲突发生。

1:发生了写冲突(I2C发送信号过程中SSPBUF被写入数据),必须软件清零。(www.daowen.com)

2)bit5 SSPEN:MSSP模块使能位。

0:关闭MSSP模块,并且设定SCL、SDA为普通数字引脚模式。

1:使能MSSP模块,并且设定SCL、SDA为MSSP专用引脚。

当I2C模式被使能时,相关引脚必须通过方向寄存器正确地设定为输入或者输出状态。

3)bit3~bit0 SSPM3~SSPM0:MSSP工作方式选择位。

对于I2C主模式只有一种组合。

1000:I2C主控方式,时钟=FOSC/(4(SSPADD+1))。

5.SSP控制寄存器2(SSPCON2)

1)bit6 ACKSTAT:应答状态位(仅在I2C主模式发送过程中有效)。

0:表示接收到了从机的应答信号。

1:表示没有接收到从机的应答信号。

2)bit2 PEN:停止信号使能位(仅在I2C主模式中有效)。

0:停止信号发送完毕,主机释放对SCL的控制权。

1:启动一次停止信号发送序列。发送完毕后此位被硬件自动清零。

3)bit0 SEN:起始信号使能位(仅在I2C主模式中有效)。

0:起始位发送完毕,主机开始获得SCL控制权。

1:启动一次起始位发送序列。发送完毕后此位被硬件自动清零。

6.外围中断状态寄存器1(PIR1)

bit3 SSPIF:同步串行模块中断标志位(在I2C主模式数据发送过程中有效)。

0:表示无I2C特殊事件发生。

1:表示发生了I2C特殊事件,如起始信号发送完毕、数据发送完毕、停止信号发送完毕等事件,必须软件清零。

注意:虽然I2C的主机数据通信可以在中断过程中处理(通过使能GIE、PEIE、SSPIE来使系统响应SSP中断),但鉴于其收发/发送过程的顺序性很强,所以I2C主模式通信不建议用中断方式处理。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈