27.3.2.2.5 Receiving Data Packets
Assuming the M2 case above, the clock is released for one byte, allowing the
slave to put one byte of data on the bus. The master will receive one byte of data from the
slave, and the Read Interrupt Flag (RIF) will be set to ‘1
’ together with
the Clock Hold (CLKHOLD) flag. The action selected by the Acknowledge Action (ACKACT) bit
in the Master Control B (TWIn.MCTRLB) register is automatically sent on the bus when a
command is written to the Command (MCMD) bit field in the TWIn.MCTRLB register.
- Respond with an ACK by writing
‘
0
’ to the ACKACT bit in the TWIn.MCTRLB register and prepare to receive a new data packet - Respond with a NACK by writing
‘
1
’ to the ACKACT bit and then transmit a new address packet - Respond with a NACK by writing
‘
1
’ to the ACKACT bit and then complete the transaction by issuing a Stop condition in the MCMD bit field from the TWIn.MCTRLB register
A NACK response might not be successfully executed, as arbitration can be lost
during the transmission. If a collision is detected, the master loses arbitration, and the
Arbitration Lost (ARBLOST) flag is set to ‘1
’ and the bus state changes to
Busy. The Master Write Interrupt Flag (WIF) is set if the arbitration was lost when sending
a NACK or a bus error occurred during the procedure. An arbitration lost during the sending
of the data packet is treated in the same way as the above M4 case.
The RIF, CLKHOLD, ARBLOST and WIF flags are all located in the Master Status (TWIn.MSTATUS) register.