<?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>LPC MicrocontrollersのトピックWhy logic High input is logic low on I2C data bus?</title>
    <link>https://community.nxp.com/t5/LPC-Microcontrollers/Why-logic-High-input-is-logic-low-on-I2C-data-bus/m-p/967856#M38331</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt;NXP LPC11E68JBD48E Microcontroller I2C1 is Master.&amp;nbsp;&amp;nbsp; I2C1 is in Master Transmitter Mode.&lt;BR /&gt;I2C1 peripheral is in chapter 13.&amp;nbsp; &lt;A href="http://www.mouser.com/ds/2/302/UM10732-315822.pdf"&gt;http://www.mouser.com/ds/2/302/UM10732-315822.pdf&lt;/A&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;BR /&gt;NXP PCAL6416A I2C 16-bit I/O Expander is Slave. &lt;A href="https://www.nxp.com/docs/en/data-sheet/PCAL6416A.pdf"&gt;https://www.nxp.com/docs/en/data-sheet/PCAL6416A.pdf&lt;/A&gt;.&lt;/DIV&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;Master reads one byte from slave port 0.&amp;nbsp; On one board all Eight bits are logic 1's as expected.&amp;nbsp; On the other board Seven bits are logic 1's as expected&lt;BR /&gt;but bit 2 is logic 0.&amp;nbsp; The input pin connected to bit 2 is pulled up to 3.3V but it's logic 0 on I2C data bus.&amp;nbsp; Why?&lt;/DIV&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; D7 D6 D5 D4 D3 D2 D1 D0&lt;BR /&gt;Expected&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&lt;BR /&gt;One board&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&lt;BR /&gt;Another board&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&lt;/DIV&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;Explanation/Questions on attached scope screenshots:&amp;nbsp; Master sends slave address 0100 001(A6-A0), followed by write bit(logic 0).&amp;nbsp; Slave responds with ACK(logic 0).&lt;BR /&gt;Then, master send command byte 0x00(read byte from Input port 0).&lt;BR /&gt;Master sends start bit, followed by slave address, followed by read bit(logic 1).&amp;nbsp; Slave sends ACK.&lt;BR /&gt;On one board, slave send 0xFF as expected.&amp;nbsp; On other board, slave sends 0xFB, not expected. Master follow with a NAK.&amp;nbsp; Slave pulls data bus low before the stop&lt;BR /&gt;condition?&amp;nbsp; Why slave pulls data bus low?&lt;/DIV&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;The primary question is why is bit 2 logic 0 on the I2C bus when it's pulled up to 3.3V ?&lt;/DIV&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;Are we setting the I2C device properly?&lt;BR /&gt;INT pin(active low) is floating.&lt;/DIV&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;/* Enable selection of Pull Up / Pull Down on unused inputs */&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; b = mIOExtender.PuPdEnablePort0(0x02);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; b = mIOExtender.PuPdEnablePort1(0x70);&lt;/DIV&gt;&lt;DIV&gt;/* Pull up unused inputs */&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; b = mIOExtender.PuPdSelectPort0(0xFF);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; b = mIOExtender.PuPdSelectPort1(0xFF);&lt;/DIV&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Tue, 24 Sep 2019 15:47:18 GMT</pubDate>
    <dc:creator>anaseem</dc:creator>
    <dc:date>2019-09-24T15:47:18Z</dc:date>
    <item>
      <title>Why logic High input is logic low on I2C data bus?</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/Why-logic-High-input-is-logic-low-on-I2C-data-bus/m-p/967856#M38331</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt;NXP LPC11E68JBD48E Microcontroller I2C1 is Master.&amp;nbsp;&amp;nbsp; I2C1 is in Master Transmitter Mode.&lt;BR /&gt;I2C1 peripheral is in chapter 13.&amp;nbsp; &lt;A href="http://www.mouser.com/ds/2/302/UM10732-315822.pdf"&gt;http://www.mouser.com/ds/2/302/UM10732-315822.pdf&lt;/A&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;BR /&gt;NXP PCAL6416A I2C 16-bit I/O Expander is Slave. &lt;A href="https://www.nxp.com/docs/en/data-sheet/PCAL6416A.pdf"&gt;https://www.nxp.com/docs/en/data-sheet/PCAL6416A.pdf&lt;/A&gt;.&lt;/DIV&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;Master reads one byte from slave port 0.&amp;nbsp; On one board all Eight bits are logic 1's as expected.&amp;nbsp; On the other board Seven bits are logic 1's as expected&lt;BR /&gt;but bit 2 is logic 0.&amp;nbsp; The input pin connected to bit 2 is pulled up to 3.3V but it's logic 0 on I2C data bus.&amp;nbsp; Why?&lt;/DIV&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; D7 D6 D5 D4 D3 D2 D1 D0&lt;BR /&gt;Expected&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&lt;BR /&gt;One board&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&lt;BR /&gt;Another board&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&lt;/DIV&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;Explanation/Questions on attached scope screenshots:&amp;nbsp; Master sends slave address 0100 001(A6-A0), followed by write bit(logic 0).&amp;nbsp; Slave responds with ACK(logic 0).&lt;BR /&gt;Then, master send command byte 0x00(read byte from Input port 0).&lt;BR /&gt;Master sends start bit, followed by slave address, followed by read bit(logic 1).&amp;nbsp; Slave sends ACK.&lt;BR /&gt;On one board, slave send 0xFF as expected.&amp;nbsp; On other board, slave sends 0xFB, not expected. Master follow with a NAK.&amp;nbsp; Slave pulls data bus low before the stop&lt;BR /&gt;condition?&amp;nbsp; Why slave pulls data bus low?&lt;/DIV&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;The primary question is why is bit 2 logic 0 on the I2C bus when it's pulled up to 3.3V ?&lt;/DIV&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;Are we setting the I2C device properly?&lt;BR /&gt;INT pin(active low) is floating.&lt;/DIV&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;/* Enable selection of Pull Up / Pull Down on unused inputs */&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; b = mIOExtender.PuPdEnablePort0(0x02);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; b = mIOExtender.PuPdEnablePort1(0x70);&lt;/DIV&gt;&lt;DIV&gt;/* Pull up unused inputs */&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; b = mIOExtender.PuPdSelectPort0(0xFF);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; b = mIOExtender.PuPdSelectPort1(0xFF);&lt;/DIV&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 24 Sep 2019 15:47:18 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/Why-logic-High-input-is-logic-low-on-I2C-data-bus/m-p/967856#M38331</guid>
      <dc:creator>anaseem</dc:creator>
      <dc:date>2019-09-24T15:47:18Z</dc:date>
    </item>
    <item>
      <title>Re: Why logic High input is logic low on I2C data bus?</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/Why-logic-High-input-is-logic-low-on-I2C-data-bus/m-p/967857#M38332</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Are you using an NXP board?&lt;/P&gt;&lt;P&gt;Could you please share the connections you are using?&amp;nbsp;&lt;/P&gt;&lt;P&gt;Are you using external pull-up resistors?&lt;/P&gt;&lt;P&gt;Are you using LPCOpen?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards&lt;/P&gt;&lt;P&gt;Soledad&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 25 Sep 2019 02:41:44 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/Why-logic-High-input-is-logic-low-on-I2C-data-bus/m-p/967857#M38332</guid>
      <dc:creator>soledad</dc:creator>
      <dc:date>2019-09-25T02:41:44Z</dc:date>
    </item>
    <item>
      <title>Re: Why logic High input is logic low on I2C data bus?</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/Why-logic-High-input-is-logic-low-on-I2C-data-bus/m-p/967858#M38333</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;This code base has XPRESSO_BOARD compile time flags.&amp;nbsp; So, previously we were probably using NXP board.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Connections. &amp;nbsp;&lt;span class="lia-inline-image-display-wrapper" image-alt="connections.jpg"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/89009i364A4719A9B2CFCA/image-size/large?v=v2&amp;amp;px=999" role="button" title="connections.jpg" alt="connections.jpg" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;No, we're not using external pull-up resistors on I2C port.&amp;nbsp; But we're using internal pull-up resistors.&amp;nbsp; Please review my settings of enabling and pulling up unused inputs on I2C port.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/* Enable selection of Pull Up / Pull Down on unused inputs */&lt;BR /&gt; b = mIOExtender.PuPdEnablePort0(0x02);&lt;BR /&gt; b = mIOExtender.PuPdEnablePort1(0x70);&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;/* Pull up unused inputs */&lt;BR /&gt; b = mIOExtender.PuPdSelectPort0(0xFF);&lt;BR /&gt; b = mIOExtender.PuPdSelectPort1(0xFF);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Yes, we're using LPCOpen because __USE_LPCOPEN is defined in our projects.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Amer&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 26 Sep 2019 13:31:58 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/Why-logic-High-input-is-logic-low-on-I2C-data-bus/m-p/967858#M38333</guid>
      <dc:creator>anaseem</dc:creator>
      <dc:date>2019-09-26T13:31:58Z</dc:date>
    </item>
    <item>
      <title>Re: Why logic High input is logic low on I2C data bus?</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/Why-logic-High-input-is-logic-low-on-I2C-data-bus/m-p/967859#M38334</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Please note Port 0 bit 2 is correct value on SDA bus on One board but incorrect on different board.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 26 Sep 2019 13:33:56 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/Why-logic-High-input-is-logic-low-on-I2C-data-bus/m-p/967859#M38334</guid>
      <dc:creator>anaseem</dc:creator>
      <dc:date>2019-09-26T13:33:56Z</dc:date>
    </item>
    <item>
      <title>Re: Why logic High input is logic low on I2C data bus?</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/Why-logic-High-input-is-logic-low-on-I2C-data-bus/m-p/967860#M38335</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;In my opinion this is a harward issue, please add pull-up external resistors and check the signals with an oscilloscope.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards&amp;nbsp;&lt;/P&gt;&lt;P&gt;Soledad&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 30 Sep 2019 17:00:41 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/Why-logic-High-input-is-logic-low-on-I2C-data-bus/m-p/967860#M38335</guid>
      <dc:creator>soledad</dc:creator>
      <dc:date>2019-09-30T17:00:41Z</dc:date>
    </item>
  </channel>
</rss>

