The stand-alone I2C module has several important differences when compared to Microchip's Host Synchronous Serial Port (MSSP) module:
Feature | I2C | MSSP | |
---|---|---|---|
Buffers/Registers | |||
Address Buffers | I2CxADB0 | I2CxADB1 | SSPxADD |
I2CxADR0 | I2CxADR1 | ||
I2CxADR2 | I2CxADR3 | ||
Transmit Buffer | I2CxTXB | SSPxBUF | |
Receive Buffer | I2CxRXB | SSPxBUF | |
Byte Count | I2CxCNT, I2CxCON3 | None | |
Bus Time-Out | I2CxBTO, I2CxBTOC | None | |
I2C Module Control | I2CxCON0 | SSPxCON1 | |
I2CxCON1 | SSPxCON2 | ||
I2CxCON2 | SSPxCON3 | ||
I2CxCON3 | None | ||
I2C Interrupt Control | I2CxPIE | PIEx | PIEx |
I2CxPIR | PIRx | PIRx | |
I2C Error Control | I2CxERR | PIEx | |
PIRx | |||
SSPxCON1 | |||
I2C Status | I2CxSTAT0 | I2CxSTAT1 | SSPxSTAT |
I2CxCON1 | SSPxCON2 | ||
I2C Pad Control | RxyI2C | RxyI2C(1) | |
Interrupt bits | |||
Byte Count | CNTIF, I2CxIF | None | |
ACK Detect | ACKTIF, I2CxIF | SSPxIF | |
Data Write | WRIF, RXIF, I2CxIF | SSPxIF | |
Address Match | ADRIF, I2CxIF | None | |
Start Condition | SCIF, I2CxIF | SCIF, SSPxIF | |
Restart Condition | RSCIF, I2CxIF | SCIF, SSPxIF | |
Stop Condition | PCIF, I2CxIF | PCIF, SSPxIF | |
Transmit Buffer Empty | TXIF, I2CxIF | SSPxIF | |
Receive Buffer Full | RXIF, I2CxIF | SSPxIF | |
Bus Time-Out | BTOIF, I2CxEIF | None | |
Bus Collision | BCLIF, I2CxEIF | BCLxIF, SSPxIF | |
NACK Detect | NACKIF, I2CxEIF | SSPxIF | |
Status Bits | |||
Bus Free Indication | BFRE | None | |
Host Mode Active | MMA | None | |
Client Mode Active | SMA | None | |
Host Data Request | MDR | None | |
Acknowledge Status | ACKSTAT | ACKSTAT | |
Acknowledge Time Status | ACKT | ACKTIM | |
Receive Overflow | RXO | SSPOV | |
Transmit Underflow | TXU | None | |
Transmit Write Error | TXWE | WCOL | |
Transmit Buffer Empty | TXBE | BF | |
Receive Read Error | RXRE | None | |
Receive Buffer Full | RXBF | BF | |
Data/Address Indicator | D | D/A | |
Read/Write Indicator | R | R/W | |
Enable/Action Bits | |||
Module Enable | EN | SSPxEN | |
Restart Enable | RSEN | RSEN | |
Initiate Start Condition | When: | SEN | |
ABD = 0 : Write to I2CxTXB - Hardware
sets S |
|||
ABD =
1 : Software sets S |
|||
Initiate Restart Condition | When: | RSEN | |
ABD = 0 : Write to I2CxTXB - Hardware
sets S (when RSEN = 1 ) |
|||
ABD =
1 : Software sets S (when RSEN =
1 ) |
|||
Initiate Stop Condition | P, Hardware | PEN | |
Enable Clock Stretching | CSD | SEN | |
Clock Stretch Release | CSTR | CKP | |
General Call Enable | GCEN | GCEN | |
Enable Acknowledge Sequence | Hardware | ACKEN | |
Receive Enable | EN | RCEN | |
Clock Source and Configuration | I2CxCLK, FME, I2CxBAUD | SSPM, SSPxADD | |
SDA Hold Time | SDAHT | SDAHT | |
Bus Free Time Configuration | BFRET | None | |
Bus Time-Out Configuration | I2CxBTO, I2CxBTOC | None | |
Byte Count Configuration | I2CxCNT, ACNT, ACNTMD | None | |
Address Hold Enable | ADRIE | AHEN | |
Data Hold Enable | WRIE | DHEN | |
SCL/SDA Pin Control | |||
Weak Pull-up Control | PU<1:0> bits of RxyI2C | WPUx Register | |
Use of internal pull-ups on bus? | Yes | Yes(1) | |
Input Threshold Control | TH<1:0> bits of RxyI2C | INLVLx Register | |
SMBus Threshold Control | TH<1:0> bits of RxyI2C | CKE bit of SSPxSTAT Register | |
Slew Rate Control | SLEW bit of RxyI2C | SMP bit of SSPxSTAT Register | |
Pin Direction Control | TRIS
(TRIS = 0 ) |
TRIS (TRIS =
1 ) |
|
Open-Drain Control | ODCONx Register | Hardware Control |