<?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 I2C IICIF bit flag not activated on transfer in Kinetis Microcontrollers</title>
    <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/I2C-IICIF-bit-flag-not-activated-on-transfer/m-p/364591#M18697</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Does anybody of you have happen that after reading some registers in a slave device the IICIF bit flag does not get activated after sendind the register address to the slave device?&lt;/P&gt;&lt;P&gt;This is happening after reading successfully a register and attempting to send the next register address with the same slave address. I think that the I2C module is properly configured because I can communicate with the accelerometer in the board, but when I try other devices I get stuck waiting to for the register address to be send.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;This is my init code for the I2C&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;void init_I2C(void)&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; SIM_SCGC4 |= SIM_SCGC4_I2C0_MASK;&amp;nbsp;&amp;nbsp; // Turn on clock to I2C0 module&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; BW_PORT_PCRn_MUX(PORTE_BASE,24u,kPortMuxAlt5);&amp;nbsp; // Configure pin functionality for I2C0&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; BW_PORT_PCRn_MUX(PORTE_BASE,25u,kPortMuxAlt5);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; I2C0_F&amp;nbsp; = 0x17;&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; // SLC divider is 128 for 50MHz clock (I2C works in ~390KHz). &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; I2C0_C1 = I2C_C1_IICEN_MASK;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // enable IIC&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;This is how I read the registers:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;unsigned char ReadRegister(unsigned char u8RegisterAddress)&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;unsigned char result;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* Send Slave Address */&lt;/P&gt;&lt;P&gt;&amp;nbsp; IIC_StartTransmission(SlaveID,MWSR);&lt;/P&gt;&lt;P&gt;&amp;nbsp; i2c_Wait();&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* Write Register Address */&lt;/P&gt;&lt;P&gt;&amp;nbsp; I2C0_D = u8RegisterAddress;&lt;/P&gt;&lt;P&gt;&amp;nbsp; i2c_Wait();&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* Do a repeated start */&lt;/P&gt;&lt;P&gt;&amp;nbsp; I2C0_C1 |= I2C_C1_RSTA_MASK;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* Send Slave Address */&lt;/P&gt;&lt;P&gt;&amp;nbsp; I2C0_D = (OV7740_I2C_ADDRESS &amp;lt;&amp;lt; 1) | 0x01; //read address&lt;/P&gt;&lt;P&gt;&amp;nbsp; i2c_Wait();&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* Put in Rx Mode */&lt;/P&gt;&lt;P&gt;&amp;nbsp; I2C0_C1 &amp;amp;= (~I2C_C1_TX_MASK);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* Turn off ACK since this is second to last byte being read*/&lt;/P&gt;&lt;P&gt;&amp;nbsp; I2C0_C1 |= I2C_C1_TXAK_MASK;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* Dummy read */&lt;/P&gt;&lt;P&gt;&amp;nbsp; result = I2C0_D ;&lt;/P&gt;&lt;P&gt;&amp;nbsp; i2c_Wait();&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* Send stop since about to read last byte */&lt;/P&gt;&lt;P&gt;&amp;nbsp; i2c_Stop();&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* Read byte */&lt;/P&gt;&lt;P&gt;&amp;nbsp; result = I2C0_D ;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; return result;&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#define i2c_Start()&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; I2C0_C1 |= I2C_C1_TX_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;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; I2C0_C1 |= I2C_C1_MST_MASK&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#define i2c_Stop()&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; I2C0_C1 &amp;amp;= ~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;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; I2C0_C1 &amp;amp;= ~I2C_C1_TX_MASK&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;This is how I wait fo the byte to be transmited and were my code get stuck because the IICIF bit never gets active.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#define i2c_wait()&amp;nbsp;&amp;nbsp; while((I2C0_S &amp;amp; I2C_S_IICIF_MASK)==0) {} \&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; I2C0_S |= I2C_S_IICIF_MASK;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Sun, 14 Sep 2014 04:24:20 GMT</pubDate>
    <dc:creator>luisluna</dc:creator>
    <dc:date>2014-09-14T04:24:20Z</dc:date>
    <item>
      <title>I2C IICIF bit flag not activated on transfer</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/I2C-IICIF-bit-flag-not-activated-on-transfer/m-p/364591#M18697</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Does anybody of you have happen that after reading some registers in a slave device the IICIF bit flag does not get activated after sendind the register address to the slave device?&lt;/P&gt;&lt;P&gt;This is happening after reading successfully a register and attempting to send the next register address with the same slave address. I think that the I2C module is properly configured because I can communicate with the accelerometer in the board, but when I try other devices I get stuck waiting to for the register address to be send.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;This is my init code for the I2C&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;void init_I2C(void)&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; SIM_SCGC4 |= SIM_SCGC4_I2C0_MASK;&amp;nbsp;&amp;nbsp; // Turn on clock to I2C0 module&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; BW_PORT_PCRn_MUX(PORTE_BASE,24u,kPortMuxAlt5);&amp;nbsp; // Configure pin functionality for I2C0&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; BW_PORT_PCRn_MUX(PORTE_BASE,25u,kPortMuxAlt5);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; I2C0_F&amp;nbsp; = 0x17;&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; // SLC divider is 128 for 50MHz clock (I2C works in ~390KHz). &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; I2C0_C1 = I2C_C1_IICEN_MASK;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // enable IIC&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;This is how I read the registers:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;unsigned char ReadRegister(unsigned char u8RegisterAddress)&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;unsigned char result;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* Send Slave Address */&lt;/P&gt;&lt;P&gt;&amp;nbsp; IIC_StartTransmission(SlaveID,MWSR);&lt;/P&gt;&lt;P&gt;&amp;nbsp; i2c_Wait();&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* Write Register Address */&lt;/P&gt;&lt;P&gt;&amp;nbsp; I2C0_D = u8RegisterAddress;&lt;/P&gt;&lt;P&gt;&amp;nbsp; i2c_Wait();&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* Do a repeated start */&lt;/P&gt;&lt;P&gt;&amp;nbsp; I2C0_C1 |= I2C_C1_RSTA_MASK;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* Send Slave Address */&lt;/P&gt;&lt;P&gt;&amp;nbsp; I2C0_D = (OV7740_I2C_ADDRESS &amp;lt;&amp;lt; 1) | 0x01; //read address&lt;/P&gt;&lt;P&gt;&amp;nbsp; i2c_Wait();&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* Put in Rx Mode */&lt;/P&gt;&lt;P&gt;&amp;nbsp; I2C0_C1 &amp;amp;= (~I2C_C1_TX_MASK);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* Turn off ACK since this is second to last byte being read*/&lt;/P&gt;&lt;P&gt;&amp;nbsp; I2C0_C1 |= I2C_C1_TXAK_MASK;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* Dummy read */&lt;/P&gt;&lt;P&gt;&amp;nbsp; result = I2C0_D ;&lt;/P&gt;&lt;P&gt;&amp;nbsp; i2c_Wait();&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* Send stop since about to read last byte */&lt;/P&gt;&lt;P&gt;&amp;nbsp; i2c_Stop();&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* Read byte */&lt;/P&gt;&lt;P&gt;&amp;nbsp; result = I2C0_D ;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; return result;&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#define i2c_Start()&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; I2C0_C1 |= I2C_C1_TX_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;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; I2C0_C1 |= I2C_C1_MST_MASK&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#define i2c_Stop()&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; I2C0_C1 &amp;amp;= ~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;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; I2C0_C1 &amp;amp;= ~I2C_C1_TX_MASK&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;This is how I wait fo the byte to be transmited and were my code get stuck because the IICIF bit never gets active.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#define i2c_wait()&amp;nbsp;&amp;nbsp; while((I2C0_S &amp;amp; I2C_S_IICIF_MASK)==0) {} \&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; I2C0_S |= I2C_S_IICIF_MASK;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 14 Sep 2014 04:24:20 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/I2C-IICIF-bit-flag-not-activated-on-transfer/m-p/364591#M18697</guid>
      <dc:creator>luisluna</dc:creator>
      <dc:date>2014-09-14T04:24:20Z</dc:date>
    </item>
    <item>
      <title>Re: I2C IICIF bit flag not activated on transfer</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/I2C-IICIF-bit-flag-not-activated-on-transfer/m-p/364592#M18698</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Luis&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Are you sure that the first I2C message transmission has completed (stop condition completed) before sending a second message to a different device?&lt;/P&gt;&lt;P&gt;Try waiting for the bus to become idle before sending the second message - eg.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;while (I2C0_S &amp;amp; IIC_IBB) {}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Mark&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 14 Sep 2014 20:41:22 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/I2C-IICIF-bit-flag-not-activated-on-transfer/m-p/364592#M18698</guid>
      <dc:creator>mjbcswitzerland</dc:creator>
      <dc:date>2014-09-14T20:41:22Z</dc:date>
    </item>
    <item>
      <title>Re: I2C IICIF bit flag not activated on transfer</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/I2C-IICIF-bit-flag-not-activated-on-transfer/m-p/364593#M18699</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thanks Mark,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Seems like this was causing the issue.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 16 Sep 2014 20:13:05 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/I2C-IICIF-bit-flag-not-activated-on-transfer/m-p/364593#M18699</guid>
      <dc:creator>luisluna</dc:creator>
      <dc:date>2014-09-16T20:13:05Z</dc:date>
    </item>
    <item>
      <title>Re: I2C IICIF bit flag not activated on transfer</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/I2C-IICIF-bit-flag-not-activated-on-transfer/m-p/364594#M18700</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,Luis,&lt;/P&gt;&lt;P&gt;I have the same question as yours, would you please tell me where you put this "while (I2C0_S &amp;amp; IIC_IBB) {}" to solve the problem?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Best Regards!&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 01 Dec 2014 01:44:38 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/I2C-IICIF-bit-flag-not-activated-on-transfer/m-p/364594#M18700</guid>
      <dc:creator>jonathanlee</dc:creator>
      <dc:date>2014-12-01T01:44:38Z</dc:date>
    </item>
    <item>
      <title>Re: I2C IICIF bit flag not activated on transfer</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/I2C-IICIF-bit-flag-not-activated-on-transfer/m-p/364595#M18701</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Li,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;It was needed to be added after the read of the data, like:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P style="font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; color: #3d3d3d;"&gt;unsigned char ReadRegister(unsigned char u8RegisterAddress)&lt;/P&gt;&lt;P style="font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; color: #3d3d3d;"&gt;{&lt;/P&gt;&lt;P style="font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; color: #3d3d3d;"&gt;unsigned char result;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P style="font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; color: #3d3d3d;"&gt;&amp;nbsp; /* Send Slave Address */&lt;/P&gt;&lt;P style="font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; color: #3d3d3d;"&gt;&amp;nbsp; IIC_StartTransmission(SlaveID,MWSR);&lt;/P&gt;&lt;P style="font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; color: #3d3d3d;"&gt;&amp;nbsp; i2c_Wait();&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P style="font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; color: #3d3d3d;"&gt;&amp;nbsp; /* Write Register Address */&lt;/P&gt;&lt;P style="font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; color: #3d3d3d;"&gt;&amp;nbsp; I2C0_D = u8RegisterAddress;&lt;/P&gt;&lt;P style="font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; color: #3d3d3d;"&gt;&amp;nbsp; i2c_Wait();&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P style="font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; color: #3d3d3d;"&gt;&amp;nbsp; /* Do a repeated start */&lt;/P&gt;&lt;P style="font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; color: #3d3d3d;"&gt;&amp;nbsp; I2C0_C1 |= I2C_C1_RSTA_MASK;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P style="font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; color: #3d3d3d;"&gt;&amp;nbsp; /* Send Slave Address */&lt;/P&gt;&lt;P style="font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; color: #3d3d3d;"&gt;&amp;nbsp; I2C0_D = (OV7740_I2C_ADDRESS &amp;lt;&amp;lt; 1) | 0x01; //read address&lt;/P&gt;&lt;P style="font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; color: #3d3d3d;"&gt;&amp;nbsp; i2c_Wait();&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P style="font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; color: #3d3d3d;"&gt;&amp;nbsp; /* Put in Rx Mode */&lt;/P&gt;&lt;P style="font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; color: #3d3d3d;"&gt;&amp;nbsp; I2C0_C1 &amp;amp;= (~I2C_C1_TX_MASK);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P style="font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; color: #3d3d3d;"&gt;&amp;nbsp; /* Turn off ACK since this is second to last byte being read*/&lt;/P&gt;&lt;P style="font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; color: #3d3d3d;"&gt;&amp;nbsp; I2C0_C1 |= I2C_C1_TXAK_MASK;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P style="font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; color: #3d3d3d;"&gt;&amp;nbsp; /* Dummy read */&lt;/P&gt;&lt;P style="font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; color: #3d3d3d;"&gt;&amp;nbsp; result = I2C0_D ;&lt;/P&gt;&lt;P style="font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; color: #3d3d3d;"&gt;&amp;nbsp; i2c_Wait();&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P style="font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; color: #3d3d3d;"&gt;&amp;nbsp; /* Send stop since about to read last byte */&lt;/P&gt;&lt;P style="font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; color: #3d3d3d;"&gt;&amp;nbsp; i2c_Stop();&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P style="font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; color: #3d3d3d;"&gt;&amp;nbsp; /* Read byte */&lt;/P&gt;&lt;P style="font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; color: #3d3d3d;"&gt;&amp;nbsp; result = I2C0_D ;&lt;/P&gt;&lt;P style="font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; color: #3d3d3d;"&gt;&lt;/P&gt;&lt;P&gt; /* Wait for the bus to be free */&lt;/P&gt;&lt;P&gt;&amp;nbsp; while (I2C0_S &amp;amp; I2C_S_BUSY_MASK)&lt;/P&gt;&lt;P&gt;&amp;nbsp; {}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P style="font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; color: #3d3d3d;"&gt;&amp;nbsp; return result;&lt;/P&gt;&lt;P style="font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; color: #3d3d3d;"&gt;}&lt;/P&gt;&lt;P style="font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; color: #3d3d3d;"&gt;&lt;/P&gt;&lt;P style="font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; color: #3d3d3d;"&gt;where&amp;nbsp; I2C_S_BUSY_MASK is&amp;nbsp; 0x20u&lt;/P&gt;&lt;P style="font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; color: #3d3d3d;"&gt;&lt;/P&gt;&lt;P style="font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; color: #3d3d3d;"&gt;Hope this helps :smileysilly:&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 01 Dec 2014 18:55:07 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/I2C-IICIF-bit-flag-not-activated-on-transfer/m-p/364595#M18701</guid>
      <dc:creator>luisluna</dc:creator>
      <dc:date>2014-12-01T18:55:07Z</dc:date>
    </item>
    <item>
      <title>Re: I2C IICIF bit flag not activated on transfer</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/I2C-IICIF-bit-flag-not-activated-on-transfer/m-p/364596#M18702</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,Luis,&lt;/P&gt;&lt;P&gt;Thanks for your reply.&lt;/P&gt;&lt;P&gt;It helps,my program works well now. I add&amp;nbsp;&amp;nbsp; while (I2C0_S &amp;amp; I2C_S_BUSY_MASK), and send nack.&lt;/P&gt;&lt;P&gt;Thanks again.&lt;/P&gt;&lt;P&gt;Best Regards!&lt;/P&gt;&lt;P&gt;Li&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 02 Dec 2014 00:59:11 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/I2C-IICIF-bit-flag-not-activated-on-transfer/m-p/364596#M18702</guid>
      <dc:creator>jonathanlee</dc:creator>
      <dc:date>2014-12-02T00:59:11Z</dc:date>
    </item>
  </channel>
</rss>

