<?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: I3C SDA and SCL pin configured for Pullup Enabled, but output stays low in MCX Microcontrollers</title>
    <link>https://community.nxp.com/t5/MCX-Microcontrollers/I3C-SDA-and-SCL-pin-configured-for-Pullup-Enabled-but-output/m-p/1930334#M1506</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;1. This is precisely what I am doing: measuring the I3C pins (P1_8 and P1_9) with an oscilloscope when sending commands or data. See the previously attached project. Upon execution of &lt;FONT face="courier new,courier" color="#993300"&gt;BOARD_InitBootPins()&lt;/FONT&gt;, the pins remain held low (unexpected behavior). Upon execution of &lt;FONT face="courier new,courier" color="#993300"&gt;I3cSendCommand()&lt;/FONT&gt; (which &lt;U&gt;&lt;STRONG&gt;is&lt;/STRONG&gt;&lt;/U&gt; configured to send with a &lt;FONT face="courier new,courier"&gt;busType&lt;/FONT&gt; of &lt;EM&gt;&lt;FONT face="courier new,courier" color="#0000FF"&gt;kI3C_TypeI2C&lt;/FONT&gt;),&amp;nbsp;&lt;/EM&gt;&amp;nbsp;&lt;FONT face="courier new,courier" color="#993300"&gt;I3C_MasterTransferBlocking()&lt;/FONT&gt; returns early with a &lt;FONT face="courier new,courier" color="#0000FF"&gt;&lt;EM&gt;kStatus_I3C_Busy&lt;/EM&gt;&lt;/FONT&gt; because the &lt;FONT face="courier new,courier"&gt;masterState&lt;/FONT&gt; was detected as&amp;nbsp;&lt;SPAN&gt;&lt;FONT face="courier new,courier" color="#0000FF"&gt;&lt;EM&gt;kI3C_MasterStateSlvReq&lt;/EM&gt;&lt;/FONT&gt; ("slave holding SDA low"). &lt;STRONG&gt;So the pins are never released to an open drain and pulled high.&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;2. I am using &lt;EM&gt;&lt;STRONG&gt;&lt;FONT face="courier new,courier" color="#0000FF"&gt;kI3C_TypeI2C&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/EM&gt;. See the definitions of &lt;FONT face="courier new,courier" color="#993300"&gt;I3cSendCommand()&lt;/FONT&gt; and &lt;FONT face="courier new,courier" color="#993300"&gt;I3cRecieve().&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;3. I agree with your calculation, based on my reading of the reference manual. However, Config Tools shows that the Requested and Calculated I2C baud are both 100 kHz:&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="aberger_0-1723479794712.png" style="width: 400px;"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/293010i543CDCDC58BF5E01/image-size/medium?v=v2&amp;amp;px=400" role="button" title="aberger_0-1723479794712.png" alt="aberger_0-1723479794712.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;Maybe Config Tools is just wrong here. But since I can't actually get a command to send in the example project, I cannot see the CLK line on a scope to measure the actual frequency for I2CBAUD = 8.&amp;nbsp;&lt;/P&gt;&lt;P&gt;Furthermore, using the same algorithm, the example from the Reference Manual with T_OD = 200 ns, I2CBAUD = 6&amp;nbsp;&lt;STRONG&gt;&lt;EM&gt;does not work&lt;/EM&gt;&lt;/STRONG&gt;&lt;STRONG&gt;&amp;nbsp;&lt;/STRONG&gt;using the algorithm you described. The manual claims this will provide an I2C period of 2.4 µs&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="aberger_1-1723480102804.png" style="width: 400px;"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/293011iA982C7BA27F4E0BA/image-size/medium?v=v2&amp;amp;px=400" role="button" title="aberger_1-1723480102804.png" alt="aberger_1-1723480102804.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;Instead, the algorithm that we identified above yields:&lt;/P&gt;&lt;P&gt;T_OD = 200 ns&lt;/P&gt;&lt;P&gt;T_low_i2c = 800 ns&lt;/P&gt;&lt;P&gt;T_high_i2c = 800 ns&lt;/P&gt;&lt;P&gt;T_i2c = 1.6 µs&lt;/P&gt;&lt;P&gt;f_i2c = 625 kHz&lt;/P&gt;&lt;P&gt;So something is wrong with either the our algorithm, the Reference Manual, Config Tools, or the firmware algorithm itself.&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Mon, 12 Aug 2024 16:41:08 GMT</pubDate>
    <dc:creator>aberger</dc:creator>
    <dc:date>2024-08-12T16:41:08Z</dc:date>
    <item>
      <title>I3C SDA and SCL pin configured for Pullup Enabled, but output stays low</title>
      <link>https://community.nxp.com/t5/MCX-Microcontrollers/I3C-SDA-and-SCL-pin-configured-for-Pullup-Enabled-but-output/m-p/1920729#M1405</link>
      <description>&lt;P&gt;I am using the &lt;LI-PRODUCT title="FRDM-MCXA153" id="FRDM-MCXA153"&gt;&lt;/LI-PRODUCT&gt;&amp;nbsp;board and have routed I3C0_SDA to pin 2&amp;nbsp; (Port1, Pin8) and I3C0_SCL to pin 3 (Port1, Pin9). Using Config Tools, I have configured the SDA and SCL pins as follow&lt;/P&gt;&lt;PRE&gt;Slew Rate = Fast&lt;BR /&gt;Open Drain = Enabled&lt;BR /&gt;Drive Strength = Low&lt;BR /&gt;Drive Strength 1 = Normal&lt;BR /&gt;Pull select = Pullup&lt;BR /&gt;Pull enable = Enabled&lt;BR /&gt;Passive filter = Disabled&lt;BR /&gt;(and for SDA, Pull value = Low)&lt;/PRE&gt;&lt;P&gt;(Generated code in pin_mux.c for I3C0_SDA is shown below)&lt;/P&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="c"&gt; /* PORT1_8 (pin 2) is configured as I3C0_SDA */
    PORT_SetPinMux(BOARD_INITPINS_BMS2_SDA_PORT, BOARD_INITPINS_BMS2_SDA_PIN, kPORT_MuxAlt10);

    PORT1-&amp;gt;PCR[8] =
        ((PORT1-&amp;gt;PCR[8] &amp;amp;
          /* Mask bits to zero which are setting */
          (~(PORT_PCR_PS_MASK | PORT_PCR_PE_MASK | PORT_PCR_PV_MASK | PORT_PCR_ODE_MASK | PORT_PCR_IBE_MASK)))

         /* Pull Select: Enables internal pullup resistor. */
         | PORT_PCR_PS(PCR_PS_ps1)

         /* Pull Enable: Enables. */
         | PORT_PCR_PE(PCR_PE_pe1)

         /* Pull Value: Low. */
         | PORT_PCR_PV(PCR_PV_pv0)

         /* Open Drain Enable: Enables. */
         | PORT_PCR_ODE(PCR_ODE_ode1)

         /* Input Buffer Enable: Enables. */
         | PORT_PCR_IBE(PCR_IBE_ibe1));&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I can view the peripheral register at runtime and see that both pins are configured as expected:&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="aberger_1-1722357571195.png" style="width: 400px;"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/291019iDE3518F72A8C73AA/image-size/medium?v=v2&amp;amp;px=400" role="button" title="aberger_1-1722357571195.png" alt="aberger_1-1722357571195.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;However, the pin outputs remain low. (I am measuring the voltage levels on the Arduino Header J2-20 and J2-18 on the demo board).&amp;nbsp;&lt;/P&gt;&lt;P&gt;I am trying to use the I3C peripheral to communicate with I2C devices, so the following I3C Initialization routine runs after BOARD_InitPins() is called in my main():&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="cpp"&gt;#include "fsl_i3c.h"

#define I2C_BAUD_HZ 100000U
#define I3C_PPBAUD_HZ 4000000U

void I3cKinetis::Configure(void) 
{
    uint32_t clockFreqHz = CLOCK_GetFreq(kCLOCK_CoreSysClk); // 96 MHz

    i3c_master_config_t fslConfig;
    I3C_MasterGetDefaultConfig(&amp;amp;fslConfig);

    // Configure for I2C
    fslConfig.disableTimeout = true;
    fslConfig.hKeep = kI3C_MasterPassiveSDASCL;
    fslConfig.enableOpenDrainHigh = false;
    fslConfig.enableOpenDrainStop = true;
    fslConfig.baudRate_Hz.i2cBaud = I2C_BAUD_HZ ;
    // For now, just use the i2c baudrate for opendrain baudrate
    fslConfig.baudRate_Hz.i3cOpenDrainBaud = I2C_BAUD_HZ ;
    // but the Push-Pull baudrate is given by
    // clockFreqHz/(2*(PPBAUD + 1).
    // where PPBAUD must be an integer between [0, 15].
    // So the Push-Pull baudrate can't be slower than
    // clockFreqHz/(2*16)
    fslConfig.baudRate_Hz.i3cPushPullBaud = I3C_PPBAUD_HZ ;

    I3C_MasterInit(I3C0, &amp;amp;fslConfig, clockFreqHz);
}&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Are there extra steps I need to take to configure the I3C pins for open drain, with pull-up?&lt;/P&gt;</description>
      <pubDate>Tue, 30 Jul 2024 16:55:29 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MCX-Microcontrollers/I3C-SDA-and-SCL-pin-configured-for-Pullup-Enabled-but-output/m-p/1920729#M1405</guid>
      <dc:creator>aberger</dc:creator>
      <dc:date>2024-07-30T16:55:29Z</dc:date>
    </item>
    <item>
      <title>Re: I3C SDA and SCL pin configured for Pullup Enabled, but output stays low</title>
      <link>https://community.nxp.com/t5/MCX-Microcontrollers/I3C-SDA-and-SCL-pin-configured-for-Pullup-Enabled-but-output/m-p/1921444#M1413</link>
      <description>&lt;P&gt;Hi&amp;nbsp;&lt;a href="https://community.nxp.com/t5/user/viewprofilepage/user-id/113456"&gt;@aberger&lt;/a&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;You can download the MCXA153 SDK from the NXP official website.&lt;/P&gt;
&lt;P&gt;&lt;A href="https://kex-stage.nxp.com/en/select" target="_blank"&gt;Select Board | MCUXpresso SDK Builder (nxp.com)&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="HangZhang_0-1722415500492.png" style="width: 400px;"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/291148i0F4F2588C5AA6592/image-size/medium?v=v2&amp;amp;px=400" role="button" title="HangZhang_0-1722415500492.png" alt="HangZhang_0-1722415500492.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;In SDK_2_16_000_FRDM-MCXA153\boards\frdmmcxa153\driver_examples\i3c,&lt;BR /&gt;there are i3c examples.&lt;BR /&gt;there are pin config in the example, you can refer to it.&lt;/P&gt;
&lt;P&gt;Hope this will help you.&lt;/P&gt;
&lt;P&gt;BR&lt;/P&gt;
&lt;P&gt;Hang&lt;/P&gt;</description>
      <pubDate>Wed, 31 Jul 2024 08:45:38 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MCX-Microcontrollers/I3C-SDA-and-SCL-pin-configured-for-Pullup-Enabled-but-output/m-p/1921444#M1413</guid>
      <dc:creator>Harry_Zhang</dc:creator>
      <dc:date>2024-07-31T08:45:38Z</dc:date>
    </item>
    <item>
      <title>Re: I3C SDA and SCL pin configured for Pullup Enabled, but output stays low</title>
      <link>https://community.nxp.com/t5/MCX-Microcontrollers/I3C-SDA-and-SCL-pin-configured-for-Pullup-Enabled-but-output/m-p/1922163#M1414</link>
      <description>&lt;P&gt;This isn't actually helpful. I took a look at the "i3c_polling_b2b_transfer_master" example. Even though it claims to first execute a transfer in I2C mode, the pins are not configured for Open Drain (with Pullup Enabled). Without Open Drain, I cannot communicate with a target device that requires support for clock stretching. So my question remains: how to actually get the I3C pins configured for Open Drain, with Pullup Enabled&lt;/P&gt;&lt;P&gt;(I will note that Config Tools&amp;nbsp;&lt;EM&gt;did succeed at configuring&amp;nbsp;&lt;/EM&gt;&lt;STRONG&gt;I2C&lt;EM&gt;&amp;nbsp;&lt;/EM&gt;&lt;/STRONG&gt;pins for Open drain, with Pullup Enabled. I don't understand why the same configuration, specified in the routing details for the I3C pins, does not achieve Open Drain behavior).&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="aberger_0-1722461739231.png" style="width: 999px;"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/291242i8DC043ECB5EF53C3/image-size/large?v=v2&amp;amp;px=999" role="button" title="aberger_0-1722461739231.png" alt="aberger_0-1722461739231.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 31 Jul 2024 21:36:38 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MCX-Microcontrollers/I3C-SDA-and-SCL-pin-configured-for-Pullup-Enabled-but-output/m-p/1922163#M1414</guid>
      <dc:creator>aberger</dc:creator>
      <dc:date>2024-07-31T21:36:38Z</dc:date>
    </item>
    <item>
      <title>Re: I3C SDA and SCL pin configured for Pullup Enabled, but output stays low</title>
      <link>https://community.nxp.com/t5/MCX-Microcontrollers/I3C-SDA-and-SCL-pin-configured-for-Pullup-Enabled-but-output/m-p/1922767#M1420</link>
      <description>&lt;P&gt;Hi&amp;nbsp;&lt;a href="https://community.nxp.com/t5/user/viewprofilepage/user-id/113456"&gt;@aberger&lt;/a&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I understand your question.&lt;BR /&gt;During pin initialization, there is no need to configure open drain mode. Because this has already been implemented inside the chip, you don't need to worry.&lt;BR /&gt;If you want to test the open drain status, you need to test it when transmitting data.&lt;/P&gt;
&lt;P&gt;BR&lt;/P&gt;
&lt;P&gt;Hang&lt;/P&gt;</description>
      <pubDate>Thu, 01 Aug 2024 08:37:36 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MCX-Microcontrollers/I3C-SDA-and-SCL-pin-configured-for-Pullup-Enabled-but-output/m-p/1922767#M1420</guid>
      <dc:creator>Harry_Zhang</dc:creator>
      <dc:date>2024-08-01T08:37:36Z</dc:date>
    </item>
    <item>
      <title>Re: I3C SDA and SCL pin configured for Pullup Enabled, but output stays low</title>
      <link>https://community.nxp.com/t5/MCX-Microcontrollers/I3C-SDA-and-SCL-pin-configured-for-Pullup-Enabled-but-output/m-p/1929486#M1498</link>
      <description>&lt;P&gt;As mentioned in the original post, measurement of the I3C pins on an oscilloscope shows that they remain LOW even after the pin initialization is executed (with Open Drain, and Pullup enabled). As a result, when I try to execute a transfer, &lt;FONT face="courier new,courier"&gt;I3C_MasterTransferBlocking&lt;/FONT&gt; returns &lt;EM&gt;kStatus_I3C_Busy&lt;/EM&gt; (because the &lt;FONT face="courier new,courier"&gt;masterState&lt;/FONT&gt; was detected to be &lt;EM&gt;kI3C_MasterStateSlvReq, &lt;/EM&gt;i.e.&amp;nbsp;slave holding SDA low). However, I believe that it is not the&amp;nbsp;&lt;EM&gt;slave&lt;/EM&gt;&amp;nbsp;holding SDA low, but that the MCXA has failed to configure the I3C pins as open drain (both SDA and SCL remain low).&lt;/P&gt;&lt;P&gt;I've attached a minimum working example.&amp;nbsp;&lt;/P&gt;&lt;P&gt;I noticed that the &lt;FONT face="courier new,courier"&gt;i3c_master_enable_t&lt;/FONT&gt;&amp;nbsp;included in fsl_i3c.h does not include an enumeration for I2C Controller mode (MSTENA = 0b11). Is this a problem?&lt;/P&gt;&lt;P&gt;Lastly, the description of I2CBAUD in the Reference Manual with regards to how the I2C baudrate is calculated is quite unclear. From the manual:&lt;/P&gt;&lt;BLOCKQUOTE&gt;&lt;P&gt;I2C Baud Rate&lt;/P&gt;&lt;P&gt;Specifies the I2C low and high times in ODBAUD counts:&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;I2CBAUD &amp;gt;&amp;gt; 1 is the main count load, and it is count - 1. So, I2CBAUD &amp;gt;&amp;gt; 1: I2CBAUD = 0 for one ODBAUD beat and I2CBAUD = 1 for two ODBAUD beats.&lt;/LI&gt;&lt;LI&gt;If I2CBAUD[28] is 1, then the low time has one extra ODBAUD beat. The I2CBAUD field is normally 3, where ODBAUD gives 200 ns. For I2CBAUD &amp;gt;&amp;gt; 1, I2CBAUD = 1, which means two ODBAUD beats. To meet the requirements for Fast-mode Plus (Fm+), (2 + 1) * 200 = 600 ns low, with 2 * 200 = 400 ns high for 1 μs period. For Fast mode (Fm), I2CBAUD is normally 11 (giving 2.6 μs) or 6 (giving 2.4 μs).&lt;/LI&gt;&lt;/UL&gt;&lt;/BLOCKQUOTE&gt;&lt;P&gt;Should I understand this to mean the following:&lt;/P&gt;&lt;P&gt;T_low_I2C = ((I2CBAUD &amp;gt;&amp;gt; 1) + 1 + (I2CBAUD &amp;amp; 0x1)) * T_ODBAUD&lt;/P&gt;&lt;P&gt;T_high_I2C =&amp;nbsp;((I2CBAUD &amp;gt;&amp;gt; 1) + 1) * T_ODBAUD&lt;/P&gt;&lt;P&gt;which implies:&lt;/P&gt;&lt;P&gt;T_I2C = (2 + 2*(I2CBAUD &amp;gt;&amp;gt; 1) + (I2CBAUD &amp;amp; 0x1)) * T_ODBAUD&lt;/P&gt;&lt;P&gt;This works for the example of I2CBAUD = 11, but not for I2CBAUD = 6. However, in the attached project I have configured the following:&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;FCLK = 24 MHz (I3CFCLKDIV = 4)&lt;/LI&gt;&lt;LI&gt;Push-Pull baudrate = 2 MHz&lt;/LI&gt;&lt;LI&gt;Open-Drain baudrate = 500 kHz&lt;/LI&gt;&lt;LI&gt;I2C baudrate = 100 kHz&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;I can see from the Peripherals that&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;PPBAUD = 5&lt;/LI&gt;&lt;LI&gt;ODBAUD = 3&lt;/LI&gt;&lt;LI&gt;I2CBAUD = 8&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;Since the I2C baudrate is 5x slower than the OD baudrate, this suggests that&amp;nbsp;&lt;/P&gt;&lt;P&gt;T_I2C = ((I2CBAUD &amp;gt;&amp;gt; 1) + 1) * T_ODBAUD&lt;/P&gt;&lt;P&gt;But this calculation doesn't agree with any of the examples in the Reference Manual.&lt;/P&gt;&lt;P&gt;Can you help me understand where my calculation is wrong so that I may figure out the I2CBAUD settings (and related clock frequencies and divisors) necessary for my application (which requires an I2C baudrate of 100 kHz)?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 09 Aug 2024 23:17:50 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MCX-Microcontrollers/I3C-SDA-and-SCL-pin-configured-for-Pullup-Enabled-but-output/m-p/1929486#M1498</guid>
      <dc:creator>aberger</dc:creator>
      <dc:date>2024-08-09T23:17:50Z</dc:date>
    </item>
    <item>
      <title>Re: I3C SDA and SCL pin configured for Pullup Enabled, but output stays low</title>
      <link>https://community.nxp.com/t5/MCX-Microcontrollers/I3C-SDA-and-SCL-pin-configured-for-Pullup-Enabled-but-output/m-p/1929489#M1499</link>
      <description>&lt;P&gt;I'll quickly add that if the pins in question (P1_8 and P1_9) are configured as GPIO Inputs, Open Drain, Pullup Enabled, then *they do get pulled high* upon execution of the BOARD_InitBootPins()&amp;nbsp;routine at the top of main().&lt;/P&gt;</description>
      <pubDate>Fri, 09 Aug 2024 23:26:08 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MCX-Microcontrollers/I3C-SDA-and-SCL-pin-configured-for-Pullup-Enabled-but-output/m-p/1929489#M1499</guid>
      <dc:creator>aberger</dc:creator>
      <dc:date>2024-08-09T23:26:08Z</dc:date>
    </item>
    <item>
      <title>Re: I3C SDA and SCL pin configured for Pullup Enabled, but output stays low</title>
      <link>https://community.nxp.com/t5/MCX-Microcontrollers/I3C-SDA-and-SCL-pin-configured-for-Pullup-Enabled-but-output/m-p/1929923#M1502</link>
      <description>&lt;P&gt;Hi&amp;nbsp;&lt;a href="https://community.nxp.com/t5/user/viewprofilepage/user-id/113456"&gt;@aberger&lt;/a&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;1. You can try measuring this pin through an oscilloscope when sending commands or data.&lt;/P&gt;
&lt;P&gt;2.&amp;nbsp; When you use the I2C, you can use kI3C_TypeI2C,&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="HangZhang_0-1723444156711.png" style="width: 400px;"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/292886i4183B2F8260917F5/image-size/medium?v=v2&amp;amp;px=400" role="button" title="HangZhang_0-1723444156711.png" alt="HangZhang_0-1723444156711.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;3.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;• FCLK = 24 MHz, I3CFCLKDIV = 4&lt;BR /&gt;• Push-Pull baudrate = 2 MHz (PPBAUD = 5)&lt;BR /&gt;• Open-Drain baudrate = 500 kHz (ODBAUD = 3)&lt;BR /&gt;• I2CBAUD = 8&lt;BR /&gt;ODBAUD calculation:&lt;/P&gt;
&lt;P&gt;&lt;FONT size="5"&gt;T&lt;/FONT&gt;ODBAUD = 1/500kHz = 2us.&lt;/P&gt;
&lt;P&gt;&lt;FONT size="5"&gt;T&lt;/FONT&gt;low_I2c = (8/2 + 1 +0) *2 us = 10 us&lt;/P&gt;
&lt;P&gt;&lt;FONT size="5"&gt;T&lt;/FONT&gt;high_i2c = (8/2 + 1)*2 = 10us,&lt;/P&gt;
&lt;P&gt;&lt;FONT size="5"&gt;T&lt;/FONT&gt;i2c = 10 +10 = 20 us&lt;/P&gt;
&lt;P&gt;So the Fi2c = 50kHz.&lt;/P&gt;
&lt;P&gt;This means that with I2CBAUD = 8, your I2C clock frequency would be 50 kHz, which is different from the expected 100 kHz. To achieve a 100 kHz I2C clock, you would need to adjust the I2CBAUD value accordingly.&lt;/P&gt;
&lt;P&gt;BR&lt;/P&gt;
&lt;P&gt;Hang&lt;/P&gt;</description>
      <pubDate>Mon, 12 Aug 2024 06:35:24 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MCX-Microcontrollers/I3C-SDA-and-SCL-pin-configured-for-Pullup-Enabled-but-output/m-p/1929923#M1502</guid>
      <dc:creator>Harry_Zhang</dc:creator>
      <dc:date>2024-08-12T06:35:24Z</dc:date>
    </item>
    <item>
      <title>Re: I3C SDA and SCL pin configured for Pullup Enabled, but output stays low</title>
      <link>https://community.nxp.com/t5/MCX-Microcontrollers/I3C-SDA-and-SCL-pin-configured-for-Pullup-Enabled-but-output/m-p/1930334#M1506</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;1. This is precisely what I am doing: measuring the I3C pins (P1_8 and P1_9) with an oscilloscope when sending commands or data. See the previously attached project. Upon execution of &lt;FONT face="courier new,courier" color="#993300"&gt;BOARD_InitBootPins()&lt;/FONT&gt;, the pins remain held low (unexpected behavior). Upon execution of &lt;FONT face="courier new,courier" color="#993300"&gt;I3cSendCommand()&lt;/FONT&gt; (which &lt;U&gt;&lt;STRONG&gt;is&lt;/STRONG&gt;&lt;/U&gt; configured to send with a &lt;FONT face="courier new,courier"&gt;busType&lt;/FONT&gt; of &lt;EM&gt;&lt;FONT face="courier new,courier" color="#0000FF"&gt;kI3C_TypeI2C&lt;/FONT&gt;),&amp;nbsp;&lt;/EM&gt;&amp;nbsp;&lt;FONT face="courier new,courier" color="#993300"&gt;I3C_MasterTransferBlocking()&lt;/FONT&gt; returns early with a &lt;FONT face="courier new,courier" color="#0000FF"&gt;&lt;EM&gt;kStatus_I3C_Busy&lt;/EM&gt;&lt;/FONT&gt; because the &lt;FONT face="courier new,courier"&gt;masterState&lt;/FONT&gt; was detected as&amp;nbsp;&lt;SPAN&gt;&lt;FONT face="courier new,courier" color="#0000FF"&gt;&lt;EM&gt;kI3C_MasterStateSlvReq&lt;/EM&gt;&lt;/FONT&gt; ("slave holding SDA low"). &lt;STRONG&gt;So the pins are never released to an open drain and pulled high.&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;2. I am using &lt;EM&gt;&lt;STRONG&gt;&lt;FONT face="courier new,courier" color="#0000FF"&gt;kI3C_TypeI2C&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/EM&gt;. See the definitions of &lt;FONT face="courier new,courier" color="#993300"&gt;I3cSendCommand()&lt;/FONT&gt; and &lt;FONT face="courier new,courier" color="#993300"&gt;I3cRecieve().&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;3. I agree with your calculation, based on my reading of the reference manual. However, Config Tools shows that the Requested and Calculated I2C baud are both 100 kHz:&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="aberger_0-1723479794712.png" style="width: 400px;"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/293010i543CDCDC58BF5E01/image-size/medium?v=v2&amp;amp;px=400" role="button" title="aberger_0-1723479794712.png" alt="aberger_0-1723479794712.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;Maybe Config Tools is just wrong here. But since I can't actually get a command to send in the example project, I cannot see the CLK line on a scope to measure the actual frequency for I2CBAUD = 8.&amp;nbsp;&lt;/P&gt;&lt;P&gt;Furthermore, using the same algorithm, the example from the Reference Manual with T_OD = 200 ns, I2CBAUD = 6&amp;nbsp;&lt;STRONG&gt;&lt;EM&gt;does not work&lt;/EM&gt;&lt;/STRONG&gt;&lt;STRONG&gt;&amp;nbsp;&lt;/STRONG&gt;using the algorithm you described. The manual claims this will provide an I2C period of 2.4 µs&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="aberger_1-1723480102804.png" style="width: 400px;"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/293011iA982C7BA27F4E0BA/image-size/medium?v=v2&amp;amp;px=400" role="button" title="aberger_1-1723480102804.png" alt="aberger_1-1723480102804.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;Instead, the algorithm that we identified above yields:&lt;/P&gt;&lt;P&gt;T_OD = 200 ns&lt;/P&gt;&lt;P&gt;T_low_i2c = 800 ns&lt;/P&gt;&lt;P&gt;T_high_i2c = 800 ns&lt;/P&gt;&lt;P&gt;T_i2c = 1.6 µs&lt;/P&gt;&lt;P&gt;f_i2c = 625 kHz&lt;/P&gt;&lt;P&gt;So something is wrong with either the our algorithm, the Reference Manual, Config Tools, or the firmware algorithm itself.&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 12 Aug 2024 16:41:08 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MCX-Microcontrollers/I3C-SDA-and-SCL-pin-configured-for-Pullup-Enabled-but-output/m-p/1930334#M1506</guid>
      <dc:creator>aberger</dc:creator>
      <dc:date>2024-08-12T16:41:08Z</dc:date>
    </item>
    <item>
      <title>Re: I3C SDA and SCL pin configured for Pullup Enabled, but output stays low</title>
      <link>https://community.nxp.com/t5/MCX-Microcontrollers/I3C-SDA-and-SCL-pin-configured-for-Pullup-Enabled-but-output/m-p/1932711#M1516</link>
      <description>&lt;P&gt;Hi&amp;nbsp;&lt;a href="https://community.nxp.com/t5/user/viewprofilepage/user-id/113456"&gt;@aberger&lt;/a&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I tested the&amp;nbsp;P0_16 and P0_17 in i3c_polling_b2b_transfer through oscilloscope. when transfer the command and data. The SDA is high.&lt;/P&gt;
&lt;P&gt;I have attached an oscilloscope image.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="HangZhang_0-1723691033118.png" style="width: 400px;"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/293390iECA41F92A7BE6B4D/image-size/medium?v=v2&amp;amp;px=400" role="button" title="HangZhang_0-1723691033118.png" alt="HangZhang_0-1723691033118.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;It can work.&lt;/P&gt;
&lt;P&gt;And i tested the P1_8 and P1_9, it can not work.&lt;/P&gt;
&lt;P&gt;You can check the schematic,&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="HangZhang_0-1723700958729.png" style="width: 400px;"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/293406i0984E683690B5E70/image-size/medium?v=v2&amp;amp;px=400" role="button" title="HangZhang_0-1723700958729.png" alt="HangZhang_0-1723700958729.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;P0_16 has connected a pull-up resistor, and P1_8 has not connected a pull-up resistor.&lt;/P&gt;
&lt;P&gt;So if you want to use the P1_8 as the SDA function,&lt;/P&gt;
&lt;P&gt;you need to connect a pull-up resistor.&lt;/P&gt;
&lt;P&gt;BR&lt;/P&gt;
&lt;P&gt;Hang&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 15 Aug 2024 05:51:34 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MCX-Microcontrollers/I3C-SDA-and-SCL-pin-configured-for-Pullup-Enabled-but-output/m-p/1932711#M1516</guid>
      <dc:creator>Harry_Zhang</dc:creator>
      <dc:date>2024-08-15T05:51:34Z</dc:date>
    </item>
    <item>
      <title>Re: I3C SDA and SCL pin configured for Pullup Enabled, but output stays low</title>
      <link>https://community.nxp.com/t5/MCX-Microcontrollers/I3C-SDA-and-SCL-pin-configured-for-Pullup-Enabled-but-output/m-p/1933058#M1519</link>
      <description>&lt;P&gt;Then what is the point of the internal pull-up configuration for the I3C pins?&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="aberger_0-1723738125378.png" style="width: 999px;"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/293478i06D1D80A04AE3FF9/image-size/large?v=v2&amp;amp;px=999" role="button" title="aberger_0-1723738125378.png" alt="aberger_0-1723738125378.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;The Data Sheet states that the pullup for I3C pins is 1.75 kOhm.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="aberger_1-1723738169747.png" style="width: 400px;"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/293479iB446B39048C509B9/image-size/medium?v=v2&amp;amp;px=400" role="button" title="aberger_1-1723738169747.png" alt="aberger_1-1723738169747.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;Furthermore, I will reiterate than when routing the&amp;nbsp;&lt;STRONG&gt;I2C&lt;EM&gt;&amp;nbsp;&lt;/EM&gt;&lt;/STRONG&gt;&lt;SPAN&gt;pins LPI2C0_SDA to P1_8 and LPI2C0_SDA to P1_9 with Open drain, and Pullup Enabled, those lines &lt;EM&gt;are pulled high without the need for external pullup resistors&lt;/EM&gt;. I still don't understand why the same configuration, specified in the routing details for the I3C pins, does not achieve Open Drain behavior.&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Thu, 15 Aug 2024 16:14:02 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MCX-Microcontrollers/I3C-SDA-and-SCL-pin-configured-for-Pullup-Enabled-but-output/m-p/1933058#M1519</guid>
      <dc:creator>aberger</dc:creator>
      <dc:date>2024-08-15T16:14:02Z</dc:date>
    </item>
    <item>
      <title>Re: I3C SDA and SCL pin configured for Pullup Enabled, but output stays low</title>
      <link>https://community.nxp.com/t5/MCX-Microcontrollers/I3C-SDA-and-SCL-pin-configured-for-Pullup-Enabled-but-output/m-p/1933066#M1520</link>
      <description>&lt;P&gt;I'll also add that the operation shown here (&lt;A href="https://community.nxp.com/t5/MCX-Microcontrollers/I3C-SDA-and-SCL-pin-configured-for-Pullup-Enabled-but-output/m-p/1932711/highlight/true#M1516" target="_blank"&gt;https://community.nxp.com/t5/MCX-Microcontrollers/I3C-SDA-and-SCL-pin-configured-for-Pullup-Enabled-but-output/m-p/1932711/highlight/true#M1516&lt;/A&gt;)&lt;SPAN&gt;&amp;nbsp;only demonstrates that SDA is open-drain and using the pull-up resistor. I need the SCL to be open-drain as well to permit clock-stretching by the target device. In your oscilloscope capture, the SCL is clearly push-pull. However, the Reference manual clearly states that clock-stretching is supported by the I3C peripheral.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="aberger_0-1723739265667.png" style="width: 400px;"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/293480i6E2ABE677EC12A9D/image-size/medium?v=v2&amp;amp;px=400" role="button" title="aberger_0-1723739265667.png" alt="aberger_0-1723739265667.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;However, perhaps the highlighted sentence means that the internal pull-ups are not sufficient when operating in MSTENA = 11b (I2C Controller mode)?&lt;/P&gt;&lt;P&gt;Furthermore, your solution only demonstrates that SDA is open-drain and using the pull-up resistor. I need the SCL to be open-drain as well to permit clock-stretching by the target device. In your oscilloscope capture, the SCL is clearly push-pull. The Reference manual clearly states that this is supported.&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="aberger_0-1723739265667.png" style="width: 400px;"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/293480i6E2ABE677EC12A9D/image-size/medium?v=v2&amp;amp;px=400" role="button" title="aberger_0-1723739265667.png" alt="aberger_0-1723739265667.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;However, perhaps the highlighted sentence means that the internal pull-ups are not sufficient when operating in MSTENA = 11b (I2C Controller mode)? If so, it should be clearly stated somewhere that external pullups are necessary for I2C support when using the I3C peripheral.&lt;/P&gt;</description>
      <pubDate>Thu, 15 Aug 2024 16:31:38 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MCX-Microcontrollers/I3C-SDA-and-SCL-pin-configured-for-Pullup-Enabled-but-output/m-p/1933066#M1520</guid>
      <dc:creator>aberger</dc:creator>
      <dc:date>2024-08-15T16:31:38Z</dc:date>
    </item>
    <item>
      <title>Re: I3C SDA and SCL pin configured for Pullup Enabled, but output stays low</title>
      <link>https://community.nxp.com/t5/MCX-Microcontrollers/I3C-SDA-and-SCL-pin-configured-for-Pullup-Enabled-but-output/m-p/1933534#M1528</link>
      <description>&lt;P&gt;Hi &lt;a href="https://community.nxp.com/t5/user/viewprofilepage/user-id/113456"&gt;@aberger&lt;/a&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;1.&amp;nbsp;SCL can automatically switch between open drain mode and push pull mode.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="HangZhang_0-1723796537653.png" style="width: 400px;"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/293600i12DB8DAAEAD7F280/image-size/medium?v=v2&amp;amp;px=400" role="button" title="HangZhang_0-1723796537653.png" alt="HangZhang_0-1723796537653.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;2. As you said,&amp;nbsp;external pullups are necessary for I2C support when using the I3C peripheral.&lt;/P&gt;
&lt;P&gt;In i3c circuit design, it is usually necessary to maintain compatibility with i2c circuits, as shown in the schematic diagram, which defaults to i3c functionality. When i2c connection is required, R59 needs to be removed and R61 and R62 need to be installed.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="HangZhang_1-1723796607291.png" style="width: 400px;"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/293601iB3A88B95A05CD953/image-size/medium?v=v2&amp;amp;px=400" role="button" title="HangZhang_1-1723796607291.png" alt="HangZhang_1-1723796607291.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;BR&lt;/P&gt;
&lt;P&gt;Hang&lt;/P&gt;</description>
      <pubDate>Fri, 16 Aug 2024 08:25:01 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MCX-Microcontrollers/I3C-SDA-and-SCL-pin-configured-for-Pullup-Enabled-but-output/m-p/1933534#M1528</guid>
      <dc:creator>Harry_Zhang</dc:creator>
      <dc:date>2024-08-16T08:25:01Z</dc:date>
    </item>
  </channel>
</rss>

