LPC55S36 I3C Slave Issue Handling Custom CCC with No Data

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

LPC55S36 I3C Slave Issue Handling Custom CCC with No Data

Jump to solution
1,392 Views
bell_huang
Contributor III

Two LPC5536-EVK boards were connected for I3C communication, with one configured as the I3C Master and the other as the I3C Slave.
When the Master sends a custom CCC with a data length of 0, the Slave misses to receive the kI3C_SlaveCompletionEvent.

 

Notes:

  • In the sample code I provided, please refer to the I3C_BusMasterCustomCCC function, where cmd.dataSize = 0; indicates the data length.
  • The CCC waveform output from the Master has been verified and is correct.

  • If the CCC includes data with length greater than 0, the Slave is able to receive the kI3C_SlaveCompletionEvent as expected.

 

Case: data length = 1

// Private Write
transfers[7]. event: TransmitEvent
transfers[8]. event: AddressMatchEvent
transfers[9]. event: ReceiveEvent
transfers[10]. event: CompletionEvent. status: 0, count: 6

// Private Read
transfers[0]. event: TransmitEvent
transfers[1]. event: AddressMatchEvent
transfers[2]. event: ReceiveEvent
transfers[3]. event: TransmitEvent
transfers[4]. event: AddressMatchEvent
transfers[5]. event: CompletionEvent. status: 0, count: 5

// Custom CCC
transfers[0]. event: TransmitEvent
transfers[1]. event: TransmitEvent
transfers[2]. event: ReceivedCCCEvent
transfers[3]. event: AddressMatchEvent
transfers[4]. event: ReceiveEvent
transfers[5]. event: CompletionEvent. status: 0, count: 1

// Private Write
transfers[0]. event: TransmitEvent
transfers[1]. event: AddressMatchEvent
transfers[2]. event: ReceiveEvent
transfers[3]. event: CompletionEvent. status: 0, count: 6

// Private Read
transfers[0]. event: TransmitEvent
transfers[1]. event: AddressMatchEvent
transfers[2]. event: ReceiveEvent
transfers[3]. event: TransmitEvent
transfers[4]. event: AddressMatchEvent
transfers[5]. event: CompletionEvent. status: 0, count: 5

 

Case: data length = 0

// Private Write
transfers[7]. event: TransmitEvent
transfers[8]. event: AddressMatchEvent
transfers[9]. event: ReceiveEvent
transfers[10]. event: CompletionEvent. status: 0, count: 6

// Private Read
transfers[0]. event: TransmitEvent
transfers[1]. event: AddressMatchEvent
transfers[2]. event: ReceiveEvent
transfers[3]. event: TransmitEvent
transfers[4]. event: AddressMatchEvent
transfers[5]. event: CompletionEvent. status: 0, count: 5

// Private Write (mix with some events from previous Custom CCC)
transfers[0]. event: TransmitEvent
transfers[1]. event: TransmitEvent
transfers[2]. event: TransmitEvent
transfers[3]. event: ReceivedCCCEvent
transfers[4]. event: AddressMatchEvent
transfers[5]. event: ReceiveEvent
transfers[6]. event: ReceiveEvent
transfers[7]. event: CompletionEvent. status: 0, count: 0

// Private Read
transfers[0]. event: TransmitEvent
transfers[1]. event: AddressMatchEvent
transfers[2]. event: ReceiveEvent
transfers[3]. event: TransmitEvent
transfers[4]. event: AddressMatchEvent
transfers[5]. event: CompletionEvent. status: 0, count: 5

0 Kudos
Reply
1 Solution
887 Views
Harry_Zhang
NXP Employee
NXP Employee

Hi @bell_huang 

Thanks for your information.

I have tested it.

I tested it based on the 

Case 2: I3C_MasterTransferNonBlocking (from fsl_i3c API)

uint8_t cmdId = 0xF0;

memset(&masterXfer, 0, sizeof(masterXfer));
masterXfer.slaveAddress = 0x7E;
masterXfer.data         = &cmdId;
masterXfer.dataSize     = 1;
masterXfer.direction    = kI3C_Write;
masterXfer.busType      = kI3C_TypeI3CSdr;
masterXfer.flags        = (uint32_t)kI3C_TransferNoStopFlag;
g_masterCompletionFlag = false;
I3C_MasterTransferNonBlocking(EXAMPLE_MASTER, &masterHandle, &masterXfer);
while (!g_masterCompletionFlag)
{
    __NOP();
}
if (g_completionStatus != kStatus_Success)
    PRINTF("I3C_MasterTransferNonBlocking Write cmdId failed: %d\r\n", g_completionStatus);


uint8_t data[10];
memset(data, 0, sizeof(data));
data[0] = 0x01;
data[1] = 0x02;
data[2] = 0x03;

memset(&masterXfer, 0, sizeof(masterXfer));
masterXfer.slaveAddress = slaveAddr;
masterXfer.data         = data;
masterXfer.dataSize     = 0;
masterXfer.direction    = kI3C_Write;
masterXfer.busType      = kI3C_TypeI3CSdr;
masterXfer.flags        = (uint32_t)kI3C_TransferRepeatedStartFlag;
g_masterCompletionFlag = false;
I3C_MasterTransferNonBlocking(EXAMPLE_MASTER, &masterHandle, &masterXfer);
while (!g_masterCompletionFlag)
{
    __NOP();
}
if (g_completionStatus != kStatus_Success)
    PRINTF("I3C_MasterTransferNonBlocking Write data failed: %d\r\n", g_completionStatus);

I can reproduce this issue.

So i try to add some debug code.

In fsl_i3c.c

Harry_Zhang_0-1754386837044.png

When Master send the RepeatStart. it will enter while(1);

And i checked the logic analyze.

Harry_Zhang_1-1754387004620.png

The waveform is correct.

So currently, when you want to write date through nonblocking. The SDK only support the DataSize >0.

May I ask if you have datasize=0 with write  based on the nonblocking Related requirements?

If yes, you need modify related code.

BR

Harry

 

 

 

View solution in original post

0 Kudos
Reply
6 Replies
1,312 Views
Harry_Zhang
NXP Employee
NXP Employee

Hi @bell_huang 

Can you share your project so that I can reproduce this issue more easily?

BR

Harry

0 Kudos
Reply
1,289 Views
bell_huang
Contributor III

Hi @Harry_Zhang ,

Test steps:

(1) Reset slave board

(2) Reset master board

    At this step, it can be observed that after the Slave receives the CCC, the callback does not trigger the kI3C_SlaveCompletionEvent.

(3, Optional) Click SW3 on master board

    Master read register

 

Also check out the configuration of CCC data length in I3C_BusMasterCustomCCC function of master code:

cmd.dataSize = 1;

 

==============================

Case: data length = 1

 

--- Master log ---

data: 0x0

Write Custom CCC

Click SW3 to start
data: 0x65 // ---> Indicate that the slave received CCC successfully, so that the master can read the correct value

 

--- Slave log ---

transfers[0]. event: TransmitEvent
transfers[1]. event: TransmitEvent
transfers[2]. event: TransmitEvent
transfers[3]. event: TransmitEvent
transfers[4]. event: TransmitEvent
transfers[5]. event: TransmitEvent
transfers[6]. event: TransmitEvent
transfers[7]. event: TransmitEvent
transfers[8]. event: AddressMatchEvent
transfers[9]. event: ReceiveEvent
transfers[10]. event: TransmitEvent
transfers[11]. event: AddressMatchEvent
transfers[12]. event: CompletionEvent. status: 0, count: 0

transfers[0]. event: TransmitEvent
transfers[1]. event: TransmitEvent
transfers[2]. event: ReceivedCCCEvent
transfers[3]. event: AddressMatchEvent
transfers[4]. event: ReceiveEvent
transfers[5]. event: CompletionEvent. status: 0, count: 1 // ---> Received kI3C_SlaveCompletionEvent after received CCC event

 

// After clicked on master SW3

transfers[0]. event: TransmitEvent
transfers[1]. event: AddressMatchEvent
transfers[2]. event: ReceiveEvent
transfers[3]. event: TransmitEvent
transfers[4]. event: AddressMatchEvent
transfers[5]. event: CompletionEvent. status: 0, count: 0

 

==============================

Case: data length = 0

 

--- Master log ---

data: 0x0

Write Custom CCC

Click SW3 to start
data: 0x90 // ---> Wrong value

 

--- Slave log ---

transfers[0]. event: TransmitEvent
transfers[1]. event: TransmitEvent
transfers[2]. event: TransmitEvent
transfers[3]. event: TransmitEvent
transfers[4]. event: TransmitEvent
transfers[5]. event: TransmitEvent
transfers[6]. event: TransmitEvent
transfers[7]. event: TransmitEvent
transfers[8]. event: AddressMatchEvent
transfers[9]. event: ReceiveEvent
transfers[10]. event: TransmitEvent
transfers[11]. event: AddressMatchEvent
transfers[12]. event: CompletionEvent. status: 0, count: 0

 

// ---> Miss kI3C_SlaveCompletionEvent here after receiving CCC event.

 

// After clicked on master SW3

transfers[0]. event: TransmitEvent
transfers[1]. event: TransmitEvent
transfers[2]. event: TransmitEvent
transfers[3]. event: AddressMatchEvent
transfers[4]. event: ReceivedCCCEvent
transfers[5]. event: ReceiveEvent
transfers[6]. event: TransmitEvent
transfers[7]. event: ReceivedCCCEvent
transfers[8]. event: AddressMatchEvent
transfers[9]. event: CompletionEvent. status: 7904
transfers[10]. event: TransmitEvent
transfers[11]. event: CompletionEvent. status: 0, count: 5

0 Kudos
Reply
982 Views
Harry_Zhang
NXP Employee
NXP Employee

Hi @bell_huang 

Would it be possible to make minimal modifications based on the i3c SDK example to verify the this functionality?

Additionally, could you provide the waveform data?

BR

Harry

0 Kudos
Reply
966 Views
bell_huang
Contributor III

I tried simplifying my example to be even more minimal than the SDK example.
I found that the issue occurs on the Master side, rather than on the Slave side as originally assumed.

In summary, when implementing a Custom CCC with no data on the Master, using I3C_MasterTransferBlocking works correctly. However, when using I3C_MasterTransferNonBlocking, the waveform is incorrect.

The expected waveform sequence for a Custom CCC is: 0x7E -> 0xF0 (Custom CCC) -> 0x09 (Slave Address). Below, I only show the waveform for the Slave Address. The following three cases use the same Slave driver, but different Master driver APIs.

Test steps:

(1) Reset Slave

(2) Reset Master

(3) Click Master SW3

 

Case 1: I3C_MasterTransferBlocking (from fsl_i3c API)
-> The waveform is correct.

uint8_t cmdId = 0xF0;

memset(&masterXfer, 0, sizeof(masterXfer));
masterXfer.slaveAddress = 0x7E;
masterXfer.data         = &cmdId;
masterXfer.dataSize     = 1;
masterXfer.direction    = kI3C_Write;
masterXfer.busType      = kI3C_TypeI3CSdr;
masterXfer.flags        = (uint32_t)kI3C_TransferNoStopFlag;
result                  = I3C_MasterTransferBlocking(EXAMPLE_MASTER, &masterXfer);
if (result != kStatus_Success)
    PRINTF("I3C_MasterTransferBlocking Write cmdId failed: %d\r\n", result);

uint8_t data[10];
memset(data, 0, sizeof(data));
data[0] = 0x01;
data[1] = 0x02;
data[2] = 0x03;

memset(&masterXfer, 0, sizeof(masterXfer));
masterXfer.slaveAddress = slaveAddr;
masterXfer.data         = data;
masterXfer.dataSize     = 0;
masterXfer.direction    = kI3C_Write;
masterXfer.busType      = kI3C_TypeI3CSdr;
masterXfer.flags        = (uint32_t)kI3C_TransferRepeatedStartFlag;
result                  = I3C_MasterTransferBlocking(EXAMPLE_MASTER, &masterXfer);
if (result != kStatus_Success)
    PRINTF("I3C_MasterTransferBlocking Write data failed: %d\r\n", result);

bell_huang_0-1753928201436.png

 

Case 2: I3C_MasterTransferNonBlocking (from fsl_i3c API)
-> The Slave Address sent is incorrect, resulting in a NACK.

uint8_t cmdId = 0xF0;

memset(&masterXfer, 0, sizeof(masterXfer));
masterXfer.slaveAddress = 0x7E;
masterXfer.data         = &cmdId;
masterXfer.dataSize     = 1;
masterXfer.direction    = kI3C_Write;
masterXfer.busType      = kI3C_TypeI3CSdr;
masterXfer.flags        = (uint32_t)kI3C_TransferNoStopFlag;
g_masterCompletionFlag = false;
I3C_MasterTransferNonBlocking(EXAMPLE_MASTER, &masterHandle, &masterXfer);
while (!g_masterCompletionFlag)
{
    __NOP();
}
if (g_completionStatus != kStatus_Success)
    PRINTF("I3C_MasterTransferNonBlocking Write cmdId failed: %d\r\n", g_completionStatus);


uint8_t data[10];
memset(data, 0, sizeof(data));
data[0] = 0x01;
data[1] = 0x02;
data[2] = 0x03;

memset(&masterXfer, 0, sizeof(masterXfer));
masterXfer.slaveAddress = slaveAddr;
masterXfer.data         = data;
masterXfer.dataSize     = 0;
masterXfer.direction    = kI3C_Write;
masterXfer.busType      = kI3C_TypeI3CSdr;
masterXfer.flags        = (uint32_t)kI3C_TransferRepeatedStartFlag;
g_masterCompletionFlag = false;
I3C_MasterTransferNonBlocking(EXAMPLE_MASTER, &masterHandle, &masterXfer);
while (!g_masterCompletionFlag)
{
    __NOP();
}
if (g_completionStatus != kStatus_Success)
    PRINTF("I3C_MasterTransferNonBlocking Write data failed: %d\r\n", g_completionStatus);

bell_huang_1-1753928285555.png

 

If you change dataSize from 0 to 1, the waveform of Slave Address will be correct.

bell_huang_2-1753928603654.png

 

 

Case 3: I3C_BusMasterSendCCC (from fsl_component_i3c_adapter API)
-> Internally uses I3C_MasterTransferNonBlocking, so the behavior is the same as Case 2.

uint8_t cmdId = 0xF0;

i3c_ccc_cmd_t cmd = {0};
uint8_t data[10];
memset(data, 0, sizeof(data));
data[0] = 0x01;
data[1] = 0x02;
data[2] = 0x03;

cmd.isRead   = false;
cmd.cmdId    = 0xF0;
cmd.destAddr = slaveAddr;
cmd.data     = data;
cmd.dataSize = 0;
status_t result = I3C_BusMasterSendCCC(&masterDev, &cmd);
if (result != kStatus_Success)
    PRINTF("I3C_BusMasterSendCCC failed: %d\r\n", result);

 

0 Kudos
Reply
888 Views
Harry_Zhang
NXP Employee
NXP Employee

Hi @bell_huang 

Thanks for your information.

I have tested it.

I tested it based on the 

Case 2: I3C_MasterTransferNonBlocking (from fsl_i3c API)

uint8_t cmdId = 0xF0;

memset(&masterXfer, 0, sizeof(masterXfer));
masterXfer.slaveAddress = 0x7E;
masterXfer.data         = &cmdId;
masterXfer.dataSize     = 1;
masterXfer.direction    = kI3C_Write;
masterXfer.busType      = kI3C_TypeI3CSdr;
masterXfer.flags        = (uint32_t)kI3C_TransferNoStopFlag;
g_masterCompletionFlag = false;
I3C_MasterTransferNonBlocking(EXAMPLE_MASTER, &masterHandle, &masterXfer);
while (!g_masterCompletionFlag)
{
    __NOP();
}
if (g_completionStatus != kStatus_Success)
    PRINTF("I3C_MasterTransferNonBlocking Write cmdId failed: %d\r\n", g_completionStatus);


uint8_t data[10];
memset(data, 0, sizeof(data));
data[0] = 0x01;
data[1] = 0x02;
data[2] = 0x03;

memset(&masterXfer, 0, sizeof(masterXfer));
masterXfer.slaveAddress = slaveAddr;
masterXfer.data         = data;
masterXfer.dataSize     = 0;
masterXfer.direction    = kI3C_Write;
masterXfer.busType      = kI3C_TypeI3CSdr;
masterXfer.flags        = (uint32_t)kI3C_TransferRepeatedStartFlag;
g_masterCompletionFlag = false;
I3C_MasterTransferNonBlocking(EXAMPLE_MASTER, &masterHandle, &masterXfer);
while (!g_masterCompletionFlag)
{
    __NOP();
}
if (g_completionStatus != kStatus_Success)
    PRINTF("I3C_MasterTransferNonBlocking Write data failed: %d\r\n", g_completionStatus);

I can reproduce this issue.

So i try to add some debug code.

In fsl_i3c.c

Harry_Zhang_0-1754386837044.png

When Master send the RepeatStart. it will enter while(1);

And i checked the logic analyze.

Harry_Zhang_1-1754387004620.png

The waveform is correct.

So currently, when you want to write date through nonblocking. The SDK only support the DataSize >0.

May I ask if you have datasize=0 with write  based on the nonblocking Related requirements?

If yes, you need modify related code.

BR

Harry

 

 

 

0 Kudos
Reply
876 Views
bell_huang
Contributor III

Hi @Harry_Zhang ,

I’m not sure how to modify the code related to the non-blocking function. Fortunately, it is confirmed that the blocking function works correctly, so for now, I will use I3C_MasterTransferBlocking to implement the Custom CCC.

Since I typically use the higher-level API (fsl_component_i3c_adapter), it would be ideal if the NXP SDK team could address this issue in a future update. Once it is fixed, I will switch back to using I3C_BusMasterSendCCC for Custom CCC implementation.

0 Kudos
Reply
%3CLINGO-SUB%20id%3D%22lingo-sub-2131548%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3ELPC55S36%20I3C%20Slave%20Issue%20Handling%20Custom%20CCC%20with%20No%20Data%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2131548%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3ETwo%20%3CA%20href%3D%22https%3A%2F%2Fwww.nxp.com%2Fdesign%2Fdesign-center%2Fsoftware%2Fdevelopment-software%2Fmcuxpresso-software-and-tools-%2Flpcxpresso-boards%2Flpcxpresso55s36-development-board%3ALPCXpresso55S36%3F_gl%3D1*ynjdvb*_ga*Njc1NDM1MzQ0LjE3NDkxNzY4NDE.*_ga_WM5LE0KMSH*czE3NTIxMzMxOTYkbzIxJGcxJHQxNzUyMTM0MDUwJGo1OSRsMCRoMTEyMzgwOTEwNQ..%22%20target%3D%22_self%22%20rel%3D%22nofollow%20noopener%20noreferrer%22%3ELPC5536-EVK%3C%2FA%3E%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3Eboards%20were%20connected%20for%20I3C%20communication%2C%20with%20one%20configured%20as%20the%20I3C%20Master%20and%20the%20other%20as%20the%20I3C%20Slave.%3CBR%20%2F%3EWhen%20the%20Master%20sends%20a%20%3CSTRONG%3Ecustom%20CCC%3C%2FSTRONG%3E%26nbsp%3Bwith%20a%20%3CSTRONG%3Edata%20length%20of%200%3C%2FSTRONG%3E%2C%20the%20Slave%20misses%20to%20receive%20the%20kI3C_SlaveCompletionEvent.%3C%2FP%3E%3CBR%20%2F%3E%3CP%3E%3CSTRONG%3ENotes%3A%3C%2FSTRONG%3E%3C%2FP%3E%3CUL%3E%3CLI%3EIn%20the%20sample%20code%20I%20provided%2C%20please%20refer%20to%20the%20I3C_BusMasterCustomCCC%20function%2C%20where%20cmd.dataSize%20%3D%200%3B%20indicates%20the%20data%20length.%3C%2FLI%3E%3CLI%3E%3CP%3EThe%20CCC%20waveform%20output%20from%20the%20Master%20has%20been%20verified%20and%20is%20correct.%3C%2FP%3E%3C%2FLI%3E%3CLI%3E%3CP%3EIf%20the%20CCC%20includes%20data%20with%20length%20greater%20than%200%2C%20the%20Slave%20is%20able%20to%20receive%20the%20kI3C_SlaveCompletionEvent%20as%20expected.%3C%2FP%3E%3C%2FLI%3E%3C%2FUL%3E%3CBR%20%2F%3E%3CP%3ECase%3A%20data%20length%20%3D%201%3C%2FP%3E%3CP%3E%2F%2F%20Private%20Write%3CBR%20%2F%3Etransfers%5B7%5D.%20event%3A%20TransmitEvent%3CBR%20%2F%3Etransfers%5B8%5D.%20event%3A%20AddressMatchEvent%3CBR%20%2F%3Etransfers%5B9%5D.%20event%3A%20ReceiveEvent%3CBR%20%2F%3Etransfers%5B10%5D.%20event%3A%20CompletionEvent.%20status%3A%200%2C%20count%3A%206%3C%2FP%3E%3CP%3E%2F%2F%20Private%20Read%3CBR%20%2F%3Etransfers%5B0%5D.%20event%3A%20TransmitEvent%3CBR%20%2F%3Etransfers%5B1%5D.%20event%3A%20AddressMatchEvent%3CBR%20%2F%3Etransfers%5B2%5D.%20event%3A%20ReceiveEvent%3CBR%20%2F%3Etransfers%5B3%5D.%20event%3A%20TransmitEvent%3CBR%20%2F%3Etransfers%5B4%5D.%20event%3A%20AddressMatchEvent%3CBR%20%2F%3Etransfers%5B5%5D.%20event%3A%20CompletionEvent.%20status%3A%200%2C%20count%3A%205%3C%2FP%3E%3CP%3E%2F%2F%20Custom%20CCC%3CBR%20%2F%3Etransfers%5B0%5D.%20event%3A%20TransmitEvent%3CBR%20%2F%3Etransfers%5B1%5D.%20event%3A%20TransmitEvent%3CBR%20%2F%3Etransfers%5B2%5D.%20event%3A%20ReceivedCCCEvent%3CBR%20%2F%3Etransfers%5B3%5D.%20event%3A%20AddressMatchEvent%3CBR%20%2F%3Etransfers%5B4%5D.%20event%3A%20ReceiveEvent%3CBR%20%2F%3Etransfers%5B5%5D.%20event%3A%20CompletionEvent.%20status%3A%200%2C%20count%3A%201%3C%2FP%3E%3CP%3E%2F%2F%20Private%20Write%3CBR%20%2F%3Etransfers%5B0%5D.%20event%3A%20TransmitEvent%3CBR%20%2F%3Etransfers%5B1%5D.%20event%3A%20AddressMatchEvent%3CBR%20%2F%3Etransfers%5B2%5D.%20event%3A%20ReceiveEvent%3CBR%20%2F%3Etransfers%5B3%5D.%20event%3A%20CompletionEvent.%20status%3A%200%2C%20count%3A%206%3C%2FP%3E%3CP%3E%2F%2F%20Private%20Read%3CBR%20%2F%3Etransfers%5B0%5D.%20event%3A%20TransmitEvent%3CBR%20%2F%3Etransfers%5B1%5D.%20event%3A%20AddressMatchEvent%3CBR%20%2F%3Etransfers%5B2%5D.%20event%3A%20ReceiveEvent%3CBR%20%2F%3Etransfers%5B3%5D.%20event%3A%20TransmitEvent%3CBR%20%2F%3Etransfers%5B4%5D.%20event%3A%20AddressMatchEvent%3CBR%20%2F%3Etransfers%5B5%5D.%20event%3A%20CompletionEvent.%20status%3A%200%2C%20count%3A%205%3C%2FP%3E%3CBR%20%2F%3E%3CP%3ECase%3A%20data%20length%20%3D%200%3C%2FP%3E%3CP%3E%2F%2F%20Private%20Write%3CBR%20%2F%3Etransfers%5B7%5D.%20event%3A%20TransmitEvent%3CBR%20%2F%3Etransfers%5B8%5D.%20event%3A%20AddressMatchEvent%3CBR%20%2F%3Etransfers%5B9%5D.%20event%3A%20ReceiveEvent%3CBR%20%2F%3Etransfers%5B10%5D.%20event%3A%20CompletionEvent.%20status%3A%200%2C%20count%3A%206%3C%2FP%3E%3CP%3E%2F%2F%20Private%20Read%3CBR%20%2F%3Etransfers%5B0%5D.%20event%3A%20TransmitEvent%3CBR%20%2F%3Etransfers%5B1%5D.%20event%3A%20AddressMatchEvent%3CBR%20%2F%3Etransfers%5B2%5D.%20event%3A%20ReceiveEvent%3CBR%20%2F%3Etransfers%5B3%5D.%20event%3A%20TransmitEvent%3CBR%20%2F%3Etransfers%5B4%5D.%20event%3A%20AddressMatchEvent%3CBR%20%2F%3Etransfers%5B5%5D.%20event%3A%20CompletionEvent.%20status%3A%200%2C%20count%3A%205%3C%2FP%3E%3CP%3E%2F%2F%20Private%20Write%20(mix%20with%20some%20events%20from%20previous%20Custom%20CCC)%3CBR%20%2F%3Etransfers%5B0%5D.%20event%3A%20TransmitEvent%3CBR%20%2F%3Etransfers%5B1%5D.%20event%3A%20TransmitEvent%3CBR%20%2F%3Etransfers%5B2%5D.%20event%3A%20TransmitEvent%3CBR%20%2F%3Etransfers%5B3%5D.%20event%3A%20ReceivedCCCEvent%3CBR%20%2F%3Etransfers%5B4%5D.%20event%3A%20AddressMatchEvent%3CBR%20%2F%3Etransfers%5B5%5D.%20event%3A%20ReceiveEvent%3CBR%20%2F%3Etransfers%5B6%5D.%20event%3A%20ReceiveEvent%3CBR%20%2F%3Etransfers%5B7%5D.%20event%3A%20CompletionEvent.%20status%3A%200%2C%20count%3A%200%3C%2FP%3E%3CP%3E%2F%2F%20Private%20Read%3CBR%20%2F%3Etransfers%5B0%5D.%20event%3A%20TransmitEvent%3CBR%20%2F%3Etransfers%5B1%5D.%20event%3A%20AddressMatchEvent%3CBR%20%2F%3Etransfers%5B2%5D.%20event%3A%20ReceiveEvent%3CBR%20%2F%3Etransfers%5B3%5D.%20event%3A%20TransmitEvent%3CBR%20%2F%3Etransfers%5B4%5D.%20event%3A%20AddressMatchEvent%3CBR%20%2F%3Etransfers%5B5%5D.%20event%3A%20CompletionEvent.%20status%3A%200%2C%20count%3A%205%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2147166%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20LPC55S36%20I3C%20Slave%20Issue%20Handling%20Custom%20CCC%20with%20No%20Data%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2147166%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3EHi%26nbsp%3B%3CA%20href%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F229957%22%20target%3D%22_blank%22%3E%40Harry_Zhang%3C%2FA%3E%26nbsp%3B%2C%3C%2FP%3E%3CP%3EI%E2%80%99m%20not%20sure%20how%20to%20modify%20the%20code%20related%20to%20the%20non-blocking%20function.%20Fortunately%2C%20it%20is%20confirmed%20that%20the%20blocking%20function%20works%20correctly%2C%20so%20for%20now%2C%20I%20will%20use%20%3CSTRONG%3EI3C_MasterTransferBlocking%3C%2FSTRONG%3E%20to%20implement%20the%20Custom%20CCC.%3C%2FP%3E%3CP%3ESince%20I%20typically%20use%20the%20higher-level%20API%20(fsl_component_i3c_adapter)%2C%20it%20would%20be%20ideal%20if%20the%20NXP%20SDK%20team%20could%20address%20this%20issue%20in%20a%20future%20update.%20Once%20it%20is%20fixed%2C%20I%20will%20switch%20back%20to%20using%20%3CSTRONG%3EI3C_BusMasterSendCCC%3C%2FSTRONG%3E%20for%20Custom%20CCC%20implementation.%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2146797%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20LPC55S36%20I3C%20Slave%20Issue%20Handling%20Custom%20CCC%20with%20No%20Data%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2146797%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3EHi%26nbsp%3B%3CA%20href%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F228396%22%20target%3D%22_blank%22%3E%40bell_huang%3C%2FA%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3EThanks%20for%20your%20information.%3C%2FP%3E%0A%3CP%3EI%20have%20tested%20it.%3C%2FP%3E%0A%3CP%3EI%20tested%20it%20based%20on%20the%26nbsp%3B%3C%2FP%3E%0A%3CP%3ECase%202%3A%20I3C_MasterTransferNonBlocking%20(from%20fsl_i3c%20API)%3C%2FP%3E%0A%3CPRE%20class%3D%22lia-code-sample%20%20language-c%22%3E%3CCODE%3Euint8_t%20cmdId%20%3D%200xF0%3B%0A%0Amemset(%26amp%3BmasterXfer%2C%200%2C%20sizeof(masterXfer))%3B%0AmasterXfer.slaveAddress%20%3D%200x7E%3B%0AmasterXfer.data%20%20%20%20%20%20%20%20%20%3D%20%26amp%3BcmdId%3B%0AmasterXfer.dataSize%20%20%20%20%20%3D%201%3B%0AmasterXfer.direction%20%20%20%20%3D%20kI3C_Write%3B%0AmasterXfer.busType%20%20%20%20%20%20%3D%20kI3C_TypeI3CSdr%3B%0AmasterXfer.flags%20%20%20%20%20%20%20%20%3D%20(uint32_t)kI3C_TransferNoStopFlag%3B%0Ag_masterCompletionFlag%20%3D%20false%3B%0AI3C_MasterTransferNonBlocking(EXAMPLE_MASTER%2C%20%26amp%3BmasterHandle%2C%20%26amp%3BmasterXfer)%3B%0Awhile%20(!g_masterCompletionFlag)%0A%7B%0A%20%20%20%20__NOP()%3B%0A%7D%0Aif%20(g_completionStatus%20!%3D%20kStatus_Success)%0A%20%20%20%20PRINTF(%22I3C_MasterTransferNonBlocking%20Write%20cmdId%20failed%3A%20%25d%5Cr%5Cn%22%2C%20g_completionStatus)%3B%0A%0A%0Auint8_t%20data%5B10%5D%3B%0Amemset(data%2C%200%2C%20sizeof(data))%3B%0Adata%5B0%5D%20%3D%200x01%3B%0Adata%5B1%5D%20%3D%200x02%3B%0Adata%5B2%5D%20%3D%200x03%3B%0A%0Amemset(%26amp%3BmasterXfer%2C%200%2C%20sizeof(masterXfer))%3B%0AmasterXfer.slaveAddress%20%3D%20slaveAddr%3B%0AmasterXfer.data%20%20%20%20%20%20%20%20%20%3D%20data%3B%0AmasterXfer.dataSize%20%20%20%20%20%3D%200%3B%0AmasterXfer.direction%20%20%20%20%3D%20kI3C_Write%3B%0AmasterXfer.busType%20%20%20%20%20%20%3D%20kI3C_TypeI3CSdr%3B%0AmasterXfer.flags%20%20%20%20%20%20%20%20%3D%20(uint32_t)kI3C_TransferRepeatedStartFlag%3B%0Ag_masterCompletionFlag%20%3D%20false%3B%0AI3C_MasterTransferNonBlocking(EXAMPLE_MASTER%2C%20%26amp%3BmasterHandle%2C%20%26amp%3BmasterXfer)%3B%0Awhile%20(!g_masterCompletionFlag)%0A%7B%0A%20%20%20%20__NOP()%3B%0A%7D%0Aif%20(g_completionStatus%20!%3D%20kStatus_Success)%0A%20%20%20%20PRINTF(%22I3C_MasterTransferNonBlocking%20Write%20data%20failed%3A%20%25d%5Cr%5Cn%22%2C%20g_completionStatus)%3B%3C%2FCODE%3E%3C%2FPRE%3E%0A%3CP%3EI%20can%20reproduce%20this%20issue.%3C%2FP%3E%0A%3CP%3ESo%20i%20try%20to%20add%20some%20debug%20code.%3C%2FP%3E%0A%3CP%3EIn%20fsl_i3c.c%3C%2FP%3E%0A%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22Harry_Zhang_0-1754386837044.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3Cspan%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22Harry_Zhang_0-1754386837044.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3Cimg%20src%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F350960i16800DE69713CCE5%2Fimage-size%2Fmedium%3Fv%3Dv2%26amp%3Bpx%3D400%22%20role%3D%22button%22%20title%3D%22Harry_Zhang_0-1754386837044.png%22%20alt%3D%22Harry_Zhang_0-1754386837044.png%22%20%2F%3E%3C%2Fspan%3E%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3EWhen%20Master%20send%20the%20RepeatStart.%20it%20will%20enter%20while(1)%3B%3C%2FP%3E%0A%3CP%3EAnd%20i%20checked%20the%20logic%20analyze.%3C%2FP%3E%0A%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22Harry_Zhang_1-1754387004620.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3Cspan%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22Harry_Zhang_1-1754387004620.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3Cimg%20src%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F350961i32FD2C39C8A71638%2Fimage-size%2Fmedium%3Fv%3Dv2%26amp%3Bpx%3D400%22%20role%3D%22button%22%20title%3D%22Harry_Zhang_1-1754387004620.png%22%20alt%3D%22Harry_Zhang_1-1754387004620.png%22%20%2F%3E%3C%2Fspan%3E%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3EThe%20waveform%20is%20correct.%3C%2FP%3E%0A%3CP%3ESo%20currently%2C%20when%20you%20want%20to%20write%20date%20through%20nonblocking.%20The%20SDK%20only%20support%20the%20DataSize%20%26gt%3B0.%3C%2FP%3E%0A%3CP%3EMay%20I%20ask%20if%20you%20have%20datasize%3D0%20with%20write%26nbsp%3B%20based%20on%20the%20nonblocking%20Related%20requirements%3CSPAN%3E%3F%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3E%3CSPAN%3EIf%20yes%2C%20you%20need%20modify%20related%20code.%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3E%3CSPAN%3EBR%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3E%3CSPAN%3EHarry%3C%2FSPAN%3E%3C%2FP%3E%0A%3CBR%20%2F%3E%0A%3CBR%20%2F%3E%0A%3CBR%20%2F%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2144032%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20LPC55S36%20I3C%20Slave%20Issue%20Handling%20Custom%20CCC%20with%20No%20Data%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2144032%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3EI%20tried%20simplifying%20my%20example%20to%20be%20even%20more%20minimal%20than%20the%20SDK%20example.%3CBR%20%2F%3E%3CSTRONG%3EI%20found%20that%20the%20issue%20occurs%20on%20the%20Master%20side%3C%2FSTRONG%3E%2C%20rather%20than%20on%20the%20Slave%20side%20as%20originally%20assumed.%3C%2FP%3E%3CP%3EIn%20summary%2C%20when%20implementing%20a%20Custom%20CCC%20with%20no%20data%20on%20the%20Master%2C%20using%20%3CSTRONG%3EI3C_MasterTransferBlocking%3C%2FSTRONG%3E%20works%20correctly.%20However%2C%20when%20using%20%3CSTRONG%3EI3C_MasterTransferNonBlocking%3C%2FSTRONG%3E%2C%20the%20waveform%20is%20incorrect.%3C%2FP%3E%3CP%3EThe%20expected%20waveform%20sequence%20for%20a%20Custom%20CCC%20is%3A%200x7E%20-%26gt%3B%200xF0%20(Custom%20CCC)%20-%26gt%3B%200x09%20(Slave%20Address).%20Below%2C%20I%20only%20show%20the%20waveform%20for%20the%20Slave%20Address.%20The%20following%20three%20cases%20use%20the%20same%20Slave%20driver%2C%20but%20different%20Master%20driver%20APIs.%3C%2FP%3E%3CP%3ETest%20steps%3A%3C%2FP%3E%3CP%3E(1)%20Reset%20Slave%3C%2FP%3E%3CP%3E(2)%20Reset%20Master%3C%2FP%3E%3CP%3E(3)%20Click%20Master%20SW3%3C%2FP%3E%3CBR%20%2F%3E%3CP%3E%3CSTRONG%3ECase%201%3A%20I3C_MasterTransferBlocking%3C%2FSTRONG%3E%20(from%20fsl_i3c%20API)%3CBR%20%2F%3E-%26gt%3B%20The%20waveform%20is%20correct.%3C%2FP%3E%3CPRE%20class%3D%22lia-code-sample%20language-c%22%3E%3CCODE%3Euint8_t%20cmdId%20%3D%200xF0%3B%0A%0Amemset(%26amp%3BmasterXfer%2C%200%2C%20sizeof(masterXfer))%3B%0AmasterXfer.slaveAddress%20%3D%200x7E%3B%0AmasterXfer.data%20%20%20%20%20%20%20%20%20%3D%20%26amp%3BcmdId%3B%0AmasterXfer.dataSize%20%20%20%20%20%3D%201%3B%0AmasterXfer.direction%20%20%20%20%3D%20kI3C_Write%3B%0AmasterXfer.busType%20%20%20%20%20%20%3D%20kI3C_TypeI3CSdr%3B%0AmasterXfer.flags%20%20%20%20%20%20%20%20%3D%20(uint32_t)kI3C_TransferNoStopFlag%3B%0Aresult%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%20I3C_MasterTransferBlocking(EXAMPLE_MASTER%2C%20%26amp%3BmasterXfer)%3B%0Aif%20(result%20!%3D%20kStatus_Success)%0A%20%20%20%20PRINTF(%22I3C_MasterTransferBlocking%20Write%20cmdId%20failed%3A%20%25d%5Cr%5Cn%22%2C%20result)%3B%0A%0Auint8_t%20data%5B10%5D%3B%0Amemset(data%2C%200%2C%20sizeof(data))%3B%0Adata%5B0%5D%20%3D%200x01%3B%0Adata%5B1%5D%20%3D%200x02%3B%0Adata%5B2%5D%20%3D%200x03%3B%0A%0Amemset(%26amp%3BmasterXfer%2C%200%2C%20sizeof(masterXfer))%3B%0AmasterXfer.slaveAddress%20%3D%20slaveAddr%3B%0AmasterXfer.data%20%20%20%20%20%20%20%20%20%3D%20data%3B%0AmasterXfer.dataSize%20%20%20%20%20%3D%200%3B%0AmasterXfer.direction%20%20%20%20%3D%20kI3C_Write%3B%0AmasterXfer.busType%20%20%20%20%20%20%3D%20kI3C_TypeI3CSdr%3B%0AmasterXfer.flags%20%20%20%20%20%20%20%20%3D%20(uint32_t)kI3C_TransferRepeatedStartFlag%3B%0Aresult%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%20I3C_MasterTransferBlocking(EXAMPLE_MASTER%2C%20%26amp%3BmasterXfer)%3B%0Aif%20(result%20!%3D%20kStatus_Success)%0A%20%20%20%20PRINTF(%22I3C_MasterTransferBlocking%20Write%20data%20failed%3A%20%25d%5Cr%5Cn%22%2C%20result)%3B%3C%2FCODE%3E%3C%2FPRE%3E%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22bell_huang_0-1753928201436.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3Cspan%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22bell_huang_0-1753928201436.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3Cimg%20src%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F350349iC97C90E23DA46556%2Fimage-size%2Fmedium%3Fv%3Dv2%26amp%3Bpx%3D400%22%20role%3D%22button%22%20title%3D%22bell_huang_0-1753928201436.png%22%20alt%3D%22bell_huang_0-1753928201436.png%22%20%2F%3E%3C%2Fspan%3E%3C%2FSPAN%3E%3C%2FP%3E%3CBR%20%2F%3E%3CP%3E%3CSTRONG%3ECase%202%3A%20I3C_MasterTransferNonBlocking%3C%2FSTRONG%3E%20(from%20fsl_i3c%20API)%3CBR%20%2F%3E-%26gt%3B%20The%20Slave%20Address%20sent%20is%20incorrect%2C%20resulting%20in%20a%20NACK.%3C%2FP%3E%3CPRE%20class%3D%22lia-code-sample%20language-c%22%3E%3CCODE%3Euint8_t%20cmdId%20%3D%200xF0%3B%0A%0Amemset(%26amp%3BmasterXfer%2C%200%2C%20sizeof(masterXfer))%3B%0AmasterXfer.slaveAddress%20%3D%200x7E%3B%0AmasterXfer.data%20%20%20%20%20%20%20%20%20%3D%20%26amp%3BcmdId%3B%0AmasterXfer.dataSize%20%20%20%20%20%3D%201%3B%0AmasterXfer.direction%20%20%20%20%3D%20kI3C_Write%3B%0AmasterXfer.busType%20%20%20%20%20%20%3D%20kI3C_TypeI3CSdr%3B%0AmasterXfer.flags%20%20%20%20%20%20%20%20%3D%20(uint32_t)kI3C_TransferNoStopFlag%3B%0Ag_masterCompletionFlag%20%3D%20false%3B%0AI3C_MasterTransferNonBlocking(EXAMPLE_MASTER%2C%20%26amp%3BmasterHandle%2C%20%26amp%3BmasterXfer)%3B%0Awhile%20(!g_masterCompletionFlag)%0A%7B%0A%20%20%20%20__NOP()%3B%0A%7D%0Aif%20(g_completionStatus%20!%3D%20kStatus_Success)%0A%20%20%20%20PRINTF(%22I3C_MasterTransferNonBlocking%20Write%20cmdId%20failed%3A%20%25d%5Cr%5Cn%22%2C%20g_completionStatus)%3B%0A%0A%0Auint8_t%20data%5B10%5D%3B%0Amemset(data%2C%200%2C%20sizeof(data))%3B%0Adata%5B0%5D%20%3D%200x01%3B%0Adata%5B1%5D%20%3D%200x02%3B%0Adata%5B2%5D%20%3D%200x03%3B%0A%0Amemset(%26amp%3BmasterXfer%2C%200%2C%20sizeof(masterXfer))%3B%0AmasterXfer.slaveAddress%20%3D%20slaveAddr%3B%0AmasterXfer.data%20%20%20%20%20%20%20%20%20%3D%20data%3B%0AmasterXfer.dataSize%20%20%20%20%20%3D%200%3B%0AmasterXfer.direction%20%20%20%20%3D%20kI3C_Write%3B%0AmasterXfer.busType%20%20%20%20%20%20%3D%20kI3C_TypeI3CSdr%3B%0AmasterXfer.flags%20%20%20%20%20%20%20%20%3D%20(uint32_t)kI3C_TransferRepeatedStartFlag%3B%0Ag_masterCompletionFlag%20%3D%20false%3B%0AI3C_MasterTransferNonBlocking(EXAMPLE_MASTER%2C%20%26amp%3BmasterHandle%2C%20%26amp%3BmasterXfer)%3B%0Awhile%20(!g_masterCompletionFlag)%0A%7B%0A%20%20%20%20__NOP()%3B%0A%7D%0Aif%20(g_completionStatus%20!%3D%20kStatus_Success)%0A%20%20%20%20PRINTF(%22I3C_MasterTransferNonBlocking%20Write%20data%20failed%3A%20%25d%5Cr%5Cn%22%2C%20g_completionStatus)%3B%3C%2FCODE%3E%3C%2FPRE%3E%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22bell_huang_1-1753928285555.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3Cspan%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22bell_huang_1-1753928285555.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3Cimg%20src%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F350350i355526341BE8F7BE%2Fimage-size%2Fmedium%3Fv%3Dv2%26amp%3Bpx%3D400%22%20role%3D%22button%22%20title%3D%22bell_huang_1-1753928285555.png%22%20alt%3D%22bell_huang_1-1753928285555.png%22%20%2F%3E%3C%2Fspan%3E%3C%2FSPAN%3E%3C%2FP%3E%3CBR%20%2F%3E%3CP%3EIf%20you%20change%20dataSize%20from%200%20to%201%2C%20the%20waveform%20of%20Slave%20Address%20will%20be%20correct.%3C%2FP%3E%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22bell_huang_2-1753928603654.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3Cspan%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22bell_huang_2-1753928603654.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3Cimg%20src%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F350352iBDEBC58112A606BC%2Fimage-size%2Fmedium%3Fv%3Dv2%26amp%3Bpx%3D400%22%20role%3D%22button%22%20title%3D%22bell_huang_2-1753928603654.png%22%20alt%3D%22bell_huang_2-1753928603654.png%22%20%2F%3E%3C%2Fspan%3E%3C%2FSPAN%3E%3C%2FP%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CP%3E%3CSTRONG%3ECase%203%3A%20I3C_BusMasterSendCCC%3C%2FSTRONG%3E%20(from%20fsl_component_i3c_adapter%20API)%3CBR%20%2F%3E-%26gt%3B%20Internally%20uses%20I3C_MasterTransferNonBlocking%2C%20so%20the%20behavior%20is%20the%20same%20as%20Case%202.%3C%2FP%3E%3CPRE%20class%3D%22lia-code-sample%20language-c%22%3E%3CCODE%3Euint8_t%20cmdId%20%3D%200xF0%3B%0A%0Ai3c_ccc_cmd_t%20cmd%20%3D%20%7B0%7D%3B%0Auint8_t%20data%5B10%5D%3B%0Amemset(data%2C%200%2C%20sizeof(data))%3B%0Adata%5B0%5D%20%3D%200x01%3B%0Adata%5B1%5D%20%3D%200x02%3B%0Adata%5B2%5D%20%3D%200x03%3B%0A%0Acmd.isRead%20%20%20%3D%20false%3B%0Acmd.cmdId%20%20%20%20%3D%200xF0%3B%0Acmd.destAddr%20%3D%20slaveAddr%3B%0Acmd.data%20%20%20%20%20%3D%20data%3B%0Acmd.dataSize%20%3D%200%3B%0Astatus_t%20result%20%3D%20I3C_BusMasterSendCCC(%26amp%3BmasterDev%2C%20%26amp%3Bcmd)%3B%0Aif%20(result%20!%3D%20kStatus_Success)%0A%20%20%20%20PRINTF(%22I3C_BusMasterSendCCC%20failed%3A%20%25d%5Cr%5Cn%22%2C%20result)%3B%3C%2FCODE%3E%3C%2FPRE%3E%3CBR%20%2F%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2143289%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20LPC55S36%20I3C%20Slave%20Issue%20Handling%20Custom%20CCC%20with%20No%20Data%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2143289%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3EHi%26nbsp%3B%3CA%20href%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F228396%22%20target%3D%22_blank%22%3E%40bell_huang%3C%2FA%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%3CSPAN%3EWould%20it%20be%20possible%20to%20make%20minimal%20modifications%20based%20on%20the%20i3c%20SDK%20example%20to%20verify%20the%20this%20functionality%3F%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3E%3CSPAN%3EAdditionally%2C%20could%20you%20provide%20the%20waveform%20data%3F%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3E%3CSPAN%3EBR%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3E%3CSPAN%3EHarry%3C%2FSPAN%3E%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2133692%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20LPC55S36%20I3C%20Slave%20Issue%20Handling%20Custom%20CCC%20with%20No%20Data%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2133692%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3EHi%26nbsp%3B%3CA%20href%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F229957%22%20target%3D%22_blank%22%3E%40Harry_Zhang%3C%2FA%3E%26nbsp%3B%2C%3C%2FP%3E%3CP%3ETest%20steps%3A%3C%2FP%3E%3CP%3E(1)%20Reset%20slave%20board%3C%2FP%3E%3CP%3E(2)%20Reset%20master%20board%3C%2FP%3E%3CP%3E%26nbsp%3B%20%26nbsp%3B%20At%20this%20step%2C%20it%20can%20be%20observed%20that%20after%20the%20Slave%20receives%20the%20CCC%2C%20the%20callback%20does%20not%20trigger%20the%20kI3C_SlaveCompletionEvent.%3C%2FP%3E%3CP%3E(3%2C%20Optional)%20Click%20SW3%20on%20master%20board%3C%2FP%3E%3CP%3E%26nbsp%3B%20%26nbsp%3B%20Master%20read%20register%3C%2FP%3E%3CBR%20%2F%3E%3CP%3EAlso%20check%20out%20the%20configuration%20of%20CCC%20data%20length%20in%26nbsp%3BI3C_BusMasterCustomCCC%20function%20of%20master%20code%3A%3C%2FP%3E%3CP%3Ecmd.dataSize%20%3D%201%3B%3C%2FP%3E%3CBR%20%2F%3E%3CP%3E%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3C%2FP%3E%3CP%3E%3CSPAN%3ECase%3A%20data%20length%20%3D%201%3C%2FSPAN%3E%3C%2FP%3E%3CBR%20%2F%3E%3CP%3E%3CSPAN%3E---%20Master%20log%20---%3C%2FSPAN%3E%3C%2FP%3E%3CP%3Edata%3A%200x0%3C%2FP%3E%3CP%3EWrite%20Custom%20CCC%3C%2FP%3E%3CP%3EClick%20SW3%20to%20start%3CBR%20%2F%3Edata%3A%200x65%20%2F%2F%20---%26gt%3B%20Indicate%20that%20the%20slave%20received%20CCC%20successfully%2C%20so%20that%20the%20master%20can%20read%20the%20correct%20value%3C%2FP%3E%3CBR%20%2F%3E%3CP%3E%3CSPAN%3E---%20Slave%20log%20---%3C%2FSPAN%3E%3C%2FP%3E%3CP%3Etransfers%5B0%5D.%20event%3A%20TransmitEvent%3CBR%20%2F%3Etransfers%5B1%5D.%20event%3A%20TransmitEvent%3CBR%20%2F%3Etransfers%5B2%5D.%20event%3A%20TransmitEvent%3CBR%20%2F%3Etransfers%5B3%5D.%20event%3A%20TransmitEvent%3CBR%20%2F%3Etransfers%5B4%5D.%20event%3A%20TransmitEvent%3CBR%20%2F%3Etransfers%5B5%5D.%20event%3A%20TransmitEvent%3CBR%20%2F%3Etransfers%5B6%5D.%20event%3A%20TransmitEvent%3CBR%20%2F%3Etransfers%5B7%5D.%20event%3A%20TransmitEvent%3CBR%20%2F%3Etransfers%5B8%5D.%20event%3A%20AddressMatchEvent%3CBR%20%2F%3Etransfers%5B9%5D.%20event%3A%20ReceiveEvent%3CBR%20%2F%3Etransfers%5B10%5D.%20event%3A%20TransmitEvent%3CBR%20%2F%3Etransfers%5B11%5D.%20event%3A%20AddressMatchEvent%3CBR%20%2F%3Etransfers%5B12%5D.%20event%3A%20CompletionEvent.%20status%3A%200%2C%20count%3A%200%3C%2FP%3E%3CP%3Etransfers%5B0%5D.%20event%3A%20TransmitEvent%3CBR%20%2F%3Etransfers%5B1%5D.%20event%3A%20TransmitEvent%3CBR%20%2F%3Etransfers%5B2%5D.%20event%3A%20ReceivedCCCEvent%3CBR%20%2F%3Etransfers%5B3%5D.%20event%3A%20AddressMatchEvent%3CBR%20%2F%3Etransfers%5B4%5D.%20event%3A%20ReceiveEvent%3CBR%20%2F%3Etransfers%5B5%5D.%20event%3A%20CompletionEvent.%20status%3A%200%2C%20count%3A%201%20%2F%2F%20---%26gt%3B%20Received%26nbsp%3B%3CSPAN%3EkI3C_SlaveCompletionEvent%20after%20received%20CCC%20event%3C%2FSPAN%3E%3C%2FP%3E%3CBR%20%2F%3E%3CP%3E%2F%2F%20After%20clicked%20on%20master%20SW3%3C%2FP%3E%3CP%3Etransfers%5B0%5D.%20event%3A%20TransmitEvent%3CBR%20%2F%3Etransfers%5B1%5D.%20event%3A%20AddressMatchEvent%3CBR%20%2F%3Etransfers%5B2%5D.%20event%3A%20ReceiveEvent%3CBR%20%2F%3Etransfers%5B3%5D.%20event%3A%20TransmitEvent%3CBR%20%2F%3Etransfers%5B4%5D.%20event%3A%20AddressMatchEvent%3CBR%20%2F%3Etransfers%5B5%5D.%20event%3A%20CompletionEvent.%20status%3A%200%2C%20count%3A%200%3C%2FP%3E%3CBR%20%2F%3E%3CP%3E%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3C%2FP%3E%3CP%3E%3CSPAN%3ECase%3A%20data%20length%20%3D%200%3C%2FSPAN%3E%3C%2FP%3E%3CBR%20%2F%3E%3CP%3E%3CSPAN%3E---%20Master%20log%20---%3C%2FSPAN%3E%3C%2FP%3E%3CP%3Edata%3A%200x0%3C%2FP%3E%3CP%3EWrite%20Custom%20CCC%3C%2FP%3E%3CP%3EClick%20SW3%20to%20start%3CBR%20%2F%3Edata%3A%200x90%26nbsp%3B%2F%2F%20---%26gt%3B%20Wrong%20value%3C%2FP%3E%3CBR%20%2F%3E%3CP%3E%3CSPAN%3E---%20Slave%20log%20---%3C%2FSPAN%3E%3C%2FP%3E%3CP%3Etransfers%5B0%5D.%20event%3A%20TransmitEvent%3CBR%20%2F%3Etransfers%5B1%5D.%20event%3A%20TransmitEvent%3CBR%20%2F%3Etransfers%5B2%5D.%20event%3A%20TransmitEvent%3CBR%20%2F%3Etransfers%5B3%5D.%20event%3A%20TransmitEvent%3CBR%20%2F%3Etransfers%5B4%5D.%20event%3A%20TransmitEvent%3CBR%20%2F%3Etransfers%5B5%5D.%20event%3A%20TransmitEvent%3CBR%20%2F%3Etransfers%5B6%5D.%20event%3A%20TransmitEvent%3CBR%20%2F%3Etransfers%5B7%5D.%20event%3A%20TransmitEvent%3CBR%20%2F%3Etransfers%5B8%5D.%20event%3A%20AddressMatchEvent%3CBR%20%2F%3Etransfers%5B9%5D.%20event%3A%20ReceiveEvent%3CBR%20%2F%3Etransfers%5B10%5D.%20event%3A%20TransmitEvent%3CBR%20%2F%3Etransfers%5B11%5D.%20event%3A%20AddressMatchEvent%3CBR%20%2F%3Etransfers%5B12%5D.%20event%3A%20CompletionEvent.%20status%3A%200%2C%20count%3A%200%3C%2FP%3E%3CBR%20%2F%3E%3CP%3E%2F%2F%20---%26gt%3B%20Miss%26nbsp%3B%3CSPAN%3EkI3C_SlaveCompletionEvent%20here%20after%20receiving%20CCC%20event.%3C%2FSPAN%3E%3C%2FP%3E%3CBR%20%2F%3E%3CP%3E%2F%2F%20After%20clicked%20on%20master%20SW3%3C%2FP%3E%3CP%3Etransfers%5B0%5D.%20event%3A%20TransmitEvent%3CBR%20%2F%3Etransfers%5B1%5D.%20event%3A%20TransmitEvent%3CBR%20%2F%3Etransfers%5B2%5D.%20event%3A%20TransmitEvent%3CBR%20%2F%3Etransfers%5B3%5D.%20event%3A%20AddressMatchEvent%3CBR%20%2F%3Etransfers%5B4%5D.%20event%3A%20ReceivedCCCEvent%3CBR%20%2F%3Etransfers%5B5%5D.%20event%3A%20ReceiveEvent%3CBR%20%2F%3Etransfers%5B6%5D.%20event%3A%20TransmitEvent%3CBR%20%2F%3Etransfers%5B7%5D.%20event%3A%20ReceivedCCCEvent%3CBR%20%2F%3Etransfers%5B8%5D.%20event%3A%20AddressMatchEvent%3CBR%20%2F%3Etransfers%5B9%5D.%20event%3A%20CompletionEvent.%20status%3A%207904%3CBR%20%2F%3Etransfers%5B10%5D.%20event%3A%20TransmitEvent%3CBR%20%2F%3Etransfers%5B11%5D.%20event%3A%20CompletionEvent.%20status%3A%200%2C%20count%3A%205%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2133219%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20LPC55S36%20I3C%20Slave%20Issue%20Handling%20Custom%20CCC%20with%20No%20Data%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2133219%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3EHi%26nbsp%3B%3CA%20href%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F228396%22%20target%3D%22_blank%22%3E%40bell_huang%3C%2FA%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3ECan%20you%20share%20your%20project%20so%20that%20I%20can%20reproduce%20this%20issue%20more%20easily%3F%3C%2FP%3E%0A%3CP%3EBR%3C%2FP%3E%0A%3CP%3EHarry%3C%2FP%3E%3C%2FLINGO-BODY%3E