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主模式通信不建议用中断方式处理。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。