<?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>MCX MicrocontrollersのトピックSubject: RT1040 LPI2C3 – FIFO error while reading WHO_AM_I register from accelerometer</title>
    <link>https://community.nxp.com/t5/MCX-Microcontrollers/Subject-RT1040-LPI2C3-FIFO-error-while-reading-WHO-AM-I-register/m-p/2152793#M3759</link>
    <description>&lt;P&gt;Hello,&lt;/P&gt;&lt;P&gt;I am working on the &lt;STRONG&gt;i.MX RT1040 EVK&lt;/STRONG&gt; using &lt;STRONG&gt;LPI2C3&lt;/STRONG&gt; to interface with an accelerometer (slave address = 0x18 base).&lt;BR /&gt;My goal is to read the &lt;STRONG&gt;WHO_AM_I&lt;/STRONG&gt; register (address = 0x13) to check if the accelerometer is responding.&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Steps I am following:&lt;/STRONG&gt;&lt;/P&gt;&lt;OL&gt;&lt;LI&gt;&lt;P&gt;Call LPI2C_MasterStart() with slave address 0x18 and write intent.&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;Wait until &lt;STRONG&gt;TX FIFO count = 0&lt;/STRONG&gt; using LPI2C_MasterGetFifoCounts() to ensure TX FIFO is empty.&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;Check for &lt;STRONG&gt;acknowledge&lt;/STRONG&gt; from the slave — ACK is received.&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;Send the WHO_AM_I register address (0x13) using LPI2C_MasterSend().&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;Check ACK again — slave sends ACK.&lt;/P&gt;&lt;/LI&gt;&lt;/OL&gt;&lt;P&gt;&lt;STRONG&gt;Problem:&lt;/STRONG&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;&lt;P&gt;After sending the register address, &lt;STRONG&gt;TX FIFO count = 1&lt;/STRONG&gt; (not empty), meaning the transaction/byte is not being sent on the bus.&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;&lt;STRONG&gt;FIFO error flag&lt;/STRONG&gt; is set in LPI2C_MasterGetStatusFlags().&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;No data transfer happens after that.&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;status = LPI2C_MasterStart(EXAMPLE_I2C_MASTER, 0x18, kLPI2C_Write);&lt;BR /&gt;if (status == kStatus_Success) {&lt;BR /&gt;LPI2C_MasterGetFifoCounts(EXAMPLE_I2C_MASTER, NULL, &amp;amp;txCount);&lt;BR /&gt;while (txCount) {&lt;BR /&gt;LPI2C_MasterGetFifoCounts(EXAMPLE_I2C_MASTER, NULL, &amp;amp;txCount);&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;if (LPI2C_MasterGetStatusFlags(EXAMPLE_I2C_MASTER) &amp;amp; kLPI2C_MasterNackDetectFlag) {&lt;BR /&gt;return kStatus_LPI2C_Nak;&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;uint8_t regAddr = 0x13;&lt;BR /&gt;reVal = LPI2C_MasterSend(EXAMPLE_I2C_MASTER, &amp;amp;regAddr, 1);&lt;BR /&gt;if (reVal != kStatus_Success) {&lt;BR /&gt;return -1;&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;LPI2C_MasterGetFifoCounts(EXAMPLE_I2C_MASTER, NULL, &amp;amp;txCount);&lt;BR /&gt;printf("TX FIFO Count: %d\r\n", txCount);&lt;/P&gt;&lt;P&gt;uint32_t flags = LPI2C_MasterGetStatusFlags(EXAMPLE_I2C_MASTER);&lt;BR /&gt;printf("Status = 0x%08X\r\n", flags);&lt;BR /&gt;}&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;&lt;STRONG&gt;Question:&lt;/STRONG&gt;&lt;BR /&gt;Why is the &lt;STRONG&gt;FIFO error flag&lt;/STRONG&gt; set, and why does TX FIFO count remain 1 after LPI2C_MasterSend()?&lt;BR /&gt;Is there any specific configuration needed for LPI2C3 TX FIFO flush or clock settings before sending register data?&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Additional Info:&lt;/STRONG&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;&lt;P&gt;Using default LPI2C driver from MCUXpresso SDK.&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;LPI2C3 clock and pin mux are already configured.&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;Slave ACK is received correctly during START condition.&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;Using polling mode (not interrupt/DMA).&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;Thanks in advance!&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;</description>
    <pubDate>Fri, 15 Aug 2025 09:12:25 GMT</pubDate>
    <dc:creator>Harisha</dc:creator>
    <dc:date>2025-08-15T09:12:25Z</dc:date>
    <item>
      <title>Subject: RT1040 LPI2C3 – FIFO error while reading WHO_AM_I register from accelerometer</title>
      <link>https://community.nxp.com/t5/MCX-Microcontrollers/Subject-RT1040-LPI2C3-FIFO-error-while-reading-WHO-AM-I-register/m-p/2152793#M3759</link>
      <description>&lt;P&gt;Hello,&lt;/P&gt;&lt;P&gt;I am working on the &lt;STRONG&gt;i.MX RT1040 EVK&lt;/STRONG&gt; using &lt;STRONG&gt;LPI2C3&lt;/STRONG&gt; to interface with an accelerometer (slave address = 0x18 base).&lt;BR /&gt;My goal is to read the &lt;STRONG&gt;WHO_AM_I&lt;/STRONG&gt; register (address = 0x13) to check if the accelerometer is responding.&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Steps I am following:&lt;/STRONG&gt;&lt;/P&gt;&lt;OL&gt;&lt;LI&gt;&lt;P&gt;Call LPI2C_MasterStart() with slave address 0x18 and write intent.&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;Wait until &lt;STRONG&gt;TX FIFO count = 0&lt;/STRONG&gt; using LPI2C_MasterGetFifoCounts() to ensure TX FIFO is empty.&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;Check for &lt;STRONG&gt;acknowledge&lt;/STRONG&gt; from the slave — ACK is received.&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;Send the WHO_AM_I register address (0x13) using LPI2C_MasterSend().&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;Check ACK again — slave sends ACK.&lt;/P&gt;&lt;/LI&gt;&lt;/OL&gt;&lt;P&gt;&lt;STRONG&gt;Problem:&lt;/STRONG&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;&lt;P&gt;After sending the register address, &lt;STRONG&gt;TX FIFO count = 1&lt;/STRONG&gt; (not empty), meaning the transaction/byte is not being sent on the bus.&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;&lt;STRONG&gt;FIFO error flag&lt;/STRONG&gt; is set in LPI2C_MasterGetStatusFlags().&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;No data transfer happens after that.&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;status = LPI2C_MasterStart(EXAMPLE_I2C_MASTER, 0x18, kLPI2C_Write);&lt;BR /&gt;if (status == kStatus_Success) {&lt;BR /&gt;LPI2C_MasterGetFifoCounts(EXAMPLE_I2C_MASTER, NULL, &amp;amp;txCount);&lt;BR /&gt;while (txCount) {&lt;BR /&gt;LPI2C_MasterGetFifoCounts(EXAMPLE_I2C_MASTER, NULL, &amp;amp;txCount);&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;if (LPI2C_MasterGetStatusFlags(EXAMPLE_I2C_MASTER) &amp;amp; kLPI2C_MasterNackDetectFlag) {&lt;BR /&gt;return kStatus_LPI2C_Nak;&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;uint8_t regAddr = 0x13;&lt;BR /&gt;reVal = LPI2C_MasterSend(EXAMPLE_I2C_MASTER, &amp;amp;regAddr, 1);&lt;BR /&gt;if (reVal != kStatus_Success) {&lt;BR /&gt;return -1;&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;LPI2C_MasterGetFifoCounts(EXAMPLE_I2C_MASTER, NULL, &amp;amp;txCount);&lt;BR /&gt;printf("TX FIFO Count: %d\r\n", txCount);&lt;/P&gt;&lt;P&gt;uint32_t flags = LPI2C_MasterGetStatusFlags(EXAMPLE_I2C_MASTER);&lt;BR /&gt;printf("Status = 0x%08X\r\n", flags);&lt;BR /&gt;}&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;&lt;STRONG&gt;Question:&lt;/STRONG&gt;&lt;BR /&gt;Why is the &lt;STRONG&gt;FIFO error flag&lt;/STRONG&gt; set, and why does TX FIFO count remain 1 after LPI2C_MasterSend()?&lt;BR /&gt;Is there any specific configuration needed for LPI2C3 TX FIFO flush or clock settings before sending register data?&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Additional Info:&lt;/STRONG&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;&lt;P&gt;Using default LPI2C driver from MCUXpresso SDK.&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;LPI2C3 clock and pin mux are already configured.&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;Slave ACK is received correctly during START condition.&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;Using polling mode (not interrupt/DMA).&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;Thanks in advance!&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;</description>
      <pubDate>Fri, 15 Aug 2025 09:12:25 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MCX-Microcontrollers/Subject-RT1040-LPI2C3-FIFO-error-while-reading-WHO-AM-I-register/m-p/2152793#M3759</guid>
      <dc:creator>Harisha</dc:creator>
      <dc:date>2025-08-15T09:12:25Z</dc:date>
    </item>
    <item>
      <title>Re: Subject: RT1040 LPI2C3 – FIFO error while reading WHO_AM_I register from accelerometer</title>
      <link>https://community.nxp.com/t5/MCX-Microcontrollers/Subject-RT1040-LPI2C3-FIFO-error-while-reading-WHO-AM-I-register/m-p/2152932#M3762</link>
      <description>&lt;P&gt;Hello&amp;nbsp;&amp;nbsp;&lt;a href="https://community.nxp.com/t5/user/viewprofilepage/user-id/253824"&gt;@Harisha&lt;/a&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Would you please share which accelerometer you are using?&lt;/P&gt;
&lt;P&gt;Regards,&lt;BR /&gt;Gustavo&lt;/P&gt;</description>
      <pubDate>Fri, 15 Aug 2025 16:30:50 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MCX-Microcontrollers/Subject-RT1040-LPI2C3-FIFO-error-while-reading-WHO-AM-I-register/m-p/2152932#M3762</guid>
      <dc:creator>gusarambula</dc:creator>
      <dc:date>2025-08-15T16:30:50Z</dc:date>
    </item>
    <item>
      <title>Re: Subject: RT1040 LPI2C3 – FIFO error while reading WHO_AM_I register from accelerometer</title>
      <link>https://community.nxp.com/t5/MCX-Microcontrollers/Subject-RT1040-LPI2C3-FIFO-error-while-reading-WHO-AM-I-register/m-p/2153052#M3765</link>
      <description>i am using FXLS8974CFR3 triaxial accelerometer</description>
      <pubDate>Sat, 16 Aug 2025 04:16:19 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MCX-Microcontrollers/Subject-RT1040-LPI2C3-FIFO-error-while-reading-WHO-AM-I-register/m-p/2153052#M3765</guid>
      <dc:creator>Harisha</dc:creator>
      <dc:date>2025-08-16T04:16:19Z</dc:date>
    </item>
  </channel>
</rss>

