<?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 Software Development KitのトピックRe: K22 I2C Arbitration Lost</title>
    <link>https://community.nxp.com/t5/Kinetis-Software-Development-Kit/K22-I2C-Arbitration-Lost/m-p/480079#M4100</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Jorge,&lt;/P&gt;&lt;P&gt;Thanks for your quick response, that did the trick!&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 24 Feb 2016 16:57:22 GMT</pubDate>
    <dc:creator>mikelitster</dc:creator>
    <dc:date>2016-02-24T16:57:22Z</dc:date>
    <item>
      <title>K22 I2C Arbitration Lost</title>
      <link>https://community.nxp.com/t5/Kinetis-Software-Development-Kit/K22-I2C-Arbitration-Lost/m-p/480077#M4098</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;&lt;SPAN style="font-family: arial, helvetica, sans-serif; font-size: 10pt; color: #303030;"&gt;Problem: I am using the K22, a MK22FN512VLH12 processor with KSDK 1.3. I found that after leaving the code running for 15 minutes or so, frequently polling an accelerometer on the I2C bus, the code fails the assert at the beginning of the I2C_HAL_SendStop function. Further investigation led me to see that in I2C_DRV_MasterIRQHandler, we are taking the "if (wasArbLost)" condition, indicating that I2C bus arbitration was lost. &lt;SPAN style="color: #303030; font-family: arial, helvetica, sans-serif; font-size: 13.3333px;"&gt; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #303030; font-size: 13.3333px; font-family: arial, helvetica, sans-serif;"&gt;The K22 is releasing the lines before the stop, as shown in the bottom trace in the picture. The top trace is a correct transfer.&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #303030; font-size: 13.3333px; font-family: arial, helvetica, sans-serif;"&gt;&lt;span class="lia-inline-image-display-wrapper" image-alt="141536_141536.png"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/121101i7616F729C075A61A/image-size/large?v=v2&amp;amp;px=999" role="button" title="141536_141536.png" alt="141536_141536.png" /&gt;&lt;/span&gt;&lt;span class="lia-inline-image-display-wrapper" image-alt="I2c trace.png"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/53619iAB24FBEADE9B9F84/image-size/large?v=v2&amp;amp;px=999" role="button" title="I2c trace.png" alt="I2c trace.png" /&gt;&lt;/span&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #303030; font-size: 13.3333px; font-family: arial, helvetica, sans-serif;"&gt;I also found that if I continuously call I2C_DRV_MasterReceiveDataBlocking, it will produce this same failure within 2-3 minutes.&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: arial, helvetica, sans-serif; font-size: 10pt; color: #303030;"&gt;Isolate the problem: The K22 is the only master on the bus, so I isolated the bus so that only the K22 and the accelerometer were on the line. The problem continued. I removed the accelerometer and replaced it with a geomagnetic sensor and had the same result. This effectively indicated that the K22 is the cause of the problem.&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: arial, helvetica, sans-serif; font-size: 10pt; color: #303030;"&gt;Putting a 25us delay after every call to I2C_DRV_MasterReceiveDataBlocking causes it to no longer fail the assert in the &lt;SPAN style="color: #303030; font-family: arial, helvetica, sans-serif; font-size: 13.3333px;"&gt;I2C_HAL_SendStop function. It will then return "kStatus_I2C_AribtrationLost" the first time through. On subsequent calls, it will then fail the "if (!master-&amp;gt;i2cIdle)" condition in I2C_DRV_MasterReceive and return "kStatus_I2C_Busy" everytime it is called, effectively disabling the I2C bus. &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #303030; font-family: arial, helvetica, sans-serif; font-size: 10pt;"&gt;Reading the values of the I2C Status Register (I2Cx_S) during the &lt;/SPAN&gt;&lt;SPAN style="color: #303030; font-family: arial, helvetica, sans-serif; font-size: 13.3333px;"&gt;I2C_DRV_MasterIRQHandler function indicates that the BUSY bit is set and doesn't clear. &lt;/SPAN&gt;&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: arial, helvetica, sans-serif; font-size: 10pt; color: #303030;"&gt;When arbitration is lost, what is the proper way to reset the BUSY bit? According to the K22's reference manual, the BUSY bit of the I2C Status Register (I2Cx_S) is cleared when a STOP signal is detected. If I call &lt;SPAN style="color: #303030; font-family: arial, helvetica, sans-serif; font-size: 13.3333px;"&gt;I2C_HAL_SendStop when it returns from &lt;SPAN style="color: #303030; font-family: arial, helvetica, sans-serif; font-size: 13.3333px;"&gt;I2C_DRV_MasterReceiveDataBlocking it will fail the assert. The only effective workaround I have found is to call I2C_DRV_MasterDeinit followed by I2C_DRV_MasterInit whenever I2C_DRV_MasterReceiveDataBlocking returns "&lt;SPAN style="color: #303030; font-family: arial, helvetica, sans-serif; font-size: 13.3333px;"&gt;kStatus_I2C_AribtrationLost." Not a very elegant solution.&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 22 Feb 2016 23:43:00 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Software-Development-Kit/K22-I2C-Arbitration-Lost/m-p/480077#M4098</guid>
      <dc:creator>mikelitster</dc:creator>
      <dc:date>2016-02-22T23:43:00Z</dc:date>
    </item>
    <item>
      <title>Re: K22 I2C Arbitration Lost</title>
      <link>https://community.nxp.com/t5/Kinetis-Software-Development-Kit/K22-I2C-Arbitration-Lost/m-p/480078#M4099</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello Mike Litster:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I tried to reproduce your issue with a &lt;STRONG&gt;FRDM-K22F&lt;/STRONG&gt; by continuously calling &lt;STRONG&gt;I2C_DRV_MasterReceiveDataBlocking()&lt;/STRONG&gt; to receive data from the on-board accelerometer, but I did not get any arbitration lost.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;However I then forced an arbitration lost in the bus by pulling the SDA line low externally and your description of the resulting situation is correct. I think this is an oversight in the I2C driver in KSDK v1.x.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Please try the next workaround to solve your issue:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;1)&lt;/STRONG&gt; From the &lt;STRONG&gt;I2C_DRV_MasterIRQHandler()&lt;/STRONG&gt; set the &lt;STRONG&gt;i2cIdle&lt;/STRONG&gt; flag as &lt;STRONG&gt;true&lt;/STRONG&gt; when arbitration lost is detected, like next:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE __default_attr="c++" __jive_macro_name="code" class="jive_macro_code jive_text_macro _jivemacro_uid_145627853416064" data-renderedposition="321_8_1155_256" jivemacro_uid="_145627853416064"&gt;&lt;P&gt;if (wasArbLost)&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; I2C_HAL_ClearArbitrationLost(base);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; master-&amp;gt;status = kStatus_I2C_AribtrationLost;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Disable I2C interrupt in the peripheral.*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; I2C_HAL_SetIntCmd(base, false);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (master-&amp;gt;isBlocking)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; OSA_SemaPost(&amp;amp;master-&amp;gt;irqSync);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; master-&amp;gt;i2cIdle = true;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return;&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Then rebuild the KSDK platform library.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;2)&lt;/STRONG&gt; To reset the BUSY bit disable and enable the I2C module from your code like next:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE __default_attr="plain" __jive_macro_name="code" class="jive_macro_code jive_text_macro _jivemacro_uid_14562787626029864" data-renderedposition="707.5_8_1155_128" jivemacro_uid="_14562787626029864" modifiedtitle="true"&gt;&lt;P&gt;i2c_result = I2C_DRV_MasterReceiveDataBlocking(BOARD_ACCEL_I2C_INSTANCE, &amp;amp;accDev.slave, &amp;amp;accel_cmd, 1, &amp;amp;accelData, 12, 200);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;if(i2c_result == kStatus_I2C_AribtrationLost)&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; I2C_HAL_Disable(I2C0);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; I2C_HAL_Enable(I2C0);&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;This should reset the BUSY bit to 0.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I hope this helps in your case.&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;Best Regards!&lt;BR /&gt;Jorge Gonzalez&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;-----------------------------------------------------------------------------------------------------------------------&lt;BR /&gt;Note: If this post answers your question, please click the Correct Answer button. Thank you!&lt;BR /&gt;-----------------------------------------------------------------------------------------------------------------------&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 24 Feb 2016 01:55:28 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Software-Development-Kit/K22-I2C-Arbitration-Lost/m-p/480078#M4099</guid>
      <dc:creator>Jorge_Gonzalez</dc:creator>
      <dc:date>2016-02-24T01:55:28Z</dc:date>
    </item>
    <item>
      <title>Re: K22 I2C Arbitration Lost</title>
      <link>https://community.nxp.com/t5/Kinetis-Software-Development-Kit/K22-I2C-Arbitration-Lost/m-p/480079#M4100</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Jorge,&lt;/P&gt;&lt;P&gt;Thanks for your quick response, that did the trick!&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 24 Feb 2016 16:57:22 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Software-Development-Kit/K22-I2C-Arbitration-Lost/m-p/480079#M4100</guid>
      <dc:creator>mikelitster</dc:creator>
      <dc:date>2016-02-24T16:57:22Z</dc:date>
    </item>
    <item>
      <title>Re: K22 I2C Arbitration Lost</title>
      <link>https://community.nxp.com/t5/Kinetis-Software-Development-Kit/K22-I2C-Arbitration-Lost/m-p/480080#M4101</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thanks Jorge.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Any reason why you don't just make this change instead, i.e put the arbitration failure check inside the I2C_DRV_MasterReceive function. This way, if you have multiply i2c ports, you would not need to copy this code in all sections.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;+++ b/MQX_OS/BSP/platform/drivers/src/i2c/fsl_i2c_master_driver.c&lt;/P&gt;&lt;P&gt;@@ -378,6 +378,8 @@ void I2C_DRV_MasterIRQHandler(uint32_t instance)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (wasArbLost)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/P&gt;&lt;P&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; I2C_HAL_ClearArbitrationLost(base);&lt;/P&gt;&lt;P&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; master-&amp;gt;status = kStatus_I2C_AribtrationLost;&lt;/P&gt;&lt;P&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; /* Disable I2C interrupt in the peripheral.*/&lt;/P&gt;&lt;P&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; I2C_HAL_SetIntCmd(base, false);&lt;/P&gt;&lt;P&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; {&lt;/P&gt;&lt;P&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; OSA_SemaPost(&amp;amp;master-&amp;gt;irqSync);&lt;/P&gt;&lt;P&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; }&lt;/P&gt;&lt;P&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; /* Indicate I2C bus is idle. */&lt;/P&gt;&lt;P&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; master-&amp;gt;i2cIdle = true;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&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; return;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;@@ -836,6 +838,12 @@ static i2c_status_t I2C_DRV_MasterReceive(uint32_t instance,&lt;/P&gt;&lt;P&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; /* Indicate I2C bus is idle. */&lt;/P&gt;&lt;P&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; master-&amp;gt;i2cIdle = true;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;+&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* workaround provided by NXP: &lt;/SPAN&gt;&lt;A class="jive-link-thread-small" data-containerid="11234" data-containertype="14" data-objectid="386211" data-objecttype="1" href="https://community.nxp.com/thread/386211"&gt;https://community.nxp.com/thread/386211&lt;/A&gt;&lt;SPAN&gt; */&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;+&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else if (master-&amp;gt;status == kStatus_I2C_AribtrationLost)&lt;/P&gt;&lt;P&gt;+&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/P&gt;&lt;P&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; I2C_HAL_Disable(base);&lt;/P&gt;&lt;P&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; I2C_HAL_Enable(base);&lt;/P&gt;&lt;P&gt;+&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return master-&amp;gt;status;&lt;/P&gt;&lt;P&gt; }&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 23 Jul 2016 02:04:24 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Software-Development-Kit/K22-I2C-Arbitration-Lost/m-p/480080#M4101</guid>
      <dc:creator>abidesmail</dc:creator>
      <dc:date>2016-07-23T02:04:24Z</dc:date>
    </item>
    <item>
      <title>Re: K22 I2C Arbitration Lost</title>
      <link>https://community.nxp.com/t5/Kinetis-Software-Development-Kit/K22-I2C-Arbitration-Lost/m-p/480081#M4102</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi&amp;nbsp; Jorge,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;This solution fixed some of my arbitration issues, but I am still seeing cases where I get an arbitration error. Is there a way to disable arbitration? The MCU I am using is: MK20DX256.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;On my system I have an accelerometer and an RTC on the I2C0, both are slave devices.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;When I get the arbitration error, I see that SDA line is held low.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I have tried to completely disable the i2c0 bus and it doesn't seem to help.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Any debugging ideas? Attached are good and bad cases of the i2c0 register and a plot of the i2c lines.&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper" image-alt="accel_i2c_register.png"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/41136i7D11720B39133C58/image-size/large?v=v2&amp;amp;px=999" role="button" title="accel_i2c_register.png" alt="accel_i2c_register.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;Thanks,&lt;/P&gt;&lt;P&gt;Abid&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 27 Jul 2016 19:26:02 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Software-Development-Kit/K22-I2C-Arbitration-Lost/m-p/480081#M4102</guid>
      <dc:creator>abidbodal</dc:creator>
      <dc:date>2016-07-27T19:26:02Z</dc:date>
    </item>
    <item>
      <title>Re: K22 I2C Arbitration Lost</title>
      <link>https://community.nxp.com/t5/Kinetis-Software-Development-Kit/K22-I2C-Arbitration-Lost/m-p/480082#M4103</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;First off I would like to say this thread was very helpful. The workarounds provided were exactly what we needed.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Mike did you ever figure out what was causing the lost arbitration in the first place?&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 07 Jan 2019 17:22:15 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Software-Development-Kit/K22-I2C-Arbitration-Lost/m-p/480082#M4103</guid>
      <dc:creator>adarrow</dc:creator>
      <dc:date>2019-01-07T17:22:15Z</dc:date>
    </item>
  </channel>
</rss>

