<?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: Kinetis K10: Reset the I2C module</title>
    <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/Kinetis-K10-Reset-the-I2C-module/m-p/273601#M9516</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Dilebo:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;What do you mean exactly with &lt;STRONG&gt;busy&lt;/STRONG&gt;?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Do you mean the status bit I2Cx_S[BUSY] stays at 1? or that the SCL line is held low?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;These are different situations. In the first case if your K10 is the master, then the code you posted should take you out of the busy state once you call i2c_stop(). In the second case, if some of the slaves holds the line, then this is a hardware problem. Or it could be a combination of both, your K10 master trying to send stop signal and the slave holding down either of SDA or SCL bus lines.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Sorry If I did not understand well your situation.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards!&lt;/P&gt;&lt;P&gt;Jorge Gonzalez&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 05 Mar 2014 03:23:09 GMT</pubDate>
    <dc:creator>Jorge_Gonzalez</dc:creator>
    <dc:date>2014-03-05T03:23:09Z</dc:date>
    <item>
      <title>Kinetis K10: Reset the I2C module</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/Kinetis-K10-Reset-the-I2C-module/m-p/273600#M9515</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello, &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I have an issue with the I2C module.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Context:&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;µC K10 is the Master, linked to only one slave.&lt;/P&gt;&lt;P&gt;I configured the Power Management Controller to reset on a Low Voltage Detect (PMC_LVDSC1[LVDRE]).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;This is what happens:&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;When the tension rises slowly, the µC boots, then the I2C communication starts but it is stopped by the hardware reset (due to the Low Voltage Detect).&lt;/P&gt;&lt;P&gt;Then, when the tension is high enough, the I2C is locked in a busy mode.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class="lia-inline-image-display-wrapper" image-alt="Untitled drawing.png"&gt;&lt;IMG alt="Untitled drawing.png" src="https://community.nxp.com/t5/image/serverpage/image-id/42960iA6937485628CD0CD/image-size/large?v=v2&amp;amp;px=999" title="Untitled drawing.png" /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Tested solutions:&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;I tested the SoftReset function from the BareMetal Drivers.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE __default_attr="c++" __jive_macro_name="code" class="jive_text_macro jive_macro_code _jivemacro_uid_13939224838472588" jivemacro_uid="_13939224838472588"&gt;
&lt;P&gt;/*&amp;nbsp; Do a Soft Reset of EEPROM (necessary if EEPROM had been left in the midlle of one transaction)&lt;/P&gt;
&lt;P&gt; * @param none&lt;/P&gt;
&lt;P&gt; * @return none&lt;/P&gt;
&lt;P&gt;*/&lt;/P&gt;
&lt;P&gt;void EEP_I2C0_SoftReset(void)&lt;/P&gt;
&lt;P&gt;{&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; if ((I2C0_S &amp;amp; I2C_S_BUSY_MASK) != 0) {&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; i2c_Stop(I2C0);&lt;/P&gt;
&lt;P&gt;&amp;nbsp; }&lt;/P&gt;
&lt;P&gt;&amp;nbsp; I2C0_S |= I2C_S_IICIF_MASK;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Clear remaining flags&lt;/P&gt;
&lt;P&gt;&amp;nbsp; I2C0_S |= I2C_S_ARBL_MASK;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; /* send start signal */&lt;/P&gt;
&lt;P&gt;&amp;nbsp; i2c_Start(I2C0);&lt;/P&gt;
&lt;P&gt;&amp;nbsp; Pause();&lt;/P&gt;
&lt;P&gt;&amp;nbsp; /* send ID with W/R bit */&lt;/P&gt;
&lt;P&gt;&amp;nbsp; i2c_write_byte(I2C0, 0xFF);&lt;/P&gt;
&lt;P&gt;&amp;nbsp; i2c_Wait_interrupt(I2C0);&lt;/P&gt;
&lt;P&gt;&amp;nbsp; Pause();&lt;/P&gt;
&lt;P&gt;&amp;nbsp; /* Do a repeated start */&lt;/P&gt;
&lt;P&gt;&amp;nbsp; i2c_Start(I2C0);&lt;/P&gt;
&lt;P&gt;&amp;nbsp; Pause();&lt;/P&gt;
&lt;P&gt;&amp;nbsp; /* Send stop */&lt;/P&gt;
&lt;P&gt;&amp;nbsp; i2c_Stop(I2C0);&lt;/P&gt;
&lt;P&gt;&amp;nbsp; i2c_busy(I2C0); // wait for bus to be "free"&lt;/P&gt;
&lt;P&gt;&amp;nbsp; I2C0_S |= I2C_S_IICIF_MASK;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Clear remaining flags&lt;/P&gt;
&lt;P&gt;&amp;nbsp; I2C0_S |= I2C_S_ARBL_MASK;&lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;
&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I tested the solution from Yuri Muhin: &lt;A href="https://community.nxp.com/message/369482" rel="noopener noreferrer" target="_blank"&gt;Re: I2C reset&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Any help would be welcome.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 02 Nov 2020 13:05:17 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/Kinetis-K10-Reset-the-I2C-module/m-p/273600#M9515</guid>
      <dc:creator>Dilebo</dc:creator>
      <dc:date>2020-11-02T13:05:17Z</dc:date>
    </item>
    <item>
      <title>Re: Kinetis K10: Reset the I2C module</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/Kinetis-K10-Reset-the-I2C-module/m-p/273601#M9516</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Dilebo:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;What do you mean exactly with &lt;STRONG&gt;busy&lt;/STRONG&gt;?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Do you mean the status bit I2Cx_S[BUSY] stays at 1? or that the SCL line is held low?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;These are different situations. In the first case if your K10 is the master, then the code you posted should take you out of the busy state once you call i2c_stop(). In the second case, if some of the slaves holds the line, then this is a hardware problem. Or it could be a combination of both, your K10 master trying to send stop signal and the slave holding down either of SDA or SCL bus lines.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Sorry If I did not understand well your situation.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards!&lt;/P&gt;&lt;P&gt;Jorge Gonzalez&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 05 Mar 2014 03:23:09 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/Kinetis-K10-Reset-the-I2C-module/m-p/273601#M9516</guid>
      <dc:creator>Jorge_Gonzalez</dc:creator>
      <dc:date>2014-03-05T03:23:09Z</dc:date>
    </item>
    <item>
      <title>Re: Re: Kinetis K10: Reset the I2C module</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/Kinetis-K10-Reset-the-I2C-module/m-p/273602#M9517</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello &lt;SPAN style="color: #3d3d3d; font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif;"&gt;Jorge Gonzalez&lt;/SPAN&gt;,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thank you for your answer.&lt;/P&gt;&lt;P&gt;Yes I was talking about the&lt;SPAN style="color: #3d3d3d; font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif;"&gt; I2Cx_S[BUSY]&lt;/SPAN&gt; bit.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I mixed the two solutions from my first post and came up with the following :&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE __default_attr="c++" __jive_macro_name="code" class="jive_text_macro jive_macro_code _jivemacro_uid_13940336230392669" jivemacro_uid="_13940336230392669"&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (I2C_IS_BUSY(base))&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /*Bus already busy =&amp;gt; cancel previous operation*/&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; /* send start signal */&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; I2C_C1_REG(base) &amp;amp;= ~I2C_C1_IICEN_MASK;&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; I2C_C1_REG(base) |= I2C_C1_TX_MASK;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Set transmit (TX) mode */&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; I2C_C1_REG(base) |= I2C_C1_MST_MASK;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* START signal generated */&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; I2C_C1_REG(base) |= I2C_C1_IICEN_MASK;&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; /* send write command to release SDA line*/&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; I2C_C1_REG(base) |= I2C_C1_MST_MASK;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* set MASTER mode */&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; I2C_C1_REG(base) |= I2C_C1_TX_MASK;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Set transmit (TX) mode */&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; I2C_D_REG(base) = 0xFF;&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; while ((I2C_S_REG(base) &amp;amp; I2C_S_IICIF_MASK) == 0U) {}&amp;nbsp; /* wait interrupt&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; I2C_S_REG(base) |= I2C_S_IICIF_MASK;&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; /* clear interrupt bit&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Clear arbitration error flag*/&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; I2C_S_REG(base) |= I2C_S_ARBL_MASK;&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; /* Send start */&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; I2C_C1_REG(base) &amp;amp;= ~I2C_C1_IICEN_MASK;&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; I2C_C1_REG(base) |= I2C_C1_TX_MASK;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Set transmit (TX) mode */&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; I2C_C1_REG(base) |= I2C_C1_MST_MASK;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* START signal generated */&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; I2C_C1_REG(base) |= I2C_C1_IICEN_MASK;&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; /*Wait until start is send*/&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; Pause();&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; /* Send stop */&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; I2C_C1_REG(base) &amp;amp;= ~I2C_C1_IICEN_MASK;&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; I2C_C1_REG(base) |= I2C_C1_MST_MASK;&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; I2C_C1_REG(base) &amp;amp;= ~I2C_C1_MST_MASK;&amp;nbsp; /* set SLAVE mode */&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; I2C_C1_REG(base) &amp;amp;= ~I2C_C1_TX_MASK;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Set Rx */&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; I2C_C1_REG(base) |= I2C_C1_IICEN_MASK;&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; while (I2C_IS_BUSY(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; {&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; /* wait */&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; }&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; /* Clear arbitration error &amp;amp; interrupt flag*/&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; I2C_S_REG(base) |= I2C_S_IICIF_MASK;&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; I2C_S_REG(base) |= I2C_S_ARBL_MASK;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;
&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;This is working.&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;And if it can help anyone, I found this application note : &lt;A href="http://cache.freescale.com/files/microcontrollers/doc/app_note/AN4803.pdf?fpsp=1&amp;amp;WT_TYPE=Application%20Notes&amp;amp;WT_VENDOR=FREESCALE&amp;amp;WT_FILE_FORMAT=pdf&amp;amp;WT_ASSET=Documentation" rel="nofollow noopener noreferrer" title="http://cache.freescale.com/files/microcontrollers/doc/app_note/AN4803.pdf?fpsp=1&amp;amp;WT_TYPE=Application%20Notes&amp;amp;WT_VENDOR=FREESCALE&amp;amp;WT_FILE_FORMAT=pdf&amp;amp;WT_ASSET=Documentation" target="_blank"&gt;http://cache.freescale.com/files/microcontrollers/doc/app_note/AN4803.pdf?fpsp=1&amp;amp;WT_TYPE=Application%20Notes&amp;amp;WT_VENDOR=F…&lt;/A&gt;&lt;/P&gt;&lt;P&gt;With a &lt;SPAN style="font-family: 'courier new', courier;"&gt;tI2C_fault I2C_Restore(void)&lt;/SPAN&gt;&amp;nbsp; function. But I didn't try it.&lt;/P&gt;&lt;P&gt;It is roughly the same thing as my solution, but driving the signals SCL/SDA in GPIO mode.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 05 Mar 2014 15:39:08 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/Kinetis-K10-Reset-the-I2C-module/m-p/273602#M9517</guid>
      <dc:creator>Dilebo</dc:creator>
      <dc:date>2014-03-05T15:39:08Z</dc:date>
    </item>
  </channel>
</rss>

