SLAU847F October 2022 – March 2026 MSPM0L1105 , MSPM0L1106 , MSPM0L1116 , MSPM0L1116-Q1 , MSPM0L1117 , MSPM0L1227 , MSPM0L1227-Q1 , MSPM0L1228 , MSPM0L1228-Q1 , MSPM0L1303 , MSPM0L1304 , MSPM0L1304-Q1 , MSPM0L1305 , MSPM0L1305-Q1 , MSPM0L1306 , MSPM0L1306-Q1 , MSPM0L1343 , MSPM0L1344 , MSPM0L1345 , MSPM0L1346 , MSPM0L2116 , MSPM0L2117 , MSPM0L2227 , MSPM0L2227-Q1 , MSPM0L2228 , MSPM0L2228-Q1
For a controller to start transmitting data out of idle mode, the user needs to set the START bit in the CTR register to generate the START condition. Then the controller automatically sends the START condition followed by the target address as soon as the bus is free. The data written into TXDATA is transmitted if arbitration is not lost during transmission of the target address.
First, clear TA.DIR to 0 to enable transmit mode and set CTR.START to 1 to enable the START condition. CTR.BLEN can then be programmed to indicate the number of bytes (n) for the transmit operation on Advanced I2CC instances (for Basic instances this length is hardcoded to 1). The CTR.STOP bit can then be set or cleared based on user configuration. CTR.FRM_START is then set to begin the transaction on the line. The packet format is START + ADDR + W + (DATA*n) + STOP, where transmission of the STOP condition depends on the STOP bit.
After the last byte is transmitted, the TXDONE interrupt in the CPU_INT.IIDX register is set to indicate that the controller transmit transaction is completed. The user can also use the TXEMPTY interrupt from the CPU_INT.IIDX register to see if the TX FIFO is empty and ready to load more data. This interrupt triggers if all data in the transmit FIFO has been shifted out.
The flow chart with the nexessary software steps of using TXDONE and TXTRG interrupt for controller-transmitter mode are shown in Figure 26-18 and Figure 26-19 respectively.