<?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のトピックLPC4357 I2C Problems when APB is clock via IRC</title>
    <link>https://community.nxp.com/t5/LPC-Microcontrollers/LPC4357-I2C-Problems-when-APB-is-clock-via-IRC/m-p/632513#M24928</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I´m using the I2C driver for LPC4357 provided by Keil until now without any problems until now. &lt;BR /&gt;The driver re-configures the APB clock source to use PLL1 when the peripheral is enabled:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE class="language-c line-numbers"&gt;&lt;CODE&gt; &lt;SPAN class="comment token"&gt;/* Connect base clock */&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="operator token"&gt;*&lt;/SPAN&gt;i2c&lt;SPAN class="operator token"&gt;-&amp;gt;&lt;/SPAN&gt;base_clk_reg &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;1&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="operator token"&gt;&amp;lt;&amp;lt;&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;11&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;|&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="comment token"&gt;/* Autoblock En&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; */&lt;/SPAN&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; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;0x09&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;&amp;lt;&amp;lt;&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;24&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="comment token"&gt;/* PLL1 is APB&amp;nbsp; clock source&amp;nbsp; */&lt;/SPAN&gt;&lt;SPAN class="line-numbers-rows"&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;However, for my current project I need to clock both APB1 and APB3 from the internal IRC oscillator&lt;/P&gt;&lt;P&gt;running at 12 MHz. When I change the driver to use IRC for APB:&lt;/P&gt;&lt;PRE class="language-c line-numbers"&gt;&lt;CODE&gt; &lt;SPAN class="comment token"&gt;/* Connect base clock */&lt;/SPAN&gt;
 &lt;SPAN class="operator token"&gt;*&lt;/SPAN&gt;i2c&lt;SPAN class="operator token"&gt;-&amp;gt;&lt;/SPAN&gt;base_clk_reg &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;1&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="operator token"&gt;&amp;lt;&amp;lt;&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;11&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;|&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="comment token"&gt;/* Autoblock En&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; */&lt;/SPAN&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; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;0x01&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;&amp;lt;&amp;lt;&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;24&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="comment token"&gt;/* IRC is APB&amp;nbsp; clock source&amp;nbsp; */&lt;/SPAN&gt;&lt;SPAN class="line-numbers-rows"&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;the I2C data register seems to be frozen at 0x00. The signals at SDA/SCL are still OK, it seems sending is still working as expected and after each transfer a "NACK" status is set, only the receiver seems to be dead.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;When I comment out the above code completly to use the previous APB clock settings (which are IRC + Autoblock=Enabled) the behaviour is exactly the same.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;When the APB clock source is changed to use one of the IDIVx integer dividers I2C seems to work for higher input frequencies above approx. 40 MHz. Below that the data register seems to receive random values and below ~25 MHz the register freezes to 0x00.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The M4 core is clocked via XTAL/PLL1 running at 204MHz, M0 core is not in use. Also, I do not use any power saving modes or dynamic clock changes. The i2c problems do not depend on SCL frequency, I tried 10kHz, 100kHz and 400kHz with exactly the same results.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Neither the datasheet nor the LPC4357 errata mention some issues related to low I2C peripheral clocks.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;-&amp;gt; Is there any (not yet documented) constraint about the I2C peripheral clock I missed?&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;&lt;P&gt;-&amp;gt; Has anybody else experienced problems with I2C on LPC4357 when clocking APB via IRC?&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Thu, 13 Oct 2016 09:49:52 GMT</pubDate>
    <dc:creator>ronny_friedrich</dc:creator>
    <dc:date>2016-10-13T09:49:52Z</dc:date>
    <item>
      <title>LPC4357 I2C Problems when APB is clock via IRC</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/LPC4357-I2C-Problems-when-APB-is-clock-via-IRC/m-p/632513#M24928</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I´m using the I2C driver for LPC4357 provided by Keil until now without any problems until now. &lt;BR /&gt;The driver re-configures the APB clock source to use PLL1 when the peripheral is enabled:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE class="language-c line-numbers"&gt;&lt;CODE&gt; &lt;SPAN class="comment token"&gt;/* Connect base clock */&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="operator token"&gt;*&lt;/SPAN&gt;i2c&lt;SPAN class="operator token"&gt;-&amp;gt;&lt;/SPAN&gt;base_clk_reg &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;1&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="operator token"&gt;&amp;lt;&amp;lt;&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;11&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;|&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="comment token"&gt;/* Autoblock En&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; */&lt;/SPAN&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; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;0x09&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;&amp;lt;&amp;lt;&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;24&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="comment token"&gt;/* PLL1 is APB&amp;nbsp; clock source&amp;nbsp; */&lt;/SPAN&gt;&lt;SPAN class="line-numbers-rows"&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;However, for my current project I need to clock both APB1 and APB3 from the internal IRC oscillator&lt;/P&gt;&lt;P&gt;running at 12 MHz. When I change the driver to use IRC for APB:&lt;/P&gt;&lt;PRE class="language-c line-numbers"&gt;&lt;CODE&gt; &lt;SPAN class="comment token"&gt;/* Connect base clock */&lt;/SPAN&gt;
 &lt;SPAN class="operator token"&gt;*&lt;/SPAN&gt;i2c&lt;SPAN class="operator token"&gt;-&amp;gt;&lt;/SPAN&gt;base_clk_reg &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;1&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="operator token"&gt;&amp;lt;&amp;lt;&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;11&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;|&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="comment token"&gt;/* Autoblock En&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; */&lt;/SPAN&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; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;0x01&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;&amp;lt;&amp;lt;&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;24&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="comment token"&gt;/* IRC is APB&amp;nbsp; clock source&amp;nbsp; */&lt;/SPAN&gt;&lt;SPAN class="line-numbers-rows"&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;the I2C data register seems to be frozen at 0x00. The signals at SDA/SCL are still OK, it seems sending is still working as expected and after each transfer a "NACK" status is set, only the receiver seems to be dead.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;When I comment out the above code completly to use the previous APB clock settings (which are IRC + Autoblock=Enabled) the behaviour is exactly the same.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;When the APB clock source is changed to use one of the IDIVx integer dividers I2C seems to work for higher input frequencies above approx. 40 MHz. Below that the data register seems to receive random values and below ~25 MHz the register freezes to 0x00.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The M4 core is clocked via XTAL/PLL1 running at 204MHz, M0 core is not in use. Also, I do not use any power saving modes or dynamic clock changes. The i2c problems do not depend on SCL frequency, I tried 10kHz, 100kHz and 400kHz with exactly the same results.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Neither the datasheet nor the LPC4357 errata mention some issues related to low I2C peripheral clocks.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;-&amp;gt; Is there any (not yet documented) constraint about the I2C peripheral clock I missed?&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;&lt;P&gt;-&amp;gt; Has anybody else experienced problems with I2C on LPC4357 when clocking APB via IRC?&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 13 Oct 2016 09:49:52 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/LPC4357-I2C-Problems-when-APB-is-clock-via-IRC/m-p/632513#M24928</guid>
      <dc:creator>ronny_friedrich</dc:creator>
      <dc:date>2016-10-13T09:49:52Z</dc:date>
    </item>
    <item>
      <title>Re: LPC4357 I2C Problems when APB is clock via IRC</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/LPC4357-I2C-Problems-when-APB-is-clock-via-IRC/m-p/632514#M24929</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello Rony,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Have you tried to use LPCOpen example to valide this issue? I've test the I2C example for LPC4367 and select IRC as input source for BASE_APB3_CLK (10) and then use I2C1 to send data to Port expander (PCA9532) IC.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;It ran without problems when I used I2C1 on polling mode. Could you please try by using LPCOpen example and/or also tell me if there is another special setting besides using IRC to feed BASE_APB3_CLK?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Isaac&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 10 Nov 2016 23:44:05 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/LPC4357-I2C-Problems-when-APB-is-clock-via-IRC/m-p/632514#M24929</guid>
      <dc:creator>isaacavila</dc:creator>
      <dc:date>2016-11-10T23:44:05Z</dc:date>
    </item>
    <item>
      <title>Re: LPC4357 I2C Problems when APB is clock via IRC</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/LPC4357-I2C-Problems-when-APB-is-clock-via-IRC/m-p/632515#M24930</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello Isaac,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;thanks for your reply.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I experienced the problems when using I2C0. I did not try I2C1 with the slow clock since I will need to use all available interfaces later, including I2C0s high speed&amp;nbsp;capabilities.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Maybe there is something special with I2C0 since it is the only interface supporting higher SCL clock rates.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;However, the code did work perfectly with higher APB clock rates. As soon APB is driven by 12 MHz IRC the register is stuck at zero. Same happens when PLL1 clock is divided &amp;nbsp;down to 12 MHz or slightly above. Once the APB is driven with ~40-50MHz everything works as expected.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 11 Nov 2016 11:57:54 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/LPC4357-I2C-Problems-when-APB-is-clock-via-IRC/m-p/632515#M24930</guid>
      <dc:creator>ronny_friedrich</dc:creator>
      <dc:date>2016-11-11T11:57:54Z</dc:date>
    </item>
  </channel>
</rss>

