<?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 Help Me ! My IIC communication cannot work in 8-bit Microcontrollers</title>
    <link>https://community.nxp.com/t5/8-bit-Microcontrollers/Help-Me-My-IIC-communication-cannot-work/m-p/155801#M8863</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello, I'm a beginner. I want to chip of MC9SDZ60 MCU to communicate with IIC bus. One of them always works as master, and anthor one works as slaver.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Now&amp;nbsp; master can write to slaver successly, but it goes wrong when master reads from slaver.&amp;nbsp; I used&amp;nbsp;&amp;nbsp;o&lt;SPAN&gt;&lt;SPAN&gt;scilloscope to see the waveform of master's reading from slaver. I found all bytes&amp;nbsp;of data receives right, the 9th of last byte is NAK, but SDA and SCL line is still low.&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; I'm a beginner ot Freescale MCU, and this is my first time to use DZ60's IIC module, I really cannot found the problem , please help me. The code is followed.&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;PRE&gt;/*Master IIC code */unsigned char IIC_Index = 0;unsigned char IIC_BUF[50];unsigned char IIC_Stat;interrupt IIC_ISR(){&amp;nbsp;&amp;nbsp; DisableInterrupts;&amp;nbsp;&amp;nbsp; IIC_IICIF = 1;&amp;nbsp;&amp;nbsp; if ( !IICS_ARBL )&amp;nbsp;&amp;nbsp; {&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ( IICS_IAAS )&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IIC_Index = 0;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ( IICS_SRW )&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; IICC_TX = 1;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IIC_Stat = __iic_slaver_transfering;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&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; IICC_TXAK = 0;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IICS_TX = 0;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IICD;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IIC_Stat = __iic_slaver_receiving;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; EnableInterrupts;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }// End of if ( IICS_IAAS );&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ( IIC_stat == __iic_slaver_transfering )&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IICD = IIC_BUF[IIC_Index++];&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ( IIC_Index &amp;gt;= IIC_DataSize )&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; IIC_Stat = __iic_slaver_transfered;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IIC_DataSize = 0;&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; else ( IIC_Stat == __iic_slaver_receiving )&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IIC_BUF[IIC_Index] = IICD;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ( IIC_Index == 0 )&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; switch ( IIC_BUF[0] )&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; case _iic_test:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IIC_DataSize = 2;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ( ++IIC_Index &amp;gt;= IIC_DataSize )&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; IIC_Stat = __iic_slaver_received;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IIC_DataSize = 0;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } // end of if ( !IICS_ARBL )&amp;nbsp;&amp;nbsp; else&amp;nbsp;&amp;nbsp; {&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IICS_ARBL = 1;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; EnableInterrupts;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return;&amp;nbsp;&amp;nbsp; }&amp;nbsp;&amp;nbsp; EnableInterrpts; }&amp;nbsp;&amp;nbsp; &lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;// Master codeextern unsigned char IIC_BUF[];#define IIC_START() IIC_TX = 1; \&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; IICC_MST = 1;#define IIC_WRITE_BYTE(tmp) IICD = tmp;#define IIC_READ_DUMMY()&amp;nbsp;&amp;nbsp;&amp;nbsp; IICD;#define IIC_STOP()&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IICC_MST = 0;void IIC_WaitRespone(){&amp;nbsp;&amp;nbsp; while( IICS_IICF == 0 );&amp;nbsp;&amp;nbsp; IICS_IICF = 1;&amp;nbsp;&amp;nbsp; while( IICS_RXAK == 1 );}void IIC_WaitInterFlg(){&amp;nbsp;&amp;nbsp; while( IICS_IICF == 0 );&amp;nbsp;&amp;nbsp; IICS_IICF = 1;}void IIC_Read (unsigned char addr, unsigned char length){&amp;nbsp; unsigned char addrTmp;&amp;nbsp; unsigned char iLoop = 0;&amp;nbsp; addrTmp = ( addrTmp &amp;lt;&amp;lt; addr ) | 0x01;&amp;nbsp; while ( !IIC_WaitResponse() );&amp;nbsp; IICC_TX = 0;&amp;nbsp; IICC_TXAK = 0;&amp;nbsp; IIC_READ_DUMMY();&amp;nbsp; IIC_WaitInterFlg();&amp;nbsp; for ( iLoop = 0; iLoop &amp;lt; length; iLoop++ )&amp;nbsp; {&amp;nbsp;&amp;nbsp;&amp;nbsp; if ( iLoop = ( length -1 ) )&amp;nbsp;&amp;nbsp;&amp;nbsp; {&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IICC_TXAK = 1;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&amp;nbsp;&amp;nbsp;&amp;nbsp; IIC_READ_BYTE(IIC_BUF[iLoop]);&amp;nbsp;&amp;nbsp;&amp;nbsp; IIC_WaitInterFlg();&amp;nbsp; }&amp;nbsp; IIC_STOP();&amp;nbsp; return;}&amp;nbsp;&amp;nbsp; &lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Thanks!&lt;/P&gt;&lt;P&gt;祝好，&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;刘宇&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Thu, 29 Oct 2020 08:59:36 GMT</pubDate>
    <dc:creator>Tianshu</dc:creator>
    <dc:date>2020-10-29T08:59:36Z</dc:date>
    <item>
      <title>Help Me ! My IIC communication cannot work</title>
      <link>https://community.nxp.com/t5/8-bit-Microcontrollers/Help-Me-My-IIC-communication-cannot-work/m-p/155801#M8863</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello, I'm a beginner. I want to chip of MC9SDZ60 MCU to communicate with IIC bus. One of them always works as master, and anthor one works as slaver.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Now&amp;nbsp; master can write to slaver successly, but it goes wrong when master reads from slaver.&amp;nbsp; I used&amp;nbsp;&amp;nbsp;o&lt;SPAN&gt;&lt;SPAN&gt;scilloscope to see the waveform of master's reading from slaver. I found all bytes&amp;nbsp;of data receives right, the 9th of last byte is NAK, but SDA and SCL line is still low.&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; I'm a beginner ot Freescale MCU, and this is my first time to use DZ60's IIC module, I really cannot found the problem , please help me. The code is followed.&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;PRE&gt;/*Master IIC code */unsigned char IIC_Index = 0;unsigned char IIC_BUF[50];unsigned char IIC_Stat;interrupt IIC_ISR(){&amp;nbsp;&amp;nbsp; DisableInterrupts;&amp;nbsp;&amp;nbsp; IIC_IICIF = 1;&amp;nbsp;&amp;nbsp; if ( !IICS_ARBL )&amp;nbsp;&amp;nbsp; {&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ( IICS_IAAS )&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IIC_Index = 0;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ( IICS_SRW )&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; IICC_TX = 1;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IIC_Stat = __iic_slaver_transfering;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&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; IICC_TXAK = 0;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IICS_TX = 0;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IICD;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IIC_Stat = __iic_slaver_receiving;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; EnableInterrupts;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }// End of if ( IICS_IAAS );&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ( IIC_stat == __iic_slaver_transfering )&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IICD = IIC_BUF[IIC_Index++];&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ( IIC_Index &amp;gt;= IIC_DataSize )&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; IIC_Stat = __iic_slaver_transfered;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IIC_DataSize = 0;&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; else ( IIC_Stat == __iic_slaver_receiving )&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IIC_BUF[IIC_Index] = IICD;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ( IIC_Index == 0 )&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; switch ( IIC_BUF[0] )&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; case _iic_test:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IIC_DataSize = 2;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ( ++IIC_Index &amp;gt;= IIC_DataSize )&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; IIC_Stat = __iic_slaver_received;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IIC_DataSize = 0;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } // end of if ( !IICS_ARBL )&amp;nbsp;&amp;nbsp; else&amp;nbsp;&amp;nbsp; {&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IICS_ARBL = 1;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; EnableInterrupts;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return;&amp;nbsp;&amp;nbsp; }&amp;nbsp;&amp;nbsp; EnableInterrpts; }&amp;nbsp;&amp;nbsp; &lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;// Master codeextern unsigned char IIC_BUF[];#define IIC_START() IIC_TX = 1; \&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; IICC_MST = 1;#define IIC_WRITE_BYTE(tmp) IICD = tmp;#define IIC_READ_DUMMY()&amp;nbsp;&amp;nbsp;&amp;nbsp; IICD;#define IIC_STOP()&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IICC_MST = 0;void IIC_WaitRespone(){&amp;nbsp;&amp;nbsp; while( IICS_IICF == 0 );&amp;nbsp;&amp;nbsp; IICS_IICF = 1;&amp;nbsp;&amp;nbsp; while( IICS_RXAK == 1 );}void IIC_WaitInterFlg(){&amp;nbsp;&amp;nbsp; while( IICS_IICF == 0 );&amp;nbsp;&amp;nbsp; IICS_IICF = 1;}void IIC_Read (unsigned char addr, unsigned char length){&amp;nbsp; unsigned char addrTmp;&amp;nbsp; unsigned char iLoop = 0;&amp;nbsp; addrTmp = ( addrTmp &amp;lt;&amp;lt; addr ) | 0x01;&amp;nbsp; while ( !IIC_WaitResponse() );&amp;nbsp; IICC_TX = 0;&amp;nbsp; IICC_TXAK = 0;&amp;nbsp; IIC_READ_DUMMY();&amp;nbsp; IIC_WaitInterFlg();&amp;nbsp; for ( iLoop = 0; iLoop &amp;lt; length; iLoop++ )&amp;nbsp; {&amp;nbsp;&amp;nbsp;&amp;nbsp; if ( iLoop = ( length -1 ) )&amp;nbsp;&amp;nbsp;&amp;nbsp; {&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IICC_TXAK = 1;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&amp;nbsp;&amp;nbsp;&amp;nbsp; IIC_READ_BYTE(IIC_BUF[iLoop]);&amp;nbsp;&amp;nbsp;&amp;nbsp; IIC_WaitInterFlg();&amp;nbsp; }&amp;nbsp; IIC_STOP();&amp;nbsp; return;}&amp;nbsp;&amp;nbsp; &lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Thanks!&lt;/P&gt;&lt;P&gt;祝好，&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;刘宇&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 29 Oct 2020 08:59:36 GMT</pubDate>
      <guid>https://community.nxp.com/t5/8-bit-Microcontrollers/Help-Me-My-IIC-communication-cannot-work/m-p/155801#M8863</guid>
      <dc:creator>Tianshu</dc:creator>
      <dc:date>2020-10-29T08:59:36Z</dc:date>
    </item>
    <item>
      <title>Re: Help Me ! My IIC communication cannot work</title>
      <link>https://community.nxp.com/t5/8-bit-Microcontrollers/Help-Me-My-IIC-communication-cannot-work/m-p/155802#M8864</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;&amp;nbsp;I used oscilloscope to see the waveform of master's reading from slaver. I found all bytes of data receives right, the 9th bit of last byte is NAK, but SDA and SCL line is still low.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 18 Oct 2010 13:53:03 GMT</pubDate>
      <guid>https://community.nxp.com/t5/8-bit-Microcontrollers/Help-Me-My-IIC-communication-cannot-work/m-p/155802#M8864</guid>
      <dc:creator>Tianshu</dc:creator>
      <dc:date>2010-10-18T13:53:03Z</dc:date>
    </item>
    <item>
      <title>Re: Help Me ! My IIC communication cannot work</title>
      <link>https://community.nxp.com/t5/8-bit-Microcontrollers/Help-Me-My-IIC-communication-cannot-work/m-p/155803#M8865</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I haven't used this particulr chip, but have you remembered to change the data line port pin direction from output to input?&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 21 Oct 2010 18:12:42 GMT</pubDate>
      <guid>https://community.nxp.com/t5/8-bit-Microcontrollers/Help-Me-My-IIC-communication-cannot-work/m-p/155803#M8865</guid>
      <dc:creator>DRichards</dc:creator>
      <dc:date>2010-10-21T18:12:42Z</dc:date>
    </item>
    <item>
      <title>Re: Help Me ! My IIC communication cannot work</title>
      <link>https://community.nxp.com/t5/8-bit-Microcontrollers/Help-Me-My-IIC-communication-cannot-work/m-p/155804#M8866</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;There have been many discussions of implementing this interface in the forum. Some of that information may be of use to you. Do a search on "IIC" and "I2C" using the Search function at the upper right of this web page.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;---Tom&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 21 Oct 2010 20:12:53 GMT</pubDate>
      <guid>https://community.nxp.com/t5/8-bit-Microcontrollers/Help-Me-My-IIC-communication-cannot-work/m-p/155804#M8866</guid>
      <dc:creator>J2MEJediMaster</dc:creator>
      <dc:date>2010-10-21T20:12:53Z</dc:date>
    </item>
    <item>
      <title>Re: Help Me ! My IIC communication cannot work</title>
      <link>https://community.nxp.com/t5/8-bit-Microcontrollers/Help-Me-My-IIC-communication-cannot-work/m-p/155805#M8867</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV class="lia"&gt;&lt;SPAN&gt;Hello &amp;nbsp;DRichards:&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia"&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Thanks for your suggestion. I have solved my problem. I found my slaver didn't change translation direction after sending the last byte.&amp;nbsp; When I set IICC_TX to zero and read the register IICD, the SDA line changed to be high, and the communication worked.&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia"&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; I'm a beginner of HCS08, thanks for you help.&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia"&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 谢谢，&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia"&gt;&lt;SPAN&gt;祝好&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 22 Oct 2010 07:23:30 GMT</pubDate>
      <guid>https://community.nxp.com/t5/8-bit-Microcontrollers/Help-Me-My-IIC-communication-cannot-work/m-p/155805#M8867</guid>
      <dc:creator>Tianshu</dc:creator>
      <dc:date>2010-10-22T07:23:30Z</dc:date>
    </item>
    <item>
      <title>Re: Help Me ! My IIC communication cannot work</title>
      <link>https://community.nxp.com/t5/8-bit-Microcontrollers/Help-Me-My-IIC-communication-cannot-work/m-p/155806#M8868</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello Tem&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Thanks for your suggestion. It's a good way to solve the problem, and with your help, I have solved my problem of IIC&amp;nbsp;communication. 谢谢&lt;/P&gt;&lt;P&gt;刘宇&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 22 Oct 2010 07:27:54 GMT</pubDate>
      <guid>https://community.nxp.com/t5/8-bit-Microcontrollers/Help-Me-My-IIC-communication-cannot-work/m-p/155806#M8868</guid>
      <dc:creator>Tianshu</dc:creator>
      <dc:date>2010-10-22T07:27:54Z</dc:date>
    </item>
  </channel>
</rss>

