<?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>Kinetis MicrocontrollersのトピックRe: KL25Z i2c issue</title>
    <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/KL25Z-i2c-issue/m-p/273691#M9526</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello,&lt;/P&gt;&lt;P&gt;If you need to add some magic delays to your code to 'fix' it, then this is typically a reentrancy (or stack) problem in your code, because you change the timing.&lt;/P&gt;&lt;P&gt;But it could be that your problem is a defect in the silicon. Can you check that your clock prescaler for the I2C is set to one (and not to something else)?&lt;/P&gt;&lt;P&gt;See&lt;/P&gt;&lt;P&gt;&lt;A href="http://mcuoneclipse.com/2012/12/05/kl25z-and-i2c-missing-repeated-start-condition/" title="http://mcuoneclipse.com/2012/12/05/kl25z-and-i2c-missing-repeated-start-condition/"&gt;KL25Z and I2C: Missing Repeated Start Condition | MCU on Eclipse&lt;/A&gt;&lt;/P&gt;&lt;P&gt;and errata here:&lt;/P&gt;&lt;P&gt;&lt;A href="http://cache.freescale.com/files/microcontrollers/doc/errata/KINETIS_L_1N97F.pdf?fpsp=1&amp;amp;WT_TYPE=Errata&amp;amp;WT_VENDOR=FREESCALE&amp;amp;WT_FILE_FORMAT=pdf&amp;amp;WT_ASSET=Documentation" title="http://cache.freescale.com/files/microcontrollers/doc/errata/KINETIS_L_1N97F.pdf?fpsp=1&amp;amp;WT_TYPE=Errata&amp;amp;WT_VENDOR=FREESCALE&amp;amp;WT_FILE_FORMAT=pdf&amp;amp;WT_ASSET=Documentation"&gt;http://cache.freescale.com/files/microcontrollers/doc/errata/KINETIS_L_1N97F.pdf?fpsp=1&amp;amp;WT_TYPE=Errata&amp;amp;WT_VENDOR=FREESCA…&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;At least with the prescaler set to one, all my application on the KL25Z with I2C are working properly.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Hope this helps.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Sun, 25 Aug 2013 08:57:22 GMT</pubDate>
    <dc:creator>BlackNight</dc:creator>
    <dc:date>2013-08-25T08:57:22Z</dc:date>
    <item>
      <title>KL25Z i2c issue</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/KL25Z-i2c-issue/m-p/273690#M9525</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello everyone I have some strange issue with i2c on KL25Z freedom board. I'm using CW with processor expert and using bean I2C_LDD. The problem is that when I want to send several blocks of data on the bus I have to use some delay after sending each block - otherwise I will get ERR_BUSY error and some of blocks will not appear on the bus. See the code of my function:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;void MyI2C_SendBlock(uint8_t devAddr, uint8_t *dataBlock, uint8_t dataSize)&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; uint8_t res;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //selecting slave&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; I2C_SelectSlaveDevice(I2C_DeviceData, LDD_I2C_ADDRTYPE_7BITS, devAddr);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //sending data&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; res = I2C_MasterSendBlock(I2C_DeviceData, dataBlock, dataSize, LDD_I2C_SEND_STOP);/*&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //wait until data sent&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; while (!MyI2C_DataState.dataTransmittedFlag);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MyI2C_DataState.dataTransmittedFlag = 0;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //THIS STRANGE DELAY&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; int i;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; for(i = 0; i &amp;lt; 100; ++i);&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;How to omit using delay?&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 24 Aug 2013 20:57:26 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/KL25Z-i2c-issue/m-p/273690#M9525</guid>
      <dc:creator>szymonlagosz</dc:creator>
      <dc:date>2013-08-24T20:57:26Z</dc:date>
    </item>
    <item>
      <title>Re: KL25Z i2c issue</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/KL25Z-i2c-issue/m-p/273691#M9526</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello,&lt;/P&gt;&lt;P&gt;If you need to add some magic delays to your code to 'fix' it, then this is typically a reentrancy (or stack) problem in your code, because you change the timing.&lt;/P&gt;&lt;P&gt;But it could be that your problem is a defect in the silicon. Can you check that your clock prescaler for the I2C is set to one (and not to something else)?&lt;/P&gt;&lt;P&gt;See&lt;/P&gt;&lt;P&gt;&lt;A href="http://mcuoneclipse.com/2012/12/05/kl25z-and-i2c-missing-repeated-start-condition/" title="http://mcuoneclipse.com/2012/12/05/kl25z-and-i2c-missing-repeated-start-condition/"&gt;KL25Z and I2C: Missing Repeated Start Condition | MCU on Eclipse&lt;/A&gt;&lt;/P&gt;&lt;P&gt;and errata here:&lt;/P&gt;&lt;P&gt;&lt;A href="http://cache.freescale.com/files/microcontrollers/doc/errata/KINETIS_L_1N97F.pdf?fpsp=1&amp;amp;WT_TYPE=Errata&amp;amp;WT_VENDOR=FREESCALE&amp;amp;WT_FILE_FORMAT=pdf&amp;amp;WT_ASSET=Documentation" title="http://cache.freescale.com/files/microcontrollers/doc/errata/KINETIS_L_1N97F.pdf?fpsp=1&amp;amp;WT_TYPE=Errata&amp;amp;WT_VENDOR=FREESCALE&amp;amp;WT_FILE_FORMAT=pdf&amp;amp;WT_ASSET=Documentation"&gt;http://cache.freescale.com/files/microcontrollers/doc/errata/KINETIS_L_1N97F.pdf?fpsp=1&amp;amp;WT_TYPE=Errata&amp;amp;WT_VENDOR=FREESCA…&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;At least with the prescaler set to one, all my application on the KL25Z with I2C are working properly.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Hope this helps.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 25 Aug 2013 08:57:22 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/KL25Z-i2c-issue/m-p/273691#M9526</guid>
      <dc:creator>BlackNight</dc:creator>
      <dc:date>2013-08-25T08:57:22Z</dc:date>
    </item>
    <item>
      <title>Re: KL25Z i2c issue</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/KL25Z-i2c-issue/m-p/273692#M9527</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;(Un)fortunately I've already read this article and prescaler is set to one. What's more the whole program is very simply it uses only i2c, so it can't be problem with reentrancy (no other interrupts apart from these from i2c). &lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 25 Aug 2013 12:20:26 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/KL25Z-i2c-issue/m-p/273692#M9527</guid>
      <dc:creator>szymonlagosz</dc:creator>
      <dc:date>2013-08-25T12:20:26Z</dc:date>
    </item>
    <item>
      <title>Re: Re: KL25Z i2c issue</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/KL25Z-i2c-issue/m-p/273693#M9528</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;It looks like this is waiting for the bus idle state.&lt;/P&gt;&lt;P&gt;Code from AN4610:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE __default_attr="c++" __jive_macro_name="code" class="jive_text_macro _jivemacro_uid_13868235329475236 jive_macro_code" jivemacro_uid="_13868235329475236" modifiedtitle="true"&gt;
&lt;P&gt;bool WriteAccRegs(LDD_TDeviceData *I2CPtr, TDataState *DataState, uint8_t Address, uint8_t RegCount, uint8_t *Data)&lt;/P&gt;
&lt;P&gt;{&lt;/P&gt;
&lt;P&gt;&amp;nbsp; LDD_I2C_TBusState BusState;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; const uint8_t MAX_REG_COUNT = 16;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; uint8_t SendBuffer[MAX_REG_COUNT];&lt;/P&gt;
&lt;P&gt;&amp;nbsp; SendBuffer[0] = Address;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; memcpy(&amp;amp;SendBuffer[1], Data, RegCount);&lt;/P&gt;
&lt;P&gt;&amp;nbsp; DataState-&amp;gt;Sent = FALSE;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; I2C_MasterSendBlock(I2CPtr, &amp;amp;SendBuffer, RegCount + 1, LDD_I2C_SEND_STOP);&lt;/P&gt;
&lt;P&gt;&amp;nbsp; while (!DataState-&amp;gt;Sent) {}&lt;/P&gt;
&lt;P&gt;&amp;nbsp; do {I2C_CheckBus(I2CPtr, &amp;amp;BusState);}&lt;/P&gt;
&lt;P&gt;&amp;nbsp; while(BusState != LDD_I2C_IDLE);&lt;/P&gt;
&lt;P&gt;&amp;nbsp; if (!DataState-&amp;gt;Sent) {&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return FALSE;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; }&lt;/P&gt;
&lt;P&gt;&amp;nbsp; return TRUE;&lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;
&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Erich&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 12 Dec 2013 04:46:37 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/KL25Z-i2c-issue/m-p/273693#M9528</guid>
      <dc:creator>BlackNight</dc:creator>
      <dc:date>2013-12-12T04:46:37Z</dc:date>
    </item>
  </channel>
</rss>

