<?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中的主题 Monitor Mode on I2C Interface, LPC4088</title>
    <link>https://community.nxp.com/t5/LPC-Microcontrollers/Monitor-Mode-on-I2C-Interface-LPC4088/m-p/598028#M23131</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;Hello, &amp;nbsp;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;I managed to setup the I2C Interface on my LPC4088 in Monitor Mode and i can see everything that is transmitted on the bus, but i ran into a problem.&amp;nbsp;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;Apparently my Interface interprets all intercepted I2C-Packets (so everything between Start and Stop Condition) as Writing-Operations (aka Slave-Receiver Operation).&amp;nbsp;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;Meaning the State changes of the Interface (content of I2C_STAT register) look like:&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;0x60 -&amp;gt;&amp;nbsp;0x&lt;SPAN style="border: 0px; font-weight: inherit;"&gt;80 -&amp;gt; 0x&lt;/SPAN&gt;&lt;SPAN style="border: 0px; font-weight: inherit;"&gt;80 -&amp;gt; ... -&amp;gt; 0xA0&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&lt;SPAN style="border: 0px; font-weight: inherit;"&gt;where the states indicate the following:&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&lt;SPAN style="border: 0px; font-weight: inherit;"&gt;0x60: Own Slave Address + Write Bit received, ACK received&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&lt;SPAN style="border: 0px; font-weight: inherit;"&gt;0x80:&amp;nbsp;Addressed with own&amp;nbsp;Slave Address, Data received, ACK returned&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&lt;SPAN style="border: 0px; font-weight: inherit;"&gt;0xA0:&amp;nbsp;Stop or Repeated Start received&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&lt;SPAN style="border: 0px; font-weight: inherit;"&gt;However they should also be State changes like (to indicate Slave-Transmitter Operations):&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&lt;SPAN style="border: 0px; font-weight: inherit;"&gt;0xA8 -&amp;gt; &lt;SPAN style="border: 0px; font-weight: inherit;"&gt;0xB8 -&amp;gt;&amp;nbsp;&lt;/SPAN&gt;0xB8 -&amp;gt; ... -&amp;gt; 0xC8 -&amp;gt; 0xA0&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&lt;SPAN style="border: 0px; font-weight: inherit;"&gt;where the states indicate the following:&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&lt;SPAN style="border: 0px; font-weight: inherit;"&gt;0xA8:&amp;nbsp;Own Slave Address + Read Bit has been received; ACK has been returned&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&lt;SPAN style="border: 0px; font-weight: inherit;"&gt;0xB8:&amp;nbsp;Data byte in I2DAT has been transmitted; ACK has been received&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&lt;SPAN style="border: 0px; font-weight: inherit;"&gt;0xC8: Last data byte has been transmitted, ACK has been received&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&lt;SPAN style="border: 0px; font-weight: inherit;"&gt;I verified the measured protocol&amp;nbsp;with an Logic Analyzer and the Results indicate that the R/W-Bit was indeed transmitted correctly.&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&lt;SPAN style="border: 0px; font-weight: inherit;"&gt;I checked the 7-bit address + R/W-bit which is transmitted in the first byte after the start condition and the address is always correct but the R/W-bit is always '0' (but at the same time '1', when measured with the logic analyser&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&lt;SPAN style="border: 0px; font-weight: inherit;"&gt;Here is the code i used to configure the I2C interface:&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&lt;SPAN style="border: 0px; font-weight: inherit;"&gt;LPC_I2Cx(id)-&amp;gt;ADR0 = (I2C_SLAVE_ADDR &amp;lt;&amp;lt; 1); //Set own device address&lt;BR /&gt;LPC_I2Cx(id)-&amp;gt;MASK[0] = (I2C_SLAVE_MSK &amp;lt;&amp;lt; 1); //Set address mask&lt;BR /&gt;LPC_I2Cx(id)-&amp;gt;MMCTRL |= I2C_I2MMCTRL_MM_ENA; //Enable I2C Monitor Mode&lt;BR /&gt;LPC_I2Cx(id)-&amp;gt;CONSET = I2C_CON_I2EN | I2C_CON_AA;&lt;BR /&gt;LPC_I2Cx(id)-&amp;gt;CONCLR = I2C_CON_STA | I2C_CON_STO | I2C_CON_SI; //Enable I2C Interface&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&amp;nbsp;&lt;BR /&gt;I also tried different I2C-Interfaces, but the result was the same.&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;BOTTOM LINE:&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&lt;SPAN style="border: 0px; font-weight: inherit;"&gt;What causes this behavior?&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&lt;SPAN style="border: 0px; font-weight: inherit;"&gt;Is it the I2C Interface itself interpreting the R/W Bit as&amp;nbsp;a '0' because its always "reading" from the Bus?&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&lt;SPAN style="border: 0px; font-weight: inherit;"&gt;If YES, is there a way to bypass this Issue?&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&lt;SPAN style="border: 0px; font-weight: inherit;"&gt;If NO, did I configure something wrong?&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&lt;SPAN style="border: 0px; font-weight: inherit;"&gt;(Feedback/Suggestions/Experiences are much appreciated&amp;nbsp;;-) )&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&lt;SPAN style="border: 0px; font-weight: inherit;"&gt;BR,&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&lt;SPAN style="border: 0px; font-weight: inherit;"&gt;Alexander&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Fri, 03 Feb 2017 06:42:52 GMT</pubDate>
    <dc:creator>alexanderplanit</dc:creator>
    <dc:date>2017-02-03T06:42:52Z</dc:date>
    <item>
      <title>Monitor Mode on I2C Interface, LPC4088</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/Monitor-Mode-on-I2C-Interface-LPC4088/m-p/598028#M23131</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;Hello, &amp;nbsp;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;I managed to setup the I2C Interface on my LPC4088 in Monitor Mode and i can see everything that is transmitted on the bus, but i ran into a problem.&amp;nbsp;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;Apparently my Interface interprets all intercepted I2C-Packets (so everything between Start and Stop Condition) as Writing-Operations (aka Slave-Receiver Operation).&amp;nbsp;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;Meaning the State changes of the Interface (content of I2C_STAT register) look like:&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;0x60 -&amp;gt;&amp;nbsp;0x&lt;SPAN style="border: 0px; font-weight: inherit;"&gt;80 -&amp;gt; 0x&lt;/SPAN&gt;&lt;SPAN style="border: 0px; font-weight: inherit;"&gt;80 -&amp;gt; ... -&amp;gt; 0xA0&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&lt;SPAN style="border: 0px; font-weight: inherit;"&gt;where the states indicate the following:&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&lt;SPAN style="border: 0px; font-weight: inherit;"&gt;0x60: Own Slave Address + Write Bit received, ACK received&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&lt;SPAN style="border: 0px; font-weight: inherit;"&gt;0x80:&amp;nbsp;Addressed with own&amp;nbsp;Slave Address, Data received, ACK returned&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&lt;SPAN style="border: 0px; font-weight: inherit;"&gt;0xA0:&amp;nbsp;Stop or Repeated Start received&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&lt;SPAN style="border: 0px; font-weight: inherit;"&gt;However they should also be State changes like (to indicate Slave-Transmitter Operations):&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&lt;SPAN style="border: 0px; font-weight: inherit;"&gt;0xA8 -&amp;gt; &lt;SPAN style="border: 0px; font-weight: inherit;"&gt;0xB8 -&amp;gt;&amp;nbsp;&lt;/SPAN&gt;0xB8 -&amp;gt; ... -&amp;gt; 0xC8 -&amp;gt; 0xA0&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&lt;SPAN style="border: 0px; font-weight: inherit;"&gt;where the states indicate the following:&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&lt;SPAN style="border: 0px; font-weight: inherit;"&gt;0xA8:&amp;nbsp;Own Slave Address + Read Bit has been received; ACK has been returned&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&lt;SPAN style="border: 0px; font-weight: inherit;"&gt;0xB8:&amp;nbsp;Data byte in I2DAT has been transmitted; ACK has been received&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&lt;SPAN style="border: 0px; font-weight: inherit;"&gt;0xC8: Last data byte has been transmitted, ACK has been received&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&lt;SPAN style="border: 0px; font-weight: inherit;"&gt;I verified the measured protocol&amp;nbsp;with an Logic Analyzer and the Results indicate that the R/W-Bit was indeed transmitted correctly.&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&lt;SPAN style="border: 0px; font-weight: inherit;"&gt;I checked the 7-bit address + R/W-bit which is transmitted in the first byte after the start condition and the address is always correct but the R/W-bit is always '0' (but at the same time '1', when measured with the logic analyser&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&lt;SPAN style="border: 0px; font-weight: inherit;"&gt;Here is the code i used to configure the I2C interface:&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&lt;SPAN style="border: 0px; font-weight: inherit;"&gt;LPC_I2Cx(id)-&amp;gt;ADR0 = (I2C_SLAVE_ADDR &amp;lt;&amp;lt; 1); //Set own device address&lt;BR /&gt;LPC_I2Cx(id)-&amp;gt;MASK[0] = (I2C_SLAVE_MSK &amp;lt;&amp;lt; 1); //Set address mask&lt;BR /&gt;LPC_I2Cx(id)-&amp;gt;MMCTRL |= I2C_I2MMCTRL_MM_ENA; //Enable I2C Monitor Mode&lt;BR /&gt;LPC_I2Cx(id)-&amp;gt;CONSET = I2C_CON_I2EN | I2C_CON_AA;&lt;BR /&gt;LPC_I2Cx(id)-&amp;gt;CONCLR = I2C_CON_STA | I2C_CON_STO | I2C_CON_SI; //Enable I2C Interface&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&amp;nbsp;&lt;BR /&gt;I also tried different I2C-Interfaces, but the result was the same.&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;BOTTOM LINE:&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&lt;SPAN style="border: 0px; font-weight: inherit;"&gt;What causes this behavior?&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&lt;SPAN style="border: 0px; font-weight: inherit;"&gt;Is it the I2C Interface itself interpreting the R/W Bit as&amp;nbsp;a '0' because its always "reading" from the Bus?&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&lt;SPAN style="border: 0px; font-weight: inherit;"&gt;If YES, is there a way to bypass this Issue?&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&lt;SPAN style="border: 0px; font-weight: inherit;"&gt;If NO, did I configure something wrong?&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&lt;SPAN style="border: 0px; font-weight: inherit;"&gt;(Feedback/Suggestions/Experiences are much appreciated&amp;nbsp;;-) )&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&lt;SPAN style="border: 0px; font-weight: inherit;"&gt;BR,&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&lt;SPAN style="border: 0px; font-weight: inherit;"&gt;Alexander&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 03 Feb 2017 06:42:52 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/Monitor-Mode-on-I2C-Interface-LPC4088/m-p/598028#M23131</guid>
      <dc:creator>alexanderplanit</dc:creator>
      <dc:date>2017-02-03T06:42:52Z</dc:date>
    </item>
    <item>
      <title>Re: Monitor Mode on I2C Interface, LPC4088</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/Monitor-Mode-on-I2C-Interface-LPC4088/m-p/598029#M23132</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Alexander,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I have a few questions, is only R/W bit got wrong and all other bits (e.g. the sequent data bits) are right? Does this issue always or occasionally occur at the same test condition? How about if only not use monitor mode?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks in advance!&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Best Regards,&lt;BR /&gt;Carlos Mendoza&lt;BR /&gt;Technical Support Engineer&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 21 Feb 2017 17:31:44 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/Monitor-Mode-on-I2C-Interface-LPC4088/m-p/598029#M23132</guid>
      <dc:creator>Carlos_Mendoza</dc:creator>
      <dc:date>2017-02-21T17:31:44Z</dc:date>
    </item>
  </channel>
</rss>

