PIC32MX795F512L I2C4 registers

The 7 registers of I2C4 (I²C 4), from 0xBF805100, with their reset value and every field. The PIC32MX795F512L has 789 registers in 67 peripherals, one page each.

Most PIC32 SFRs have three more registers right after them: CLR at +4, SET at +8 and INV at +C (T1CONCLR, T1CONSET, T1CONINV), which clear, set or flip just the bits written as 1, in one write.

I2C4 I²C 4

I2C4CONI2C Control Register

Address
0xBF805100
Reset
0x00001000
Access
read/write
Size
32-bit
15 fields
FieldBitsWhat it does
ON15I2C Enable bit
  • 0 Disables the I2C module; all I2C pins are controlled by PORT functions
  • 1 Enables the I2C module and configures the SDA and SCL pins as serial port pins
SIDL13Stop in Idle Mode bit
  • 0 Continue module operation in Idle mode
  • 1 Discontinue module operation when device enters Idle mode
SCLREL12SCLx Release Control bit (when operating as I2C slave)
  • 0 Hold SCLx clock low (clock stretch)
  • 1 Release SCLx clock
STRICT11Strict I 2 C Reserved Address Rule Enable bit
  • 0 Strict I2C Reserved Address Rule is not enabled
  • 1 Strict reserved addressing is enforced. Device does not respond to reserved address space or generate addresses in reserved address space.
A10M1010-bit Slave Address bit
  • 0 I2CxADD is a 7-bit slave address
  • 1 I2CxADD is a 10-bit slave address
DISSLW9Disable Slew Rate Control bit
  • 0 Slew rate control is enabled
  • 1 Slew rate control is disabled
SMEN8SMBus Input Levels bit
  • 0 Disable SMBus input thresholds
  • 1 Enable I/O pin thresholds compliant with SMBus specification
GCEN7General Call Enable bit (when operating as I2C slave)
  • 0 General call address disabled
  • 1 Enable interrupt when a general call address is received in the I2CxRSR(module is enabled for reception)
STREN6SCLx Clock Stretch Enable bit (when operating as I2C slave)
  • 0 Disable software or receive clock stretching
  • 1 Enable software or receive clock stretching
ACKDT5Acknowledge Data bit (when operating as I2C master, applicable during master receive)
  • 0 Send ACK during Acknowledge
  • 1 Send NACK during Acknowledge
ACKEN4Acknowledge Sequence Enable bit
  • 0 Acknowledge sequence not in progress
  • 1 Initiate Acknowledge sequence on SDAx and SCLx pins and transmit ACKDT data bit. Hardware clear at end of master Acknowledge sequence.
RCEN3Receive Enable bit (when operating as I2C master)
  • 0 Receive sequence not in progress
  • 1 Enables Receive mode for I2C. Hardware clear at end of eighth bit of master receive data byte.
PEN2Stop Condition Enable bit (when operating as I2C master)
  • 0 Stop condition not in progress
  • 1 Initiate Stop condition on SDAx and SCLx pins. Hardware clear at end of master Stop sequence.
RSEN1Repeated Start Condition Enable bit (when operating as I2C master)
  • 0 Repeated Start condition not in progress
  • 1 Initiate Repeated Start condition on SDAx and SCLx pins. Hardware clear at end of master Repeated Start sequence.
SEN0Start Condition Enable bit (when operating as I2C master)
  • 0 Start condition not in progress
  • 1 Initiate Start condition on SDAx and SCLx pins. Hardware clear at end of master Start sequence.

I2C4STATI2C Status Register

Address
0xBF805110
Reset
0x00000000
Access
read/write
Size
32-bit
13 fields
FieldBitsWhat it does
ACKSTAT15Acknowledge Status bit (when operating as I2C master, applicable to master transmit operation)
  • 0 Acknowledge was received from slave
  • 1 Acknowledge was not received from slave
TRSTAT14Transmit Status bit (when operating as I2C master, applicable to master transmit operation)
  • 0 Master transmit is not in progress
  • 1 Master transmit is in progress (8 bits + ACK)
BCL10Master Bus Collision Detect bit
  • 0 No collision
  • 1 A bus collision has been detected during a master operation
GCSTAT9General Call Status bit
  • 0 General call address was not received
  • 1 General call address was received
ADD10810-bit Address Status bit
  • 0 10-bit address was not matched
  • 1 10-bit address was matched
IWCOL7Write Collision Detect bit
  • 0 No collision
  • 1 An attempt to write the I2CxTRN register failed because the I2C module is busy
I2COV6Receive Overflow Flag bit
  • 0 No overflow
  • 1 A byte was received while the I2CxRCV register is still holding the previous byte
DA5
P4Stop bit
  • 0 Stop bit was not detected last
  • 1 Indicates that a Stop bit has been detected last
S3Start bit
  • 0 Start bit was not detected last
  • 1 Indicates that a Start (or Repeated Start) bit has been detected last
RW2
RBF1Receive Buffer Full Status bit
  • 0 Receive not complete I2CxRCV is empty
  • 1 Receive complete I2CxRCV is full
TBF0Transmit Buffer Full Status bit
  • 0 Transmit complete I2CxTRN is empty
  • 1 Transmit in progress I2CxTRN is full

I2C4ADD

Address
0xBF805120
Reset
0x00000000
Access
read/write
Size
32-bit

I2C4MSK

Address
0xBF805130
Reset
0x00000000
Access
read/write
Size
32-bit

I2C4BRG

Address
0xBF805140
Reset
0x00000000
Access
read/write
Size
32-bit

I2C4TRN

Address
0xBF805150
Reset
0x00000000
Access
read/write
Size
32-bit

I2C4RCV

Address
0xBF805160
Reset
0x00000000
Access
read/write
Size
32-bit