34.6.2.1 Initialization

The following registers are enable-protected, meaning they can be written only when the I2C interface is disabled (CTRLA.ENABLE = 0):
  • Control A register (CTRLA), except Enable (CTRLA.ENABLE) and Software Reset (CTRLA.SWRST) bits
  • Control B register (CTRLB), except Acknowledge Action (CTRLB.ACKACT) and Command (CTRLB.CMD) bits
  • Baud register (BAUD)
  • Address register (ADDR) in client operation

When the I2C is enabled or is being enabled (CTRLA.ENABLE = 1), writing to these registers is discarded. If the I2C is being disabled, writing to these registers is completed after the disabling.

Enable protection is denoted by the Enable-Protection property in the register description.

Before the I2C is enabled, it must be configured as outlined by the following steps:
  1. Select I2C Host or Client mode by writing 0x4 (Client mode) or 0x5 (Host mode) to the Operating Mode bits in the CTRLA register (CTRLA.MODE).
  2. If desired, select the SDA Hold Time in the CFGCON1 register (CFGCON1.I2CDSELx).
  3. In Client mode, the minimum client setup time for the SDA can be selected in the SDA Setup Time bit group in the Control C register (CTRLC.SDASETUP).
  4. If desired, enable smart operation by setting the Smart Mode Enable bit in the CTRLB register (CTRLB.SMEN).
  5. If desired, enable SCL low time-out by setting the SCL Low Time-Out bit in the Control A register (CTRLA.LOWTOUT).
  6. In Host mode:
    1. Select the inactive bus time-out in the Inactive Time-Out bit group in the CTRLA register (CTRLA.INACTOUT).
    2. Write the Baud Rate register (BAUD) to generate the desired baud rate.
    In Client mode:
    1. Configure the address match configuration by writing the Address mode value in the CTRLB register (CTRLB.AMODE).
    2. Set the Address and Address Mask value in the Address register (ADDR.ADDR and ADDR.ADDRMASK) according to the address configuration.