<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: LPC55S36 I3C Slave Issue Handling Custom CCC with No Data in LPC Microcontrollers</title>
    <link>https://community.nxp.com/t5/LPC-Microcontrollers/LPC55S36-I3C-Slave-Issue-Handling-Custom-CCC-with-No-Data/m-p/2146797#M58614</link>
    <description>&lt;P&gt;Hi&amp;nbsp;&lt;a href="https://community.nxp.com/t5/user/viewprofilepage/user-id/228396"&gt;@bell_huang&lt;/a&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Thanks for your information.&lt;/P&gt;
&lt;P&gt;I have tested it.&lt;/P&gt;
&lt;P&gt;I tested it based on the&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Case 2: I3C_MasterTransferNonBlocking (from fsl_i3c API)&lt;/P&gt;
&lt;PRE class="lia-code-sample  language-c"&gt;&lt;CODE&gt;uint8_t cmdId = 0xF0;

memset(&amp;amp;masterXfer, 0, sizeof(masterXfer));
masterXfer.slaveAddress = 0x7E;
masterXfer.data         = &amp;amp;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, &amp;amp;masterHandle, &amp;amp;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(&amp;amp;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, &amp;amp;masterHandle, &amp;amp;masterXfer);
while (!g_masterCompletionFlag)
{
    __NOP();
}
if (g_completionStatus != kStatus_Success)
    PRINTF("I3C_MasterTransferNonBlocking Write data failed: %d\r\n", g_completionStatus);&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;I can reproduce this issue.&lt;/P&gt;
&lt;P&gt;So i try to add some debug code.&lt;/P&gt;
&lt;P&gt;In fsl_i3c.c&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Harry_Zhang_0-1754386837044.png" style="width: 400px;"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/350960i16800DE69713CCE5/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Harry_Zhang_0-1754386837044.png" alt="Harry_Zhang_0-1754386837044.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;When Master send the RepeatStart. it will enter while(1);&lt;/P&gt;
&lt;P&gt;And i checked the logic analyze.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Harry_Zhang_1-1754387004620.png" style="width: 400px;"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/350961i32FD2C39C8A71638/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Harry_Zhang_1-1754387004620.png" alt="Harry_Zhang_1-1754387004620.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;The waveform is correct.&lt;/P&gt;
&lt;P&gt;So currently, when you want to write date through nonblocking. The SDK only support the DataSize &amp;gt;0.&lt;/P&gt;
&lt;P&gt;May I ask if you have datasize=0 with write&amp;nbsp; based on the nonblocking Related requirements&lt;SPAN&gt;?&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;If yes, you need modify related code.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;BR&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Harry&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Tue, 05 Aug 2025 09:48:59 GMT</pubDate>
    <dc:creator>Harry_Zhang</dc:creator>
    <dc:date>2025-08-05T09:48:59Z</dc:date>
    <item>
      <title>LPC55S36 I3C Slave Issue Handling Custom CCC with No Data</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/LPC55S36-I3C-Slave-Issue-Handling-Custom-CCC-with-No-Data/m-p/2131548#M58475</link>
      <description>&lt;P&gt;Two &lt;A href="https://www.nxp.com/design/design-center/software/development-software/mcuxpresso-software-and-tools-/lpcxpresso-boards/lpcxpresso55s36-development-board:LPCXpresso55S36?_gl=1*ynjdvb*_ga*Njc1NDM1MzQ0LjE3NDkxNzY4NDE.*_ga_WM5LE0KMSH*czE3NTIxMzMxOTYkbzIxJGcxJHQxNzUyMTM0MDUwJGo1OSRsMCRoMTEyMzgwOTEwNQ.." target="_self" rel="nofollow noopener noreferrer"&gt;LPC5536-EVK&lt;/A&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;boards were connected for I3C communication, with one configured as the I3C Master and the other as the I3C Slave.&lt;BR /&gt;When the Master sends a &lt;STRONG&gt;custom CCC&lt;/STRONG&gt;&amp;nbsp;with a &lt;STRONG&gt;data length of 0&lt;/STRONG&gt;, the Slave misses to receive the kI3C_SlaveCompletionEvent.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Notes:&lt;/STRONG&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;In the sample code I provided, please refer to the I3C_BusMasterCustomCCC function, where cmd.dataSize = 0; indicates the data length.&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;The CCC waveform output from the Master has been verified and is correct.&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;If the CCC includes data with length greater than 0, the Slave is able to receive the kI3C_SlaveCompletionEvent as expected.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Case: data length = 1&lt;/P&gt;&lt;P&gt;// Private Write&lt;BR /&gt;transfers[7]. event: TransmitEvent&lt;BR /&gt;transfers[8]. event: AddressMatchEvent&lt;BR /&gt;transfers[9]. event: ReceiveEvent&lt;BR /&gt;transfers[10]. event: CompletionEvent. status: 0, count: 6&lt;/P&gt;&lt;P&gt;// Private Read&lt;BR /&gt;transfers[0]. event: TransmitEvent&lt;BR /&gt;transfers[1]. event: AddressMatchEvent&lt;BR /&gt;transfers[2]. event: ReceiveEvent&lt;BR /&gt;transfers[3]. event: TransmitEvent&lt;BR /&gt;transfers[4]. event: AddressMatchEvent&lt;BR /&gt;transfers[5]. event: CompletionEvent. status: 0, count: 5&lt;/P&gt;&lt;P&gt;// Custom CCC&lt;BR /&gt;transfers[0]. event: TransmitEvent&lt;BR /&gt;transfers[1]. event: TransmitEvent&lt;BR /&gt;transfers[2]. event: ReceivedCCCEvent&lt;BR /&gt;transfers[3]. event: AddressMatchEvent&lt;BR /&gt;transfers[4]. event: ReceiveEvent&lt;BR /&gt;transfers[5]. event: CompletionEvent. status: 0, count: 1&lt;/P&gt;&lt;P&gt;// Private Write&lt;BR /&gt;transfers[0]. event: TransmitEvent&lt;BR /&gt;transfers[1]. event: AddressMatchEvent&lt;BR /&gt;transfers[2]. event: ReceiveEvent&lt;BR /&gt;transfers[3]. event: CompletionEvent. status: 0, count: 6&lt;/P&gt;&lt;P&gt;// Private Read&lt;BR /&gt;transfers[0]. event: TransmitEvent&lt;BR /&gt;transfers[1]. event: AddressMatchEvent&lt;BR /&gt;transfers[2]. event: ReceiveEvent&lt;BR /&gt;transfers[3]. event: TransmitEvent&lt;BR /&gt;transfers[4]. event: AddressMatchEvent&lt;BR /&gt;transfers[5]. event: CompletionEvent. status: 0, count: 5&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Case: data length = 0&lt;/P&gt;&lt;P&gt;// Private Write&lt;BR /&gt;transfers[7]. event: TransmitEvent&lt;BR /&gt;transfers[8]. event: AddressMatchEvent&lt;BR /&gt;transfers[9]. event: ReceiveEvent&lt;BR /&gt;transfers[10]. event: CompletionEvent. status: 0, count: 6&lt;/P&gt;&lt;P&gt;// Private Read&lt;BR /&gt;transfers[0]. event: TransmitEvent&lt;BR /&gt;transfers[1]. event: AddressMatchEvent&lt;BR /&gt;transfers[2]. event: ReceiveEvent&lt;BR /&gt;transfers[3]. event: TransmitEvent&lt;BR /&gt;transfers[4]. event: AddressMatchEvent&lt;BR /&gt;transfers[5]. event: CompletionEvent. status: 0, count: 5&lt;/P&gt;&lt;P&gt;// Private Write (mix with some events from previous Custom CCC)&lt;BR /&gt;transfers[0]. event: TransmitEvent&lt;BR /&gt;transfers[1]. event: TransmitEvent&lt;BR /&gt;transfers[2]. event: TransmitEvent&lt;BR /&gt;transfers[3]. event: ReceivedCCCEvent&lt;BR /&gt;transfers[4]. event: AddressMatchEvent&lt;BR /&gt;transfers[5]. event: ReceiveEvent&lt;BR /&gt;transfers[6]. event: ReceiveEvent&lt;BR /&gt;transfers[7]. event: CompletionEvent. status: 0, count: 0&lt;/P&gt;&lt;P&gt;// Private Read&lt;BR /&gt;transfers[0]. event: TransmitEvent&lt;BR /&gt;transfers[1]. event: AddressMatchEvent&lt;BR /&gt;transfers[2]. event: ReceiveEvent&lt;BR /&gt;transfers[3]. event: TransmitEvent&lt;BR /&gt;transfers[4]. event: AddressMatchEvent&lt;BR /&gt;transfers[5]. event: CompletionEvent. status: 0, count: 5&lt;/P&gt;</description>
      <pubDate>Thu, 10 Jul 2025 08:12:00 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/LPC55S36-I3C-Slave-Issue-Handling-Custom-CCC-with-No-Data/m-p/2131548#M58475</guid>
      <dc:creator>bell_huang</dc:creator>
      <dc:date>2025-07-10T08:12:00Z</dc:date>
    </item>
    <item>
      <title>Re: LPC55S36 I3C Slave Issue Handling Custom CCC with No Data</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/LPC55S36-I3C-Slave-Issue-Handling-Custom-CCC-with-No-Data/m-p/2133219#M58486</link>
      <description>&lt;P&gt;Hi&amp;nbsp;&lt;a href="https://community.nxp.com/t5/user/viewprofilepage/user-id/228396"&gt;@bell_huang&lt;/a&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Can you share your project so that I can reproduce this issue more easily?&lt;/P&gt;
&lt;P&gt;BR&lt;/P&gt;
&lt;P&gt;Harry&lt;/P&gt;</description>
      <pubDate>Mon, 14 Jul 2025 09:14:01 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/LPC55S36-I3C-Slave-Issue-Handling-Custom-CCC-with-No-Data/m-p/2133219#M58486</guid>
      <dc:creator>Harry_Zhang</dc:creator>
      <dc:date>2025-07-14T09:14:01Z</dc:date>
    </item>
    <item>
      <title>Re: LPC55S36 I3C Slave Issue Handling Custom CCC with No Data</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/LPC55S36-I3C-Slave-Issue-Handling-Custom-CCC-with-No-Data/m-p/2133692#M58490</link>
      <description>&lt;P&gt;Hi&amp;nbsp;&lt;a href="https://community.nxp.com/t5/user/viewprofilepage/user-id/229957"&gt;@Harry_Zhang&lt;/a&gt;&amp;nbsp;,&lt;/P&gt;&lt;P&gt;Test steps:&lt;/P&gt;&lt;P&gt;(1) Reset slave board&lt;/P&gt;&lt;P&gt;(2) Reset master board&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; At this step, it can be observed that after the Slave receives the CCC, the callback does not trigger the kI3C_SlaveCompletionEvent.&lt;/P&gt;&lt;P&gt;(3, Optional) Click SW3 on master board&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; Master read register&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Also check out the configuration of CCC data length in&amp;nbsp;I3C_BusMasterCustomCCC function of master code:&lt;/P&gt;&lt;P&gt;cmd.dataSize = 1;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;==============================&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;Case: data length = 1&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;--- Master log ---&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;data: 0x0&lt;/P&gt;&lt;P&gt;Write Custom CCC&lt;/P&gt;&lt;P&gt;Click SW3 to start&lt;BR /&gt;data: 0x65 // ---&amp;gt; Indicate that the slave received CCC successfully, so that the master can read the correct value&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;--- Slave log ---&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;transfers[0]. event: TransmitEvent&lt;BR /&gt;transfers[1]. event: TransmitEvent&lt;BR /&gt;transfers[2]. event: TransmitEvent&lt;BR /&gt;transfers[3]. event: TransmitEvent&lt;BR /&gt;transfers[4]. event: TransmitEvent&lt;BR /&gt;transfers[5]. event: TransmitEvent&lt;BR /&gt;transfers[6]. event: TransmitEvent&lt;BR /&gt;transfers[7]. event: TransmitEvent&lt;BR /&gt;transfers[8]. event: AddressMatchEvent&lt;BR /&gt;transfers[9]. event: ReceiveEvent&lt;BR /&gt;transfers[10]. event: TransmitEvent&lt;BR /&gt;transfers[11]. event: AddressMatchEvent&lt;BR /&gt;transfers[12]. event: CompletionEvent. status: 0, count: 0&lt;/P&gt;&lt;P&gt;transfers[0]. event: TransmitEvent&lt;BR /&gt;transfers[1]. event: TransmitEvent&lt;BR /&gt;transfers[2]. event: ReceivedCCCEvent&lt;BR /&gt;transfers[3]. event: AddressMatchEvent&lt;BR /&gt;transfers[4]. event: ReceiveEvent&lt;BR /&gt;transfers[5]. event: CompletionEvent. status: 0, count: 1 // ---&amp;gt; Received&amp;nbsp;&lt;SPAN&gt;kI3C_SlaveCompletionEvent after received CCC event&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;// After clicked on master SW3&lt;/P&gt;&lt;P&gt;transfers[0]. event: TransmitEvent&lt;BR /&gt;transfers[1]. event: AddressMatchEvent&lt;BR /&gt;transfers[2]. event: ReceiveEvent&lt;BR /&gt;transfers[3]. event: TransmitEvent&lt;BR /&gt;transfers[4]. event: AddressMatchEvent&lt;BR /&gt;transfers[5]. event: CompletionEvent. status: 0, count: 0&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;==============================&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;Case: data length = 0&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;--- Master log ---&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;data: 0x0&lt;/P&gt;&lt;P&gt;Write Custom CCC&lt;/P&gt;&lt;P&gt;Click SW3 to start&lt;BR /&gt;data: 0x90&amp;nbsp;// ---&amp;gt; Wrong value&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;--- Slave log ---&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;transfers[0]. event: TransmitEvent&lt;BR /&gt;transfers[1]. event: TransmitEvent&lt;BR /&gt;transfers[2]. event: TransmitEvent&lt;BR /&gt;transfers[3]. event: TransmitEvent&lt;BR /&gt;transfers[4]. event: TransmitEvent&lt;BR /&gt;transfers[5]. event: TransmitEvent&lt;BR /&gt;transfers[6]. event: TransmitEvent&lt;BR /&gt;transfers[7]. event: TransmitEvent&lt;BR /&gt;transfers[8]. event: AddressMatchEvent&lt;BR /&gt;transfers[9]. event: ReceiveEvent&lt;BR /&gt;transfers[10]. event: TransmitEvent&lt;BR /&gt;transfers[11]. event: AddressMatchEvent&lt;BR /&gt;transfers[12]. event: CompletionEvent. status: 0, count: 0&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;// ---&amp;gt; Miss&amp;nbsp;&lt;SPAN&gt;kI3C_SlaveCompletionEvent here after receiving CCC event.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;// After clicked on master SW3&lt;/P&gt;&lt;P&gt;transfers[0]. event: TransmitEvent&lt;BR /&gt;transfers[1]. event: TransmitEvent&lt;BR /&gt;transfers[2]. event: TransmitEvent&lt;BR /&gt;transfers[3]. event: AddressMatchEvent&lt;BR /&gt;transfers[4]. event: ReceivedCCCEvent&lt;BR /&gt;transfers[5]. event: ReceiveEvent&lt;BR /&gt;transfers[6]. event: TransmitEvent&lt;BR /&gt;transfers[7]. event: ReceivedCCCEvent&lt;BR /&gt;transfers[8]. event: AddressMatchEvent&lt;BR /&gt;transfers[9]. event: CompletionEvent. status: 7904&lt;BR /&gt;transfers[10]. event: TransmitEvent&lt;BR /&gt;transfers[11]. event: CompletionEvent. status: 0, count: 5&lt;/P&gt;</description>
      <pubDate>Tue, 15 Jul 2025 03:13:54 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/LPC55S36-I3C-Slave-Issue-Handling-Custom-CCC-with-No-Data/m-p/2133692#M58490</guid>
      <dc:creator>bell_huang</dc:creator>
      <dc:date>2025-07-15T03:13:54Z</dc:date>
    </item>
    <item>
      <title>Re: LPC55S36 I3C Slave Issue Handling Custom CCC with No Data</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/LPC55S36-I3C-Slave-Issue-Handling-Custom-CCC-with-No-Data/m-p/2143289#M58579</link>
      <description>&lt;P&gt;Hi&amp;nbsp;&lt;a href="https://community.nxp.com/t5/user/viewprofilepage/user-id/228396"&gt;@bell_huang&lt;/a&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Would it be possible to make minimal modifications based on the i3c SDK example to verify the this functionality?&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Additionally, could you provide the waveform data?&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;BR&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Harry&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Wed, 30 Jul 2025 07:03:50 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/LPC55S36-I3C-Slave-Issue-Handling-Custom-CCC-with-No-Data/m-p/2143289#M58579</guid>
      <dc:creator>Harry_Zhang</dc:creator>
      <dc:date>2025-07-30T07:03:50Z</dc:date>
    </item>
    <item>
      <title>Re: LPC55S36 I3C Slave Issue Handling Custom CCC with No Data</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/LPC55S36-I3C-Slave-Issue-Handling-Custom-CCC-with-No-Data/m-p/2144032#M58586</link>
      <description>&lt;P&gt;I tried simplifying my example to be even more minimal than the SDK example.&lt;BR /&gt;&lt;STRONG&gt;I found that the issue occurs on the Master side&lt;/STRONG&gt;, rather than on the Slave side as originally assumed.&lt;/P&gt;&lt;P&gt;In summary, when implementing a Custom CCC with no data on the Master, using &lt;STRONG&gt;I3C_MasterTransferBlocking&lt;/STRONG&gt; works correctly. However, when using &lt;STRONG&gt;I3C_MasterTransferNonBlocking&lt;/STRONG&gt;, the waveform is incorrect.&lt;/P&gt;&lt;P&gt;The expected waveform sequence for a Custom CCC is: 0x7E -&amp;gt; 0xF0 (Custom CCC) -&amp;gt; 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.&lt;/P&gt;&lt;P&gt;Test steps:&lt;/P&gt;&lt;P&gt;(1) Reset Slave&lt;/P&gt;&lt;P&gt;(2) Reset Master&lt;/P&gt;&lt;P&gt;(3) Click Master SW3&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Case 1: I3C_MasterTransferBlocking&lt;/STRONG&gt; (from fsl_i3c API)&lt;BR /&gt;-&amp;gt; The waveform is correct.&lt;/P&gt;&lt;LI-CODE lang="c"&gt;uint8_t cmdId = 0xF0;

memset(&amp;amp;masterXfer, 0, sizeof(masterXfer));
masterXfer.slaveAddress = 0x7E;
masterXfer.data         = &amp;amp;cmdId;
masterXfer.dataSize     = 1;
masterXfer.direction    = kI3C_Write;
masterXfer.busType      = kI3C_TypeI3CSdr;
masterXfer.flags        = (uint32_t)kI3C_TransferNoStopFlag;
result                  = I3C_MasterTransferBlocking(EXAMPLE_MASTER, &amp;amp;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(&amp;amp;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, &amp;amp;masterXfer);
if (result != kStatus_Success)
    PRINTF("I3C_MasterTransferBlocking Write data failed: %d\r\n", result);&lt;/LI-CODE&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="bell_huang_0-1753928201436.png" style="width: 400px;"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/350349iC97C90E23DA46556/image-size/medium?v=v2&amp;amp;px=400" role="button" title="bell_huang_0-1753928201436.png" alt="bell_huang_0-1753928201436.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Case 2: I3C_MasterTransferNonBlocking&lt;/STRONG&gt; (from fsl_i3c API)&lt;BR /&gt;-&amp;gt; The Slave Address sent is incorrect, resulting in a NACK.&lt;/P&gt;&lt;LI-CODE lang="c"&gt;uint8_t cmdId = 0xF0;

memset(&amp;amp;masterXfer, 0, sizeof(masterXfer));
masterXfer.slaveAddress = 0x7E;
masterXfer.data         = &amp;amp;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, &amp;amp;masterHandle, &amp;amp;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(&amp;amp;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, &amp;amp;masterHandle, &amp;amp;masterXfer);
while (!g_masterCompletionFlag)
{
    __NOP();
}
if (g_completionStatus != kStatus_Success)
    PRINTF("I3C_MasterTransferNonBlocking Write data failed: %d\r\n", g_completionStatus);&lt;/LI-CODE&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="bell_huang_1-1753928285555.png" style="width: 400px;"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/350350i355526341BE8F7BE/image-size/medium?v=v2&amp;amp;px=400" role="button" title="bell_huang_1-1753928285555.png" alt="bell_huang_1-1753928285555.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;If you change dataSize from 0 to 1, the waveform of Slave Address will be correct.&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="bell_huang_2-1753928603654.png" style="width: 400px;"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/350352iBDEBC58112A606BC/image-size/medium?v=v2&amp;amp;px=400" role="button" title="bell_huang_2-1753928603654.png" alt="bell_huang_2-1753928603654.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Case 3: I3C_BusMasterSendCCC&lt;/STRONG&gt; (from fsl_component_i3c_adapter API)&lt;BR /&gt;-&amp;gt; Internally uses I3C_MasterTransferNonBlocking, so the behavior is the same as Case 2.&lt;/P&gt;&lt;LI-CODE lang="c"&gt;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(&amp;amp;masterDev, &amp;amp;cmd);
if (result != kStatus_Success)
    PRINTF("I3C_BusMasterSendCCC failed: %d\r\n", result);&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 31 Jul 2025 02:25:27 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/LPC55S36-I3C-Slave-Issue-Handling-Custom-CCC-with-No-Data/m-p/2144032#M58586</guid>
      <dc:creator>bell_huang</dc:creator>
      <dc:date>2025-07-31T02:25:27Z</dc:date>
    </item>
    <item>
      <title>Re: LPC55S36 I3C Slave Issue Handling Custom CCC with No Data</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/LPC55S36-I3C-Slave-Issue-Handling-Custom-CCC-with-No-Data/m-p/2146797#M58614</link>
      <description>&lt;P&gt;Hi&amp;nbsp;&lt;a href="https://community.nxp.com/t5/user/viewprofilepage/user-id/228396"&gt;@bell_huang&lt;/a&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Thanks for your information.&lt;/P&gt;
&lt;P&gt;I have tested it.&lt;/P&gt;
&lt;P&gt;I tested it based on the&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Case 2: I3C_MasterTransferNonBlocking (from fsl_i3c API)&lt;/P&gt;
&lt;PRE class="lia-code-sample  language-c"&gt;&lt;CODE&gt;uint8_t cmdId = 0xF0;

memset(&amp;amp;masterXfer, 0, sizeof(masterXfer));
masterXfer.slaveAddress = 0x7E;
masterXfer.data         = &amp;amp;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, &amp;amp;masterHandle, &amp;amp;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(&amp;amp;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, &amp;amp;masterHandle, &amp;amp;masterXfer);
while (!g_masterCompletionFlag)
{
    __NOP();
}
if (g_completionStatus != kStatus_Success)
    PRINTF("I3C_MasterTransferNonBlocking Write data failed: %d\r\n", g_completionStatus);&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;I can reproduce this issue.&lt;/P&gt;
&lt;P&gt;So i try to add some debug code.&lt;/P&gt;
&lt;P&gt;In fsl_i3c.c&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Harry_Zhang_0-1754386837044.png" style="width: 400px;"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/350960i16800DE69713CCE5/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Harry_Zhang_0-1754386837044.png" alt="Harry_Zhang_0-1754386837044.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;When Master send the RepeatStart. it will enter while(1);&lt;/P&gt;
&lt;P&gt;And i checked the logic analyze.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Harry_Zhang_1-1754387004620.png" style="width: 400px;"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/350961i32FD2C39C8A71638/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Harry_Zhang_1-1754387004620.png" alt="Harry_Zhang_1-1754387004620.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;The waveform is correct.&lt;/P&gt;
&lt;P&gt;So currently, when you want to write date through nonblocking. The SDK only support the DataSize &amp;gt;0.&lt;/P&gt;
&lt;P&gt;May I ask if you have datasize=0 with write&amp;nbsp; based on the nonblocking Related requirements&lt;SPAN&gt;?&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;If yes, you need modify related code.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;BR&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Harry&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 05 Aug 2025 09:48:59 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/LPC55S36-I3C-Slave-Issue-Handling-Custom-CCC-with-No-Data/m-p/2146797#M58614</guid>
      <dc:creator>Harry_Zhang</dc:creator>
      <dc:date>2025-08-05T09:48:59Z</dc:date>
    </item>
    <item>
      <title>Re: LPC55S36 I3C Slave Issue Handling Custom CCC with No Data</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/LPC55S36-I3C-Slave-Issue-Handling-Custom-CCC-with-No-Data/m-p/2147166#M58617</link>
      <description>&lt;P&gt;Hi&amp;nbsp;&lt;a href="https://community.nxp.com/t5/user/viewprofilepage/user-id/229957"&gt;@Harry_Zhang&lt;/a&gt;&amp;nbsp;,&lt;/P&gt;&lt;P&gt;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 &lt;STRONG&gt;I3C_MasterTransferBlocking&lt;/STRONG&gt; to implement the Custom CCC.&lt;/P&gt;&lt;P&gt;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 &lt;STRONG&gt;I3C_BusMasterSendCCC&lt;/STRONG&gt; for Custom CCC implementation.&lt;/P&gt;</description>
      <pubDate>Wed, 06 Aug 2025 01:31:56 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/LPC55S36-I3C-Slave-Issue-Handling-Custom-CCC-with-No-Data/m-p/2147166#M58617</guid>
      <dc:creator>bell_huang</dc:creator>
      <dc:date>2025-08-06T01:31:56Z</dc:date>
    </item>
  </channel>
</rss>

