SLAU847D October 2022 – May 2024 MSPM0L1105 , MSPM0L1106 , MSPM0L1227 , MSPM0L1228 , MSPM0L1228-Q1 , MSPM0L1303 , MSPM0L1304 , MSPM0L1304-Q1 , MSPM0L1305 , MSPM0L1305-Q1 , MSPM0L1306 , MSPM0L1306-Q1 , MSPM0L1343 , MSPM0L1344 , MSPM0L1345 , MSPM0L1346 , MSPM0L2227 , MSPM0L2228 , MSPM0L2228-Q1
The I2C Controller Control register I2Cx.MCTR and I2C Controller Target Address register I2Cx.MSA are used for controlling controller transmit and receive modes. The following settings can be modified to control the different transactions.
Length | Direction | ACK | STOP | START | RUN | Format | Comments |
---|---|---|---|---|---|---|---|
n (n>0) | 0 | x | 0 or 1 | 1 | 1 | START+ADDR+R/W+ DATA*n+(STOP) | Sending of STOP depends on STOP bit |
Length | Direction | ACK | STOP | START | RUN | Format | Comments |
---|---|---|---|---|---|---|---|
n (n>0) | 0 | x | 0 or 1 | 0 | 1 | DATA*n+ (ACK/NACK)+(STOP) | Sending of STOP depends on STOP bit |
If there is a NACK response from the target, the controller will automatically send out a stop to finish the transmit. The Controller will be unable to send a RESTART after ADDR or DATA NACK.
Length | Direction | ACK | STOP | START | RUN | Format | Comments |
---|---|---|---|---|---|---|---|
n (n>0) | 1 | 0 or 1 | 0 or 1 | 1 | 1 | START+ADDR +R/W+DATA *n +(ACK/NACK) +(STOP) | The last data ACK or NACK depend on ACK bit; additional sending of STOP depends on STOP bit |
Length | Direction | ACK | STOP | START | RUN | Format | Comments |
---|---|---|---|---|---|---|---|
n (n>0) | 1 | 0 or 1 | 0 or 1 | 0 | 1 | DATA*n+ (ACK/NACK) +(STOP) | The last data followed by ACK or NACK depend on ACK bit; additional sending of STOP depends on STOP bit |
This configuration is not allowed if last transaction ended with NACK, as NACK can only be followed by STOP or RESTART. The ACK and STOP bits should not be set to 1 at the same time, as the target needs to be informed to release bus lines before sending out STOP.
If last transmit or receive finished without stop, a repeat start can be generated to initiate a new transaction
Length | Direction | ACK | STOP | START | RUN | Format | Comments |
---|---|---|---|---|---|---|---|
n (n>0) | 0 | 0 or 1 | 0 or 1 | 1 | 1 | Restart+ADDR +R/W+DATA*n +(STOP) | Additional sending of STOP depends on STOP bit |
If there is a NACK response from the target, the controller will automatically send out a stop to finish the transmit. The Controller will be unable to send a RESTART after ADDR or DATA NACK.
Length | Direction | ACK | STOP | START | RUN | Format | Comments |
---|---|---|---|---|---|---|---|
n (n>0) | 1 | 0 or 1 | 0 or 1 | 1 | 1 | Restart+ADDR +R/W+DATA*n +(ACK/NACK)+(STOP) | The last data followed by ACK or NACK depend on ACK bit; additional sending of STOP depends on STOP bit |
The ACK and STOP bits should not be set to 1 at the same time, as the target needs to be informed to release bus lines before sending out STOP.
Length | Direction | ACK | STOP | START | RUN | Format | Comments |
---|---|---|---|---|---|---|---|
n (n>0) | X | X | 1 | 0 | 1 | STOP | STOP command |
It is only allowed to send after previous transaction success finished, and STOP can't be sent without a NACK to the target if controller is currently in receive mode
The Quick command could only be sent at the transaction beginning, not following other transactions (without stop) or repeat start.
Length | Direction | ACK | STOP | START | RUN | Format | Comments |
---|---|---|---|---|---|---|---|
0 | 0/1 | X | 1 | 1 | 1 | START+ADDR +R/W+STOP | Quick command |