To configure the I2C master to high-speed
mode:
- Enable the I2C clock using the CMPCLKCR0 register
in the system control module.
- In the GPIO module, configure GPxCSELy register
to allow CM core to control corresponding GPIOs. To determine which GPIOs to
configure, see the GPIO Muxed Pins tables in the device data sheet.
- Configure GPxGMUXy and GPxMUXy register to assign
the I2C signals to the appropriate pins.
Note: The GPIO configuration
register GPyODR must be set to normal mode when the CM-I2C is used. The
open-drain operation for CM-I2C is managed by the CM-I2C module.
- Initialize the I2C master by writing the
I2CMCR register with a value of 0x0000.0010.
- Set the desired SCL clock speed of 3.33 Mbps by
writing the I2CMTPR register with the correct value. The value written to the
I2CMTPR register represents the number of system clock periods in one SCL clock
period. The TPR value is determined by:
TPR = (System Clock / (2 × (SCL_LP + SCL_HP) ×
SCL_CLK)) – 1
TPR = (200 MHz / (2 × (2 + 1) × 3330000)) –
1
TPR = 9
Write the I2CMTPR register
with the value of 0x0000.0009.
- To send the master code byte,
software should place the value of the master code byte into
the I2CMCS_WRITE register and write the I2CMCS_WRITE register with the following
value depending on the required operation:
- For standard high-speed
mode, write 0x13 to the I2CMCS_WRITE register.
- For burst high-speed
mode, write 0x50 to the I2CMCS_WRITE register.
- This places the I2C master peripheral in
high-speed mode, and all subsequent transfers (until STOP) are carried out at
high-speed data rate using the normal I2CMCS_WRITE command bits, without setting
the HS bit in the I2CMCS register.
- The transaction is ended by setting the STOP bit in the I2CMCS register.
- Wait until the transmission completes by polling the BUSBSY bit in the I2CMCS register until it has been cleared.
- Check the ERROR bit in the I2CMCS register to confirm the transmit was acknowledged.