Hi,
There is SDK example "lpcxpressolpc55s36_i3c_master_read_sensor_icm42688p" in SDK package based on LPC55S36.
In the example code, this is an api function
result = I3C_MasterProcessDAA(EXAMPLE_MASTER, addressList, sizeof(addressList));
Pls run the code and check the result of the above function. The function executes ENTDAA and read 8 bytes data from target.
Hope it can help you
BR
XiangJun Rong
int main(void)
{
i3c_master_config_t masterConfig;
status_t result = kStatus_Success;
/* attach 12 MHz clock to FLEXCOMM0 (debug console) */
CLOCK_SetClkDiv(kCLOCK_DivFlexcom0Clk, 0u, true);
CLOCK_SetClkDiv(kCLOCK_DivFlexcom0Clk, 1u, false);
CLOCK_AttachClk(BOARD_DEBUG_UART_CLK_ATTACH);
/* Attach main clock to I3C, 150MHz / 4 = 37.5MHz. */
CLOCK_SetClkDiv(kCLOCK_DivI3cFclk, 0U, true);
CLOCK_SetClkDiv(kCLOCK_DivI3cFclk, 4U, false);
CLOCK_AttachClk(kMAIN_CLK_to_I3CFCLK);
BOARD_InitPins();
BOARD_BootClockPLL150M();
BOARD_InitDebugConsole();
PRINTF("\r\nI3C master read sensor data example.\r\n");
I3C_MasterGetDefaultConfig(&masterConfig);
masterConfig.baudRate_Hz.i2cBaud = EXAMPLE_I2C_BAUDRATE;
masterConfig.baudRate_Hz.i3cPushPullBaud = 12500000U;
masterConfig.baudRate_Hz.i3cOpenDrainBaud = 4000000U;
masterConfig.enableOpenDrainStop = false;
I3C_MasterInit(EXAMPLE_MASTER, &masterConfig, I3C_MASTER_CLOCK_FREQUENCY);
I3C_MasterTransferCreateHandle(EXAMPLE_MASTER, &g_i3c_m_handle, &masterCallback, NULL);
i3c_register_ibi_addr_t ibiRecord = {.address = {SENSOR_ADDR}, .ibiHasPayload = true};
I3C_MasterRegisterIBI(EXAMPLE_MASTER, &ibiRecord);
PRINTF("\r\nI3C master do dynamic address assignment to the sensor slave.\r\n");
uint8_t addressList[1] = {SENSOR_ADDR};
result = I3C_MasterProcessDAA(EXAMPLE_MASTER, addressList, sizeof(addressList));
if (result != kStatus_Success)
{
return -1;
}