Before enabling the I2C controller, perform the following steps:
- Enable the functional and interface clocks (see Table 24-3).
- Program the prescaler to obtain an approximately 12-MHz internal sampling clock by programming the corresponding value in the I2Ci.I2C_PSC[7:0] PSC bit field. This value depends on the frequency of the functional clock (I2Ci_FCLK).
- Program the I2Ci.I2C_SCLL[7:0] SCLL and I2Ci.I2C_SCLH[7:0] SCLH bit fields to obtain a bit rate of 100 kbps or 400 kbps. These values depend on the internal sampling clock frequency (see Table 24-6).
- (Optional) Program the I2Ci.I2C_SCLL[15:8] HSSCLL and I2Ci.I2C_SCLH[15:8] HSSCLH bit fields to obtain a bit rate of 400 kbps or 3.4 Mbps (for the second phase of HS mode). These values depend on the internal sampling clock frequency (see Table 24-6).
- Configure the Own Address of the I2C controller by storing it in the I2Ci.I2C_OA register. Up to four Own Addresses can be programmed in the I2Ci.I2C_OA and I2Ci.I2C_OAx registers (where x = 1, 2, 3) for each I2C controller.
Note: For a 10-bit address, set the corresponding expand Own Address bit in the I2Ci.I2C_CON register.
- Set the TX threshold (in transmitter mode) and the RX threshold (in receiver mode) by setting the I2Ci.I2C_BUF[5:0] TXTRSH bit field to (TX threshold – 1) and the I2Ci.I2C_BUF[13:8] RXTRSH bit field to (RX threshold – 1), where the TX and RX thresholds are greater than or equal to 1.
- Take the I2C controller out of reset by setting the I2Ci.I2C_CON[15] I2C_EN bit to 1.