I connected two LPC5536-EVK boards for I3C communication, with one configured as the I3C Master and the other as the I3C Slave. If the Master’s specified read length exceeds the amount of data provided by the Slave, the Master gets stuck in the Read function I3C_MasterTransferBlocking. Based on the waveform, the signaling appears correct, so I believe the issue is on the Master side.
In my provided example, the Slave’s data is [0x01, 0x02], with a length of only 2 bytes. However, the Master specifies a read length of 3. Therefore, at the end of the 2nd byte, the Slave returns the T-Bit as 0 to indicate the end of the message.
Test Steps:
(1) Reset slave board
(2) Reset master board
For the definition of the T-Bit, please refer to MIPI I3C Basic Specification v1.1.1.
Section 5.1.2.3.4, Ninth Bit of SDR Target Returned (Read) Data as End-of-Data
In I2C, Read from Target has the issue that only the Controller ends the Read, so the Target has no ability to control the amount of data it returns. In I3C SDR, by contrast, the Target controls the number of data Words it returns; but it also allows the I3C Controller to abort the Read prematurely when necessary.
...

