<?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: I2C read function issues in Kinetis Microcontrollers</title>
    <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/I2C-read-function-issues/m-p/366281#M18862</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Kas,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I checked your code with below error:&lt;/P&gt;&lt;P&gt;in main() function, when you want to change I2C module mode from write to read, the below code is incorrect:&lt;/P&gt;&lt;P&gt;I2C0_C1 &amp;amp;= !I2C_C1_TX_MASK;&lt;/P&gt;&lt;P&gt;The correct code is :&lt;/P&gt;&lt;P&gt;I2C0_C1 &amp;amp;= ~I2C_C1_TX_MASK;&lt;/P&gt;&lt;P&gt;And when you want to get the ADT7420 ID value, it need to read I2C0_D register twice, please refer below code:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; i2c_give_nack(I2C0_B);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //your code is I2C0_C1 |= I2C_C1_TXAK_MASK;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; result = i2c_read_byte(I2C0_B);&amp;nbsp;&amp;nbsp; //your code is&amp;nbsp; replay = I2C0_D;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; i2c_wait(I2C0_B);&amp;nbsp;&amp;nbsp;&amp;nbsp; //your code is&amp;nbsp;&amp;nbsp;&amp;nbsp; while ((I2C0_S &amp;amp; I2C_S_IICIF_MASK) == 0){&amp;nbsp; //Wait for data to transmit&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; i2c_stop(I2C0_B);&amp;nbsp;&amp;nbsp;&amp;nbsp; //your code need to add as&amp;nbsp;&amp;nbsp; I2C0_C1&amp;nbsp; &amp;amp;= ~I2C_C1_MST_MASK;&amp;nbsp; I2C0_C1&amp;nbsp; &amp;amp;= ~I2C_C1_TX_MASK;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; result = i2c_read_byte(I2C0_B);&amp;nbsp; //your code need to add as&amp;nbsp;&amp;nbsp; replay = I2C0_D;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;Wish it helps.&lt;BR /&gt;best regards &lt;BR /&gt;Ma Hui&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, 03 Dec 2014 03:36:06 GMT</pubDate>
    <dc:creator>Hui_Ma</dc:creator>
    <dc:date>2014-12-03T03:36:06Z</dc:date>
    <item>
      <title>I2C read function issues</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/I2C-read-function-issues/m-p/366274#M18855</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P style="color: #222222; font-family: arial, sans-serif;"&gt;Is there anyone at Freescale available to help with the I2C operation for the KEA-64. I am having issues reading back the response from an I2C device, There seems to be an issue having the KEA-64 provide the clock signal for the sensor device to replay with the requested data. This is the main issue preventing my proposed demo project from going live, any help would be very much appreciated.&lt;/P&gt;&lt;P style="color: #222222; font-family: arial, sans-serif;"&gt;&lt;/P&gt;&lt;P style="color: #222222; font-family: arial, sans-serif;"&gt;Thanks&lt;/P&gt;&lt;P style="color: #222222; font-family: arial, sans-serif;"&gt;Kas&lt;/P&gt;&lt;P style="color: #222222; font-family: arial, sans-serif;"&gt;&lt;/P&gt;&lt;P style="color: #222222; font-family: arial, sans-serif;"&gt;P.s. I have attached my code for a read from address 0x4B register 0x0B, there is just no clock for the devices response from that register.&lt;/P&gt;&lt;P style="color: #222222; font-family: arial, sans-serif;"&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#include "derivative.h" /* include peripheral declarations */&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#define MWSR&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x00&amp;nbsp; /* Master write&amp;nbsp; */&lt;/P&gt;&lt;P&gt;#define MRSW&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x01&amp;nbsp; /* Master read */&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&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |= 0x10;\&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;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |= I2C_C1_MST_MASK&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#define i2c_write_byte(data)&amp;nbsp;&amp;nbsp; I2C0_D = data&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#define i2c_Wait()&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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;&amp;nbsp;&amp;nbsp; I2C0_S |= I2C_S_IICIF_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;nbsp; &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; I2C0_C1&amp;nbsp; &amp;amp;= ~I2C_C1_TX_MASK&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;unsigned char MasterTransmission;&lt;/P&gt;&lt;P&gt;/*******************************************************************/&lt;/P&gt;&lt;P&gt;/*!&lt;/P&gt;&lt;P&gt; * Pause Routine&lt;/P&gt;&lt;P&gt; */&lt;/P&gt;&lt;P&gt;void Pause(void){&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; int n;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; for(n=1;n&amp;lt;50;n++) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; asm("nop");&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;/***********************************************************************************************&lt;/P&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;* @brief&amp;nbsp;&amp;nbsp;&amp;nbsp; Uart_SendChar - Send a single byte on Uart1 &lt;/P&gt;&lt;P&gt;* @param&amp;nbsp;&amp;nbsp;&amp;nbsp; byte to send&lt;/P&gt;&lt;P&gt;* @return&amp;nbsp;&amp;nbsp; none&lt;/P&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;************************************************************************************************/&amp;nbsp; &lt;/P&gt;&lt;P&gt;void Uart_SendChar(uint8_t send)&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp; while((UART2_S1&amp;amp;UART_S1_TDRE_MASK)==0);&lt;/P&gt;&lt;P&gt;&amp;nbsp; (void)UART2_S1;&lt;/P&gt;&lt;P&gt;&amp;nbsp; UART2_D=send;&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; line-height: 1.5em;"&gt;void writeRegister(unsigned char slaveID, unsigned char registerAddress, unsigned char data)&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp; MasterTransmission = MWSR;&lt;/P&gt;&lt;P&gt;&amp;nbsp; slaveID = slaveID &amp;lt;&amp;lt; 1;&lt;/P&gt;&lt;P&gt;&amp;nbsp; slaveID |= MasterTransmission; &lt;/P&gt;&lt;P&gt;&amp;nbsp; i2c_Start();&lt;/P&gt;&lt;P&gt;&amp;nbsp; i2c_write_byte(slaveID);&lt;/P&gt;&lt;P&gt;&amp;nbsp; i2c_Wait();&lt;/P&gt;&lt;P&gt;&amp;nbsp; I2C0_D = registerAddress;&lt;/P&gt;&lt;P&gt;&amp;nbsp; i2c_Wait();&lt;/P&gt;&lt;P&gt;&amp;nbsp; I2C0_D = data;&lt;/P&gt;&lt;P&gt;&amp;nbsp; i2c_Wait();&lt;/P&gt;&lt;P&gt;&amp;nbsp; i2c_Stop();&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;void Clk_Init()&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp; ICS_C1|=ICS_C1_IRCLKEN_MASK; /* Enable the internal reference clock*/ &lt;/P&gt;&lt;P&gt;&amp;nbsp; ICS_C3= 0x50; /* Reference clock frequency = 39.0625 KHz*/&lt;/P&gt;&lt;P&gt;&amp;nbsp; while(!(ICS_S &amp;amp; ICS_S_LOCK_MASK));&amp;nbsp;&amp;nbsp; /* Wait for PLL lock, now running at 40 MHz (1024 * 39.0625Khz) */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ICS_C2|=ICS_C2_BDIV(1)&amp;nbsp; ; /*BDIV=2, Bus clock = 20 MHz*/&lt;/P&gt;&lt;P&gt;&amp;nbsp; ICS_S |= ICS_S_LOCK_MASK ; /* Clear Loss of lock sticky bit */&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;void UART_Init()&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp; SIM_SCGC |=&amp;nbsp; SIM_SCGC_UART2_MASK;&lt;/P&gt;&lt;P&gt;&amp;nbsp; UART2_BDL= 128;&lt;/P&gt;&lt;P&gt;&amp;nbsp; UART2_C1 = 0;&lt;/P&gt;&lt;P&gt;&amp;nbsp; UART2_C2 |= UART_C2_TE_MASK;&lt;/P&gt;&lt;P&gt;&amp;nbsp; UART2_C2 |= UART_C2_RE_MASK;&lt;/P&gt;&lt;P&gt;&amp;nbsp; UART2_C2 |= UART_C2_RIE_MASK;&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;void i2cInit(){&lt;/P&gt;&lt;P&gt;&amp;nbsp; //I2C setup&lt;/P&gt;&lt;P&gt;&amp;nbsp; SIM_SCGC |= SIM_SCGC_I2C_MASK;&lt;/P&gt;&lt;P&gt;&amp;nbsp; SIM_PINSEL |= SIM_PINSEL_I2C0PS_MASK;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; I2C0_F = 0x00;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; I2C0_C1 = I2C_C1_IICEN_MASK | I2C_C1_MST_MASK | I2C_C1_IICIE_MASK; &lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;int main(void)&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp; long int delay;&lt;/P&gt;&lt;P&gt;&amp;nbsp; unsigned char i;&lt;/P&gt;&lt;P&gt;&amp;nbsp; unsigned char replay;&lt;/P&gt;&lt;P&gt;&amp;nbsp; char string[] = "My name is Bob C. Marley \r\n\r\n";&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; Clk_Init();&lt;/P&gt;&lt;P&gt;&amp;nbsp; UART_Init();&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; SIM_SCGC |= SIM_SCGC_I2C_MASK;&lt;/P&gt;&lt;P&gt;&amp;nbsp; SIM_PINSEL |= SIM_PINSEL_I2C0PS_MASK;&lt;/P&gt;&lt;P&gt;&amp;nbsp; I2C0_F = 0x11;&lt;/P&gt;&lt;P&gt;&amp;nbsp; I2C0_C1 |= I2C_C1_MST_MASK | I2C_C1_TX_MASK | I2C_C1_IICEN_MASK;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; I2C0_D = 0x96;&lt;/P&gt;&lt;P&gt;&amp;nbsp; while ((I2C0_S &amp;amp; I2C_S_IICIF_MASK) == 0){&lt;/P&gt;&lt;P&gt;&amp;nbsp; //Wait for data to transmit&lt;/P&gt;&lt;P&gt;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp; I2C0_S |= I2C_S_IICIF_MASK;&lt;/P&gt;&lt;P&gt;&amp;nbsp; I2C0_D = 0x0B;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; while ((I2C0_S &amp;amp; I2C_S_IICIF_MASK) == 0){&lt;/P&gt;&lt;P&gt;&amp;nbsp; //Wait for data to transmit&lt;/P&gt;&lt;P&gt;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp; I2C0_S |= I2C_S_IICIF_MASK;&lt;/P&gt;&lt;P&gt;&amp;nbsp; //Restart&lt;/P&gt;&lt;P&gt;&amp;nbsp; I2C0_C1 |= I2C_C1_RSTA_MASK;&lt;/P&gt;&lt;P&gt;&amp;nbsp; I2C0_D = 0x97;&lt;/P&gt;&lt;P&gt;&amp;nbsp; while ((I2C0_S &amp;amp; I2C_S_IICIF_MASK) == 0){&lt;/P&gt;&lt;P&gt;&amp;nbsp; //Wait for data to transmit&lt;/P&gt;&lt;P&gt;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp; I2C0_S |= I2C_S_IICIF_MASK;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&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;&amp;nbsp; I2C0_C1 |= I2C_C1_TXAK_MASK;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; replay = I2C0_D;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; while ((I2C0_S &amp;amp; I2C_S_IICIF_MASK) == 0){&lt;/P&gt;&lt;P&gt;&amp;nbsp; //Wait for data to transmit&lt;/P&gt;&lt;P&gt;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp; while(1) {&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; for (i = 0; string[i] != '\0'; i++){&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Uart_SendChar(string[i]);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; for(delay = 0; delay &amp;lt; 99999; delay++);&lt;/P&gt;&lt;P&gt;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;return 0;&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 24 Nov 2014 22:00:19 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/I2C-read-function-issues/m-p/366274#M18855</guid>
      <dc:creator>kaslewis</dc:creator>
      <dc:date>2014-11-24T22:00:19Z</dc:date>
    </item>
    <item>
      <title>Re: I2C read function issues</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/I2C-read-function-issues/m-p/366275#M18856</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;KEA product is using the same I2C module with KE06 product.&lt;/P&gt;&lt;P&gt;Customer could download CodeWarrior MCU V10.6 software, there provides KE06 product I2C module application code at default installation path:&lt;/P&gt;&lt;P&gt;C:\Freescale\CW MCU v10.6\MCU\CodeWarrior_Examples\Kinetis_Examples\KE\build\cw\ke06\I2C_MasterInt_demo&lt;/P&gt;&lt;P&gt;I also attached KE06 I2C driver for your reference.&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;Wish it helps.&lt;BR /&gt;best regards &lt;BR /&gt;Ma Hui&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>Tue, 25 Nov 2014 09:39:47 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/I2C-read-function-issues/m-p/366275#M18856</guid>
      <dc:creator>Hui_Ma</dc:creator>
      <dc:date>2014-11-25T09:39:47Z</dc:date>
    </item>
    <item>
      <title>Re: I2C read function issues</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/I2C-read-function-issues/m-p/366276#M18857</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I have looked through a few Freescale I2C demo code for the KEA or other Kinetis boards but none work. Some are just plainly wrong (do not seem to know how to read a register... ) and others just don't make sense. Any real help would be much appreciated, a tried, tested and know to be good demo would be helpful but so far what I have seems to be coded with no testing or any real thought.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Kas&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 25 Nov 2014 16:19:22 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/I2C-read-function-issues/m-p/366276#M18857</guid>
      <dc:creator>kaslewis</dc:creator>
      <dc:date>2014-11-25T16:19:22Z</dc:date>
    </item>
    <item>
      <title>Re: I2C read function issues</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/I2C-read-function-issues/m-p/366277#M18858</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Kas,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Which I2C device you are using? &lt;/P&gt;&lt;P&gt;&lt;BR /&gt;Wish it helps.&lt;BR /&gt;best regards &lt;BR /&gt;Ma Hui&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, 26 Nov 2014 07:31:23 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/I2C-read-function-issues/m-p/366277#M18858</guid>
      <dc:creator>Hui_Ma</dc:creator>
      <dc:date>2014-11-26T07:31:23Z</dc:date>
    </item>
    <item>
      <title>Re: I2C read function issues</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/I2C-read-function-issues/m-p/366278#M18859</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello Ma, &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I am using a PmodTMP2 from Digilent that has a &lt;A href="http://www.analog.com/ADT7420" style="font-family: Arial, Geneva, Verdana, Helvetica; font-size: 14px; background-color: #fffffd;" target="_blank"&gt;Analog Devices ADT7420&lt;/A&gt; on board. I have added two 4.7k pull up resistors one to the SCL line and the other to the SDA line. I can see the KEA-64 sending data but when it comes to recive data from the ADT7420 the KEA-64 does not provide a clock source. I have tried a dummy read and a dummy write but neither seem to provide a clock source.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Kas&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 26 Nov 2014 18:27:16 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/I2C-read-function-issues/m-p/366278#M18859</guid>
      <dc:creator>kaslewis</dc:creator>
      <dc:date>2014-11-26T18:27:16Z</dc:date>
    </item>
    <item>
      <title>Re: Re: I2C read function issues</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/I2C-read-function-issues/m-p/366279#M18860</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Kas,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Analog Devices ADT7420 with the same I2C process with MMA8451 chip.&lt;/P&gt;&lt;P&gt;ADT7420 register read process:&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper" image-alt="ADT7420.jpg"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/47635i3D17B998511B6B76/image-size/large?v=v2&amp;amp;px=999" role="button" title="ADT7420.jpg" alt="ADT7420.jpg" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;MMA8451 register read process:&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper" image-alt="MM8451.jpg"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/47636iD65A5A1C0775D67B/image-size/large?v=v2&amp;amp;px=999" role="button" title="MM8451.jpg" alt="MM8451.jpg" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;Customer could refer K60 100MHz i2c_demo from attached file, which shows how to read data from MMA8451 chip.&lt;/P&gt;&lt;P&gt;I just abstract the read register processing for your reference:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;u8 hal_dev_mma8451_read_reg(u8 addr)&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; u8 result;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; i2c_start(I2C0_B);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; i2c_write_byte(I2C0_B, I2C_ADDR_MMA8451 | I2C_WRITE);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; i2c_wait(I2C0_B);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; i2c_get_ack(I2C0_B);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; i2c_write_byte(I2C0_B, addr);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; i2c_wait(I2C0_B);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; i2c_get_ack(I2C0_B);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; i2c_repeated_start(I2C0_B);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; i2c_write_byte(I2C0_B, I2C_ADDR_MMA8451 | I2C_READ);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; i2c_wait(I2C0_B);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; i2c_get_ack(I2C0_B);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; i2c_set_rx_mode(I2C0_B);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; i2c_give_nack(I2C0_B);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; result = i2c_read_byte(I2C0_B);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; i2c_wait(I2C0_B);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; i2c_stop(I2C0_B);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; result = i2c_read_byte(I2C0_B);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; pause();&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return result;&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;While K60_100MHz I2C module with a little different with KEA I2C module at I2Cx_FLT register.&lt;/P&gt;&lt;P&gt;Kinetis KE series product with the same I2C module with KEA product, there also with I2C read data from MM8451 example with Processor Expert project.&lt;/P&gt;&lt;P&gt;Customer could find related example from CW V10.6 installation path:&lt;/P&gt;&lt;P&gt;C:\Freescale\CW MCU v10.6\MCU\CodeWarrior_Examples\Processor_Expert\Kinetis\FRDM-KE06Z\I2C_PWM&lt;/P&gt;&lt;P&gt;I also attached that example at this thread for your reference.&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;Wish it helps.&lt;BR /&gt;best regards &lt;BR /&gt;Ma Hui&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>Thu, 27 Nov 2014 06:33:21 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/I2C-read-function-issues/m-p/366279#M18860</guid>
      <dc:creator>Hui_Ma</dc:creator>
      <dc:date>2014-11-27T06:33:21Z</dc:date>
    </item>
    <item>
      <title>Re: I2C read function issues</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/I2C-read-function-issues/m-p/366280#M18861</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello Ma, &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Can you please look over the code I have posted as it looks very similar, I just do not use macros I call everything explicitly. I have included output from the logic analyzer and as you can see the only thing missing is the clock needed for the device to replay to the KEA-64. I have looked at ALL the code you have provided but NOTHING seems to be working, therefore postinhg more code will NOT help, rather please look at what I have done and let me know what is wrong.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper" image-alt="2014-11-30 15_10_36-Saleae Logic 1.1.15 - [Connected] - [12 MHz, 1000 B Samples].jpg"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/47716i6E1FB5CF92912840/image-size/large?v=v2&amp;amp;px=999" role="button" title="2014-11-30 15_10_36-Saleae Logic 1.1.15 - [Connected] - [12 MHz, 1000 B Samples].jpg" alt="2014-11-30 15_10_36-Saleae Logic 1.1.15 - [Connected] - [12 MHz, 1000 B Samples].jpg" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 30 Nov 2014 20:14:21 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/I2C-read-function-issues/m-p/366280#M18861</guid>
      <dc:creator>kaslewis</dc:creator>
      <dc:date>2014-11-30T20:14:21Z</dc:date>
    </item>
    <item>
      <title>Re: I2C read function issues</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/I2C-read-function-issues/m-p/366281#M18862</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Kas,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I checked your code with below error:&lt;/P&gt;&lt;P&gt;in main() function, when you want to change I2C module mode from write to read, the below code is incorrect:&lt;/P&gt;&lt;P&gt;I2C0_C1 &amp;amp;= !I2C_C1_TX_MASK;&lt;/P&gt;&lt;P&gt;The correct code is :&lt;/P&gt;&lt;P&gt;I2C0_C1 &amp;amp;= ~I2C_C1_TX_MASK;&lt;/P&gt;&lt;P&gt;And when you want to get the ADT7420 ID value, it need to read I2C0_D register twice, please refer below code:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; i2c_give_nack(I2C0_B);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //your code is I2C0_C1 |= I2C_C1_TXAK_MASK;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; result = i2c_read_byte(I2C0_B);&amp;nbsp;&amp;nbsp; //your code is&amp;nbsp; replay = I2C0_D;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; i2c_wait(I2C0_B);&amp;nbsp;&amp;nbsp;&amp;nbsp; //your code is&amp;nbsp;&amp;nbsp;&amp;nbsp; while ((I2C0_S &amp;amp; I2C_S_IICIF_MASK) == 0){&amp;nbsp; //Wait for data to transmit&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; i2c_stop(I2C0_B);&amp;nbsp;&amp;nbsp;&amp;nbsp; //your code need to add as&amp;nbsp;&amp;nbsp; I2C0_C1&amp;nbsp; &amp;amp;= ~I2C_C1_MST_MASK;&amp;nbsp; I2C0_C1&amp;nbsp; &amp;amp;= ~I2C_C1_TX_MASK;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; result = i2c_read_byte(I2C0_B);&amp;nbsp; //your code need to add as&amp;nbsp;&amp;nbsp; replay = I2C0_D;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;Wish it helps.&lt;BR /&gt;best regards &lt;BR /&gt;Ma Hui&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, 03 Dec 2014 03:36:06 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/I2C-read-function-issues/m-p/366281#M18862</guid>
      <dc:creator>Hui_Ma</dc:creator>
      <dc:date>2014-12-03T03:36:06Z</dc:date>
    </item>
    <item>
      <title>Re: I2C read function issues</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/I2C-read-function-issues/m-p/366282#M18863</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello Ma, &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;From what I can see your code and my code is the same. Where you call a macro I use what is inside the macro. For example, i2c_wait(I2C_B) is exactly the same as &lt;SPAN style="color: #3d3d3d; font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif;"&gt;while ((I2C0_S &amp;amp; I2C_S_IICIF_MASK) == 0){&amp;nbsp; //Wait for data to transmit&amp;nbsp; } as this is defined in the header function, yet I am still having issues.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Can you please NOT use any macros an instead use the bare register in correcting what I have done wrong, because I still see nothing really different between what you and I have done.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Kas&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 09 Dec 2014 13:55:54 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/I2C-read-function-issues/m-p/366282#M18863</guid>
      <dc:creator>kaslewis</dc:creator>
      <dc:date>2014-12-09T13:55:54Z</dc:date>
    </item>
    <item>
      <title>Re: Re: I2C read function issues</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/I2C-read-function-issues/m-p/366283#M18864</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Kas,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Your code with below error:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;in main() function, when you want to change I2C module mode from write to read, the below code is incorrect:&lt;/P&gt;&lt;P&gt;&lt;STRONG style="color: #ff0000;"&gt;I2C0_C1 &amp;amp;= !I2C_C1_TX_MASK;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;The correct code is :&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #339966;"&gt;I2C0_C1 &amp;amp;= ~I2C_C1_TX_MASK;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;And when you want to get the ADT7420 ID value, it need to read I2C0_D register&lt;SPAN style="color: #339966;"&gt; twice&lt;/SPAN&gt;.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Wish it helps.&lt;BR /&gt;best regards &lt;BR /&gt;Ma Hui&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, 10 Dec 2014 01:57:28 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/I2C-read-function-issues/m-p/366283#M18864</guid>
      <dc:creator>Hui_Ma</dc:creator>
      <dc:date>2014-12-10T01:57:28Z</dc:date>
    </item>
    <item>
      <title>Re: I2C read function issues</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/I2C-read-function-issues/m-p/366284#M18865</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Kas,&lt;/P&gt;&lt;P&gt;I am also struck up in the same kind of problem.Please send me the I2C working code if you have finished it.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 20 Oct 2015 21:04:35 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/I2C-read-function-issues/m-p/366284#M18865</guid>
      <dc:creator>vignesh_vb_7</dc:creator>
      <dc:date>2015-10-20T21:04:35Z</dc:date>
    </item>
  </channel>
</rss>

