<?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 LPC55S36, I3C IBI does not work for some dynamic addresses in LPC Microcontrollers</title>
    <link>https://community.nxp.com/t5/LPC-Microcontrollers/LPC55S36-I3C-IBI-does-not-work-for-some-dynamic-addresses/m-p/1809684#M55433</link>
    <description>&lt;P&gt;&lt;SPAN&gt;I'm running I3C on&amp;nbsp;&lt;A href="https://www.nxp.com/design/design-center/software/development-software/mcuxpresso-software-and-tools-/lpcxpresso-boards/lpcxpresso55s36-development-board:LPCXpresso55S36" target="_self"&gt;LPC55S36-EVK&lt;/A&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;and find out that&amp;nbsp;I3C In-Band Interrupt (IBI) does not work for some dynamic addresses.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;This issue can be reproduced in&amp;nbsp;&lt;A href="https://www.nxp.com/docs/en/application-note-software/AN13577SW.zip" target="_self"&gt;Building an I3C Sensor Network Using LPC553x/LPC55S3x&lt;/A&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;example. I3C_BusMasterCreate automatically assigns dynamic addresses to master and devices. By default, it assigns 0x09 to&amp;nbsp;ICM42688P. It is no problem to receive IBI interrupt. (Note:&amp;nbsp;Any tap on the board may generate an IBI interrupt from ICM42688P).&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="0x09.png" style="width: 400px;"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/263406i053AF671E2042949/image-size/medium?v=v2&amp;amp;px=400" role="button" title="0x09.png" alt="0x09.png" /&gt;&lt;/span&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;However, if a device was assigned to 0x40 and when the device raise an IBI interrupt, I3C SDA will be pulled down forever. To&amp;nbsp;&lt;SPAN&gt;reproduce in previous example, we can&lt;/SPAN&gt;&amp;nbsp;reserve dynamic address from&amp;nbsp;0x08~0x3E, then&amp;nbsp;&lt;SPAN&gt;I3C_BusMasterCreate automatically assigns dynamic address 0x3F to master device, and 0x40 to&amp;nbsp;ICM42688P. (As the attachment i3c_sensor_network.c)&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="cpp"&gt;// Dynamic address: 0x40
// Reserve address 0x08~0x3E, then master=0x3F, icm42688p=0x40
for (uint8_t i = 8U; i &amp;lt;= 0x3E; i++)
{
    I3C_BusSetAddrSlot(&amp;amp;demo_i3cBus, i, kI3C_Bus_AddrSlot_Reserved);
}&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="0x40_1.png" style="width: 400px;"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/263409iB89778A82636E44E/image-size/medium?v=v2&amp;amp;px=400" role="button" title="0x40_1.png" alt="0x40_1.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;Moreover,&amp;nbsp;if a device was assigned to 0x41 and when the device want to raise an IBI interrupt, we can see&amp;nbsp;infinite interrupts.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="cpp"&gt;// Dynamic address: 0x41
// Reserve address 0x08~0x3F, then master=0x40, icm42688p=0x41
for (uint8_t i = 8U; i &amp;lt;= 0x3F; i++)
{
    I3C_BusSetAddrSlot(&amp;amp;demo_i3cBus, i, kI3C_Bus_AddrSlot_Reserved);
}&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="0x41.png" style="width: 400px;"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/263411iE52B39522E03873E/image-size/medium?v=v2&amp;amp;px=400" role="button" title="0x41.png" alt="0x41.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;From my tests, all dynamic addresses above 0x40 do not work correctly, while all below 0x3F work correctly.&amp;nbsp;&lt;SPAN&gt;According to&amp;nbsp;&lt;A href="https://www.mipi.org/specifications/i3c-sensor-specification" target="_self"&gt;MIPI I3C® v1.1.1 (June 2021)&lt;/A&gt;&amp;nbsp;, most dynamic addresses are available, except for a few reserved addresses.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="I3C Target Address Restrictions.png" style="width: 400px;"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/263412iDEC4B7F9827B7842/image-size/medium?v=v2&amp;amp;px=400" role="button" title="I3C Target Address Restrictions.png" alt="I3C Target Address Restrictions.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;Here are some other tests for reference:&lt;/P&gt;&lt;P&gt;0x30: No problem&lt;/P&gt;&lt;P&gt;0x31: No problem&lt;/P&gt;&lt;P&gt;0x3F: No problem&lt;/P&gt;&lt;P&gt;0x50:&amp;nbsp;I3C SDA is pulled down forever&lt;/P&gt;&lt;P&gt;0x51: Infinite interrupts.&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="bell_huang_1-1708047358666.png" style="width: 400px;"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/263414i29AD6CDA41E816D7/image-size/medium?v=v2&amp;amp;px=400" role="button" title="bell_huang_1-1708047358666.png" alt="bell_huang_1-1708047358666.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="bell_huang_2-1708047398421.png" style="width: 400px;"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/263415i3CAAD98C0A5DE970/image-size/medium?v=v2&amp;amp;px=400" role="button" title="bell_huang_2-1708047398421.png" alt="bell_huang_2-1708047398421.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="bell_huang_0-1708047301655.png" style="width: 400px;"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/263413iAA6245DD83214D59/image-size/medium?v=v2&amp;amp;px=400" role="button" title="bell_huang_0-1708047301655.png" alt="bell_huang_0-1708047301655.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="bell_huang_3-1708047457312.png" style="width: 400px;"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/263416i1B27A26E693012BD/image-size/medium?v=v2&amp;amp;px=400" role="button" title="bell_huang_3-1708047457312.png" alt="bell_huang_3-1708047457312.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="bell_huang_4-1708047486316.png" style="width: 400px;"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/263417i3B9F67B7887FD603/image-size/medium?v=v2&amp;amp;px=400" role="button" title="bell_huang_4-1708047486316.png" alt="bell_huang_4-1708047486316.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Fri, 16 Feb 2024 01:49:01 GMT</pubDate>
    <dc:creator>bell_huang</dc:creator>
    <dc:date>2024-02-16T01:49:01Z</dc:date>
    <item>
      <title>LPC55S36, I3C IBI does not work for some dynamic addresses</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/LPC55S36-I3C-IBI-does-not-work-for-some-dynamic-addresses/m-p/1809684#M55433</link>
      <description>&lt;P&gt;&lt;SPAN&gt;I'm running I3C on&amp;nbsp;&lt;A href="https://www.nxp.com/design/design-center/software/development-software/mcuxpresso-software-and-tools-/lpcxpresso-boards/lpcxpresso55s36-development-board:LPCXpresso55S36" target="_self"&gt;LPC55S36-EVK&lt;/A&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;and find out that&amp;nbsp;I3C In-Band Interrupt (IBI) does not work for some dynamic addresses.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;This issue can be reproduced in&amp;nbsp;&lt;A href="https://www.nxp.com/docs/en/application-note-software/AN13577SW.zip" target="_self"&gt;Building an I3C Sensor Network Using LPC553x/LPC55S3x&lt;/A&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;example. I3C_BusMasterCreate automatically assigns dynamic addresses to master and devices. By default, it assigns 0x09 to&amp;nbsp;ICM42688P. It is no problem to receive IBI interrupt. (Note:&amp;nbsp;Any tap on the board may generate an IBI interrupt from ICM42688P).&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="0x09.png" style="width: 400px;"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/263406i053AF671E2042949/image-size/medium?v=v2&amp;amp;px=400" role="button" title="0x09.png" alt="0x09.png" /&gt;&lt;/span&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;However, if a device was assigned to 0x40 and when the device raise an IBI interrupt, I3C SDA will be pulled down forever. To&amp;nbsp;&lt;SPAN&gt;reproduce in previous example, we can&lt;/SPAN&gt;&amp;nbsp;reserve dynamic address from&amp;nbsp;0x08~0x3E, then&amp;nbsp;&lt;SPAN&gt;I3C_BusMasterCreate automatically assigns dynamic address 0x3F to master device, and 0x40 to&amp;nbsp;ICM42688P. (As the attachment i3c_sensor_network.c)&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="cpp"&gt;// Dynamic address: 0x40
// Reserve address 0x08~0x3E, then master=0x3F, icm42688p=0x40
for (uint8_t i = 8U; i &amp;lt;= 0x3E; i++)
{
    I3C_BusSetAddrSlot(&amp;amp;demo_i3cBus, i, kI3C_Bus_AddrSlot_Reserved);
}&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="0x40_1.png" style="width: 400px;"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/263409iB89778A82636E44E/image-size/medium?v=v2&amp;amp;px=400" role="button" title="0x40_1.png" alt="0x40_1.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;Moreover,&amp;nbsp;if a device was assigned to 0x41 and when the device want to raise an IBI interrupt, we can see&amp;nbsp;infinite interrupts.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="cpp"&gt;// Dynamic address: 0x41
// Reserve address 0x08~0x3F, then master=0x40, icm42688p=0x41
for (uint8_t i = 8U; i &amp;lt;= 0x3F; i++)
{
    I3C_BusSetAddrSlot(&amp;amp;demo_i3cBus, i, kI3C_Bus_AddrSlot_Reserved);
}&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="0x41.png" style="width: 400px;"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/263411iE52B39522E03873E/image-size/medium?v=v2&amp;amp;px=400" role="button" title="0x41.png" alt="0x41.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;From my tests, all dynamic addresses above 0x40 do not work correctly, while all below 0x3F work correctly.&amp;nbsp;&lt;SPAN&gt;According to&amp;nbsp;&lt;A href="https://www.mipi.org/specifications/i3c-sensor-specification" target="_self"&gt;MIPI I3C® v1.1.1 (June 2021)&lt;/A&gt;&amp;nbsp;, most dynamic addresses are available, except for a few reserved addresses.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="I3C Target Address Restrictions.png" style="width: 400px;"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/263412iDEC4B7F9827B7842/image-size/medium?v=v2&amp;amp;px=400" role="button" title="I3C Target Address Restrictions.png" alt="I3C Target Address Restrictions.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;Here are some other tests for reference:&lt;/P&gt;&lt;P&gt;0x30: No problem&lt;/P&gt;&lt;P&gt;0x31: No problem&lt;/P&gt;&lt;P&gt;0x3F: No problem&lt;/P&gt;&lt;P&gt;0x50:&amp;nbsp;I3C SDA is pulled down forever&lt;/P&gt;&lt;P&gt;0x51: Infinite interrupts.&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="bell_huang_1-1708047358666.png" style="width: 400px;"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/263414i29AD6CDA41E816D7/image-size/medium?v=v2&amp;amp;px=400" role="button" title="bell_huang_1-1708047358666.png" alt="bell_huang_1-1708047358666.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="bell_huang_2-1708047398421.png" style="width: 400px;"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/263415i3CAAD98C0A5DE970/image-size/medium?v=v2&amp;amp;px=400" role="button" title="bell_huang_2-1708047398421.png" alt="bell_huang_2-1708047398421.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="bell_huang_0-1708047301655.png" style="width: 400px;"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/263413iAA6245DD83214D59/image-size/medium?v=v2&amp;amp;px=400" role="button" title="bell_huang_0-1708047301655.png" alt="bell_huang_0-1708047301655.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="bell_huang_3-1708047457312.png" style="width: 400px;"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/263416i1B27A26E693012BD/image-size/medium?v=v2&amp;amp;px=400" role="button" title="bell_huang_3-1708047457312.png" alt="bell_huang_3-1708047457312.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="bell_huang_4-1708047486316.png" style="width: 400px;"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/263417i3B9F67B7887FD603/image-size/medium?v=v2&amp;amp;px=400" role="button" title="bell_huang_4-1708047486316.png" alt="bell_huang_4-1708047486316.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 16 Feb 2024 01:49:01 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/LPC55S36-I3C-IBI-does-not-work-for-some-dynamic-addresses/m-p/1809684#M55433</guid>
      <dc:creator>bell_huang</dc:creator>
      <dc:date>2024-02-16T01:49:01Z</dc:date>
    </item>
    <item>
      <title>Re: LPC55S36, I3C IBI does not work for some dynamic addresses</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/LPC55S36-I3C-IBI-does-not-work-for-some-dynamic-addresses/m-p/1814664#M55492</link>
      <description>&lt;P&gt;Hi,&lt;/P&gt;
&lt;P&gt;Pls refer to section 42.3.2.5 Assigning dynamic addresses to I3C devices in RM of LPC553x, the dynamic address of I3C target should be less than 0x40 for IBI support.&lt;/P&gt;
&lt;P&gt;Hope it can help you&lt;/P&gt;
&lt;P&gt;BR&lt;/P&gt;
&lt;P&gt;XiangJun Rong&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="xiangjun_rong_0-1708695093049.png" style="width: 400px;"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/264785i5D755429D99E966C/image-size/medium?v=v2&amp;amp;px=400" role="button" title="xiangjun_rong_0-1708695093049.png" alt="xiangjun_rong_0-1708695093049.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 23 Feb 2024 13:33:25 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/LPC55S36-I3C-IBI-does-not-work-for-some-dynamic-addresses/m-p/1814664#M55492</guid>
      <dc:creator>xiangjun_rong</dc:creator>
      <dc:date>2024-02-23T13:33:25Z</dc:date>
    </item>
    <item>
      <title>Re: LPC55S36, I3C IBI does not work for some dynamic addresses</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/LPC55S36-I3C-IBI-does-not-work-for-some-dynamic-addresses/m-p/1815064#M55498</link>
      <description>&lt;P&gt;Hi&amp;nbsp;&lt;a href="https://community.nxp.com/t5/user/viewprofilepage/user-id/26034"&gt;@xiangjun_rong&lt;/a&gt;&amp;nbsp;,&lt;/P&gt;&lt;P&gt;Thanks for your information.&amp;nbsp;Section&amp;nbsp;42.5.1 in&amp;nbsp;&lt;A href="https://www.nxp.com/webapp/sps/download/license.jsp?colCode=LPC553xRM" target="_self"&gt;LPC553x Reference Manual&lt;/A&gt;&amp;nbsp; explains the reason of optimization.&lt;/P&gt;&lt;BLOCKQUOTE&gt;&lt;P&gt;Use MIBIRULES[MSB0] to obtain faster START header times. If the controller application assigns all I3C dynamic addresses to be less than 40h (it does not have MSB set), MIBIRULES[MSB0] can be set. When the controller emits 7Eh (broadcast) and a target does not drive the first bit low, the rest of the header can be at push-pull speeds. This speed is two times faster or more, depending on optimizations.&lt;/P&gt;&lt;P&gt;Auto-emit 7Eh speeds up the frame when used with MIBIRULES[MSB0]. It allows the processor to sleep when the frame starts automatically (in response to a target).&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;P&gt;Section&amp;nbsp;5.1.2.2.2 in&amp;nbsp;&lt;A href="https://www.mipi.org/specifications/i3c-sensor-specification?utm_term=mipi%20i3c&amp;amp;utm_campaign=I3C+search+campaign&amp;amp;utm_source=adwords&amp;amp;utm_medium=ppc&amp;amp;hsa_acc=8508251710&amp;amp;hsa_cam=1625597173&amp;amp;hsa_grp=62165896792&amp;amp;hsa_ad=326967091409&amp;amp;hsa_src=g&amp;amp;hsa_tgt=kwd-488215327186&amp;amp;hsa_kw=mipi%20i3c&amp;amp;hsa_mt=b&amp;amp;hsa_net=adwords&amp;amp;hsa_ver=3&amp;amp;gad_source=1&amp;amp;gclid=Cj0KCQiA5-uuBhDzARIsAAa21T-oMtU0tmETwfClzsd-rH3-x23teFqbPi6w-HZm_29DUXIpzdCXXYIaAge5EALw_wcB" target="_self"&gt;MIPI I3C BasicSM v1.1.1 (July 2021)&lt;/A&gt;&amp;nbsp;has more details for&amp;nbsp;I3C Address Arbitration Optimization.&lt;/P&gt;</description>
      <pubDate>Mon, 26 Feb 2024 02:36:11 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/LPC55S36-I3C-IBI-does-not-work-for-some-dynamic-addresses/m-p/1815064#M55498</guid>
      <dc:creator>bell_huang</dc:creator>
      <dc:date>2024-02-26T02:36:11Z</dc:date>
    </item>
  </channel>
</rss>

