<?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>topic Re: Problems with I2C on MCF5208 in ColdFire/68K Microcontrollers and Processors</title>
    <link>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/Problems-with-I2C-on-MCF5208/m-p/183769#M7610</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Can you check if the SCL line is being held low?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Fri, 27 Jul 2012 20:47:00 GMT</pubDate>
    <dc:creator>JimDon</dc:creator>
    <dc:date>2012-07-27T20:47:00Z</dc:date>
    <item>
      <title>Problems with I2C on MCF5208</title>
      <link>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/Problems-with-I2C-on-MCF5208/m-p/183768#M7609</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;We are using MCF5208 processor and I2C is configured as Master. It has&amp;nbsp;4 I2C slave peripheral devices connected to it. Out of the four devices, two are on board and two are external devices which are connected through the buffers.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;When one of the external peripheral holds the I2C bus by pulling the SCL line low, the bus busy status bit is set to 1 as expected. However, even after&amp;nbsp;reinitializing the&amp;nbsp;I2C&amp;nbsp;controller, it is unable to communicate with any other remaining peripheral devices.&amp;nbsp; Once this happens, the IIF bit in the I2SR&amp;nbsp;is&amp;nbsp;never&amp;nbsp;becoming 1&amp;nbsp;for any read or write transactions, and the only option is to reboot the board.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;For initialization we followed the steps given in the MCF5208RM.pdf document and couldn't find anything regarding I2C in errata. Is there anyway to reset the I2C controller alone in the 5208 other than the initialization sequence? Thanks in advance.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;-Rambabu.&amp;nbsp;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 27 Jul 2012 17:50:47 GMT</pubDate>
      <guid>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/Problems-with-I2C-on-MCF5208/m-p/183768#M7609</guid>
      <dc:creator>Rambabu</dc:creator>
      <dc:date>2012-07-27T17:50:47Z</dc:date>
    </item>
    <item>
      <title>Re: Problems with I2C on MCF5208</title>
      <link>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/Problems-with-I2C-on-MCF5208/m-p/183769#M7610</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Can you check if the SCL line is being held low?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 27 Jul 2012 20:47:00 GMT</pubDate>
      <guid>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/Problems-with-I2C-on-MCF5208/m-p/183769#M7610</guid>
      <dc:creator>JimDon</dc:creator>
      <dc:date>2012-07-27T20:47:00Z</dc:date>
    </item>
    <item>
      <title>Re: Problems with I2C on MCF5208</title>
      <link>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/Problems-with-I2C-on-MCF5208/m-p/183770#M7611</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;There is a design problem with the I2C bus. It can lock up if the master is reset during a transaction. When this happens the master is trying to start a cycle while the slaves assume they're in the middle of a cycle.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;This may not be the cause of your problem, but by resetting the master you may be getting the system into this state.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I've known about this for years, and have found my I2C Reset code that says how you should reset the I2C bus prior to using it. You should send 9 clocks (to clear out any previous cycles) during I2C initialisation. In some cases you have to program the port pins as GPIOs and toggle SCL in software to do this.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Google "&lt;SPAN style="margin-right: 0px;"&gt;&lt;A href="https://www.google.com.au/search?hl=en&amp;amp;client=firefox-a&amp;amp;hs=H0K&amp;amp;rls=org.mozilla:en-US:official&amp;amp;sa=X&amp;amp;ei=dnETUNjOK8maiAev7oHIAw&amp;amp;ved=0CFcQBSgA&amp;amp;q=i2c+bus+lock+up+reset&amp;amp;spell=1" rel="nofollow" target="_blank"&gt;i2c bus &lt;STRONG&gt;&lt;EM&gt;lock up&lt;/EM&gt;&lt;/STRONG&gt; reset&lt;/A&gt; "&lt;/SPAN&gt; finds:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;A href="http://forums.parallax.com/showthread.php?112299-I2C-reset-%28part-of-protocol-or-by-device-manufacturer-only-%29" rel="nofollow" target="_blank"&gt;http://forums.parallax.com/showthread.php?112299-I2C-reset-%28part-of-protocol-or-by-device-manufacturer-only-%29&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;FONT face="courier new,courier" size="1"&gt;I have had a only a bare handful of projects where under certain circumstances an I2C slave may "lockup" (generally by not releasing SCL if a lockup happens during clock stretching -- masters that do not timeout under these circumstances usually fall into their own endless loop as well because SCL never goes high). There are workarounds of course: polling SCL, bit-banging I2C routines to ensure that I2C transactions timeout while waiting for a slave to release a line, power cycling the slave, etc.&lt;/FONT&gt;&lt;BR /&gt;&lt;BR /&gt; &lt;FONT face="courier new,courier" size="1"&gt;However, I came across this tidbit in a datasheet from Atmel (an I2C 32kbit SOIC EEPROM)&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="courier new,courier" size="1"&gt;doc said...&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT face="courier new,courier" size="1"&gt;After an interruption in protocol, power loss or system reset, any 2-&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT face="courier new,courier" size="1"&gt;wire part can be reset by following these steps:&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT face="courier new,courier" size="1"&gt;(a) Clock up to 9 cycles, (b) look for SDA high in each cycle while SCL is high and then&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT face="courier new,courier" size="1"&gt;(c) create a start condition as SDA is high.&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The following are usually similar.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.microchip.com/forums/m45683.aspx" rel="nofollow" target="_blank"&gt;http://www.microchip.com/forums/m45683.aspx&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.utasker.com/forum/index.php?topic=990.0;wap2" rel="nofollow" target="_blank"&gt;http://www.utasker.com/forum/index.php?topic=990.0;wap2&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;A href="http://e2e.ti.com/support/dsp/tms320c6000_high_performance_dsps/f/115/t/49472.aspx" rel="nofollow" target="_blank"&gt;http://e2e.ti.com/support/dsp/tms320c6000_high_performance_dsps/f/115/t/49472.aspx&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.picaxeforum.co.uk/showthread.php?18654-Curing-a-locked-up-i2c-bus-after-hardware-reset-of-the-picaxe" rel="nofollow" target="_blank"&gt;http://www.picaxeforum.co.uk/showthread.php?18654-Curing-a-locked-up-i2c-bus-after-hardware-reset-of-the-picaxe&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Tom&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 28 Jul 2012 12:20:52 GMT</pubDate>
      <guid>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/Problems-with-I2C-on-MCF5208/m-p/183770#M7611</guid>
      <dc:creator>TomE</dc:creator>
      <dc:date>2012-07-28T12:20:52Z</dc:date>
    </item>
  </channel>
</rss>

