Hi
when I want to write data to register, I use the the funtionI3C_WriteSensor,
the first register could be writen, but the second register can't be written successfully.
the result of I3C_MasterTransferNonBlocking is wrong.
I capture the timing diagram, I confuse why the SDA always be low.
status_t I3C_WriteSensor(uint8_t deviceAddress, uint8_t regAddress, uint8_t *regData, size_t dataSize)
{
i3c_master_transfer_t masterXfer;
status_t result = kStatus_Success;
g_ibiWonFlag = false;
g_masterCompletionFlag = false;
g_completionStatus = kStatus_Success;
memset(&masterXfer, 0, sizeof(masterXfer));
/* Set register data */
masterXfer.slaveAddress = deviceAddress;
masterXfer.direction = kI3C_Write;
masterXfer.busType = kI3C_TypeI3CSdr;
masterXfer.subaddress = regAddress;
masterXfer.subaddressSize = 1;
masterXfer.data = regData;
masterXfer.dataSize = dataSize;
masterXfer.flags = kI3C_TransferDefaultFlag;
result = I3C_MasterTransferNonBlocking(EXAMPLE_MASTER, &g_i3c_m_handle, &masterXfer);
if (kStatus_Success != result)
{
return result;
}
more detail about the above figure
thanks