<?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 on kinetis in Kinetis Microcontrollers</title>
    <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/i2c-on-kinetis/m-p/269185#M8965</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;The typical wait time is 3ms associated with each conversion type.&lt;/P&gt;&lt;P&gt;Another clue is please check the capacitor value for the capacitor of pin CAP. This capacitor is used as a decoupling capacitor for main internal regulator. Typical (recommended) value of this capacitor is 1uF, other values may cause a malfunction on the internal regulator and so, make the device to fail.&lt;/P&gt;&lt;P&gt;&lt;SPAN class="mce_paste_marker"&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Thu, 18 Apr 2013 07:42:38 GMT</pubDate>
    <dc:creator>Hui_Ma</dc:creator>
    <dc:date>2013-04-18T07:42:38Z</dc:date>
    <item>
      <title>i2c on kinetis</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/i2c-on-kinetis/m-p/269176#M8956</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi all!&lt;/P&gt;&lt;P&gt;I'm trying to use sensors with I2C-interface. To understand i2c protoloc, i started with example from CW package (using MMA7660 accelerometer). And ti works great. Next, i started to write a code for communicating with MPL115A2 (barometer) and encountered a problem with reading from sensor. I tried different variation (i really don't know what's the problem) and it returns zeros, slave address, register address.&lt;/P&gt;&lt;PRE __default_attr="c++" __jive_macro_name="code" class="_jivemacro_uid_13660954654432081 jive_text_macro jive_macro_code" jivemacro_uid="_13660954654432081" modifiedtitle="true"&gt;
&lt;P&gt;unsigned int j,i;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; unsigned char slaveID;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; /* Send Slave address */&lt;/P&gt;
&lt;P&gt;&amp;nbsp; slaveID = (MPL115A &amp;lt;&amp;lt; 1) | 0x00; //read from MPL115&lt;/P&gt;
&lt;P&gt;&amp;nbsp; i2c_Start();&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp; i2c_write_byte(slaveID); //send address&lt;/P&gt;
&lt;P&gt;&amp;nbsp; i2c_Wait();&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp; /* Send address of register */&lt;/P&gt;
&lt;P&gt;&amp;nbsp; i2c_write_byte(0x04);&lt;/P&gt;
&lt;P&gt;&amp;nbsp; i2c_Wait();&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp; /* swith to read mode */&lt;/P&gt;
&lt;P&gt;&amp;nbsp; slaveID = (MPL115A &amp;lt;&amp;lt; 1) | 0x01; //set slaveID for read&lt;/P&gt;
&lt;P&gt;&amp;nbsp; i2c_RepeatedStart() //repeated 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;&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&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;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; /* Turn off ACK */&lt;/P&gt;
&lt;P&gt;&amp;nbsp; I2C0_C1 |= I2C_C1_TXAK_MASK;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp; for(j = 0; j &amp;lt; 8; j++)&lt;/P&gt;
&lt;P&gt;&amp;nbsp; {&lt;/P&gt;
&lt;P&gt;&amp;nbsp; dataArray[j] = I2C0_D;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; i2c_Wait();&lt;/P&gt;
&lt;P&gt;&amp;nbsp; }&lt;/P&gt;
&lt;P&gt;i2c_stop();&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;/PRE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 16 Apr 2013 06:57:18 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/i2c-on-kinetis/m-p/269176#M8956</guid>
      <dc:creator>GerasinIvan</dc:creator>
      <dc:date>2013-04-16T06:57:18Z</dc:date>
    </item>
    <item>
      <title>Re: i2c on kinetis</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/i2c-on-kinetis/m-p/269177#M8957</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Ivan,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I find your code line 22 has error:&lt;/P&gt;&lt;P&gt;&lt;SPAN class="comment"&gt;/* Turn off ACK */&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt; I2C0_C1 |= I2C_C1_TXAK_MASK; &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The correct code is:&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* Ensure TXAK bit is 0 */&lt;/P&gt;&lt;P&gt;&amp;nbsp; I2C0_C1 &amp;amp;= ~I2C_C1_TXAK_MASK;&lt;/P&gt;&lt;P&gt;&lt;SPAN class="mce_paste_marker"&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Wish it helps.&lt;/P&gt;&lt;P&gt;&lt;SPAN class="mce_paste_marker"&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 16 Apr 2013 09:25:41 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/i2c-on-kinetis/m-p/269177#M8957</guid>
      <dc:creator>Hui_Ma</dc:creator>
      <dc:date>2013-04-16T09:25:41Z</dc:date>
    </item>
    <item>
      <title>Re: i2c on kinetis</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/i2c-on-kinetis/m-p/269178#M8958</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thx, i didn't see it. But it didn't help - nothing chanched. &lt;/P&gt;&lt;P&gt;Also - i put it in while() cycle, and it works only one time. It returns slave address in read mode (slaveID |= 0x01) in first array element and zeros in other elements.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 16 Apr 2013 10:01:13 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/i2c-on-kinetis/m-p/269178#M8958</guid>
      <dc:creator>GerasinIvan</dc:creator>
      <dc:date>2013-04-16T10:01:13Z</dc:date>
    </item>
    <item>
      <title>Re: i2c on kinetis</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/i2c-on-kinetis/m-p/269179#M8959</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Please refer below recommend I2C communication structure:&lt;/P&gt;&lt;P&gt;For “Start Pressure and Temperature Conversion, Read raw Pressure”: &lt;BR /&gt;Start -&amp;gt; 0x60+W -&amp;gt; ACK -&amp;gt; 0x12 -&amp;gt; ACK -&amp;gt; &lt;STRONG&gt;0x01&lt;/STRONG&gt; -&amp;gt; Stop&lt;BR /&gt;*The typical delay is 3ms.&lt;BR /&gt;Start -&amp;gt; 0x60+W -&amp;gt; ACK -&amp;gt; 0x00 -&amp;gt; ACK -&amp;gt; &lt;BR /&gt;Restart -&amp;gt; 0x60+R -&amp;gt; ACK -&amp;gt; data from slave (0xMSB Pressure) -&amp;gt; ACK -&amp;gt; data from slave (0xLSB Pressure) -&amp;gt; data from slave (0xMSB Temperature) -&amp;gt; data from slave (0xLSB temperature) -&amp;gt; Stop&lt;/P&gt;&lt;P&gt;For Read Coefficients:&lt;BR /&gt;[Start], 0x60+[W], 0x04&lt;BR /&gt;[Restart], 0x60+[R], COEF1, COEF2, COEF3, COEF4, COEF5, COEF6, COEF7, COEF8, COEF9, COEF10, COEF11, COEF12, [Stop]&lt;/P&gt;&lt;P&gt;Note: &lt;BR /&gt;1&amp;gt; It need the 0x01 in the first line, since this is a pointer to the register and without it, it will never start the conversion.&lt;BR /&gt;2&amp;gt; We have a Start signal before the read, it must be a Restart signal, or should be in separate instructions, like:&lt;BR /&gt; Start -&amp;gt; 0x60+W -&amp;gt; ACK -&amp;gt; 0x00 -&amp;gt; ACK -&amp;gt; Stop&lt;BR /&gt;Start -&amp;gt; 0x60+R - &amp;gt; ACK - &amp;gt; data from slave - &amp;gt; ACK -&amp;gt; data from slave -&amp;gt; Stop&lt;BR /&gt;3&amp;gt; the typical wait time is 3ms&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Wish it helps.&lt;/P&gt;&lt;P&gt;&lt;SPAN class="mce_paste_marker"&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 17 Apr 2013 03:39:50 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/i2c-on-kinetis/m-p/269179#M8959</guid>
      <dc:creator>Hui_Ma</dc:creator>
      <dc:date>2013-04-17T03:39:50Z</dc:date>
    </item>
    <item>
      <title>Re: i2c on kinetis</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/i2c-on-kinetis/m-p/269180#M8960</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I'm just trying to read coefficients (source code in original post). I'm doing it just like you tell.May be there is a problems in i2c functions, but i'm not sure.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#define i2c_RepeatedStart()&amp;nbsp;&amp;nbsp;&amp;nbsp; I2C0_C1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |= 0x04;&lt;/P&gt;&lt;P&gt;&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&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; 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;&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;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#define i2c_EnterRxMode()&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; I2C0_C1&amp;nbsp;&amp;nbsp; &amp;amp;= ~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; I2C0_C1&amp;nbsp;&amp;nbsp; &amp;amp;= ~I2C_C1_TXAK_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;#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;&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;&amp;nbsp; I2C0_S |= I2C_S_IICIF_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;#define i2c_write_byte(data)&amp;nbsp;&amp;nbsp; I2C0_D = data&lt;/P&gt;&lt;P&gt;&lt;SPAN class="mce_paste_marker"&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class="mce_paste_marker"&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 17 Apr 2013 08:18:14 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/i2c-on-kinetis/m-p/269180#M8960</guid>
      <dc:creator>GerasinIvan</dc:creator>
      <dc:date>2013-04-17T08:18:14Z</dc:date>
    </item>
    <item>
      <title>Re: i2c on kinetis</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/i2c-on-kinetis/m-p/269181#M8961</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I recommend you check with a Logic Analyzer what is going on with the I2C bus.&lt;/P&gt;&lt;P&gt;Additionally, carefully check the errata of the device you are using. If you are using the KL25Z, then there is a known issue that the repeated start transaction is not correct on the bus:&lt;/P&gt;&lt;P&gt;&lt;A href="http://mcuoneclipse.com/2012/12/05/kl25z-and-i2c-missing-repeated-start-condition/" title="http://mcuoneclipse.com/2012/12/05/kl25z-and-i2c-missing-repeated-start-condition/"&gt;KL25Z and I2C: Missing Repeated Start Condition | MCU on Eclipse&lt;/A&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 17 Apr 2013 10:03:53 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/i2c-on-kinetis/m-p/269181#M8961</guid>
      <dc:creator>BlackNight</dc:creator>
      <dc:date>2013-04-17T10:03:53Z</dc:date>
    </item>
    <item>
      <title>Re: i2c on kinetis</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/i2c-on-kinetis/m-p/269182#M8962</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I think i'm close to solution of problem. At this moment i have a 3 sensors:&lt;/P&gt;&lt;P&gt;MMA7660 accelometer&lt;/P&gt;&lt;P&gt;MPL115A barometer&lt;/P&gt;&lt;P&gt;SHT21 tempreture and humidity sensor.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I can work with accelerometer corretly. So I take a source code from i2c functions for MMA7660, and changed address to SHT21. From SHT21 i can read with 2 modes - hold master and no hold master.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Hold master and No hold master:&lt;/P&gt;&lt;BLOCKQUOTE&gt;
&lt;P&gt;In the&amp;nbsp; hold master mode, the SHT2x&amp;nbsp; pulls down the SCL line&amp;nbsp; while measuring&amp;nbsp; to force the master into a wait state. By releasing the SCL linethe sensor indicates that internal processing is terminated and that transmission may be continued.&lt;/P&gt;

&lt;/BLOCKQUOTE&gt;&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;SPAN style="font-size: 10pt; line-height: 1.5em;"&gt;In&amp;nbsp; no hold master mode, the MCU has to poll for the &lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; line-height: 1.5em;"&gt;termination of the internal processing of the sensor. This is &lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; line-height: 1.5em;"&gt;done by sending a Start condition followed by the I2C &lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; line-height: 1.5em;"&gt;header (1000’0001) as shown in&amp;nbsp; Figure&amp;nbsp; 14. If the internal &lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; line-height: 1.5em;"&gt;processing is finished, the sensor acknowledges the poll of &lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; line-height: 1.5em;"&gt;the MCU and data can be read by the MCU. If the &lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; line-height: 1.5em;"&gt;measurement processing is not finished the sensor &lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; line-height: 1.5em;"&gt;answers no ACK bit and the Start&amp;nbsp; condition must be &lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; line-height: 1.5em;"&gt;issued once more.&lt;/SPAN&gt;&lt;/P&gt;

&lt;/BLOCKQUOTE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;source code:&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;unsigned char result;&lt;/SPAN&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp; unsigned int j;&lt;/SPAN&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp; /* Send Slave Address */&lt;/SPAN&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp; &lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp; /* send start signal */&lt;/SPAN&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp; i2c_Start();&lt;/SPAN&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp; /* send ID with W/R bit */&lt;/SPAN&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp; i2c_write_byte((SHT21 &amp;lt;&amp;lt; 1));&lt;/SPAN&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp; &lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp; i2c_Wait();&lt;/SPAN&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp; /* Write Register Address */&lt;/SPAN&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp; I2C0_D = u8RegisterAddress;&lt;/SPAN&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp; i2c_Wait();&lt;/SPAN&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp; /* Do a repeated start */&lt;/SPAN&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp; I2C0_C1 |= I2C_C1_RSTA_MASK;&lt;/SPAN&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp; /* Send Slave Address */&lt;/SPAN&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp; I2C0_D = (SHT21 &amp;lt;&amp;lt; 1) | 0x01; //read address&lt;/SPAN&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp; i2c_Wait();&lt;/SPAN&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp; /* Put in Rx Mode */&lt;/SPAN&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp; I2C0_C1 &amp;amp;= (~I2C_C1_TX_MASK);&lt;/SPAN&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp; /* Turn off ACK */&lt;/SPAN&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp; I2C0_C1 |= I2C_C1_TXAK_MASK;&lt;/SPAN&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp; /* Dummy read */&lt;/SPAN&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp; result = I2C0_D;&lt;/SPAN&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp; for (j=0; j&amp;lt;5000; j++){};&lt;/SPAN&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp; i2c_Wait();&lt;/SPAN&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp; &lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp; /* Send stop */&lt;/SPAN&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp; I2C0_C1&amp;nbsp; &amp;amp;= ~I2C_C1_MST_MASK;&lt;/SPAN&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp; i2c_Stop();&lt;/SPAN&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp; result = I2C0_D ;&lt;/SPAN&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp; Pause();&lt;/SPAN&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp; return result;&lt;/SPAN&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&lt;SPAN class="mce_paste_marker"&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;When i read in NO hold master i receive 0xff values. In hold master - all OK. I get a tempreture. So, may be here a problem with timing barometer? What can you advice?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;And secod question:&lt;/P&gt;&lt;P&gt;Function above putted in while() cycle. So in ideal it will work permanently. But If i switch i2c_Stop() and result = I2C0_D ("result" before "stop") it will works only 1 time. What happens?&lt;/P&gt;&lt;P&gt;Thx for helping&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 17 Apr 2013 11:32:30 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/i2c-on-kinetis/m-p/269182#M8962</guid>
      <dc:creator>GerasinIvan</dc:creator>
      <dc:date>2013-04-17T11:32:30Z</dc:date>
    </item>
    <item>
      <title>Re: i2c on kinetis</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/i2c-on-kinetis/m-p/269183#M8963</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Ivan,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;To answer your second question, it sounds like you might not be waiting for long enough between issuing the stop signal and issuing the start signal.&amp;nbsp; Have you tried increasing the amount of time you Pause() function waits?&amp;nbsp; If you have to wait for 1ms or longer then it's probably something else (and that's a conservative estimate). &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Hope that helps, &lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 17 Apr 2013 14:32:50 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/i2c-on-kinetis/m-p/269183#M8963</guid>
      <dc:creator>chris_brown</dc:creator>
      <dc:date>2013-04-17T14:32:50Z</dc:date>
    </item>
    <item>
      <title>Re: i2c on kinetis</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/i2c-on-kinetis/m-p/269184#M8964</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I have tried to wait longer but it's not helps. It seems problem not here. I have no idea what's the problem(&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 18 Apr 2013 06:40:41 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/i2c-on-kinetis/m-p/269184#M8964</guid>
      <dc:creator>GerasinIvan</dc:creator>
      <dc:date>2013-04-18T06:40:41Z</dc:date>
    </item>
    <item>
      <title>Re: i2c on kinetis</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/i2c-on-kinetis/m-p/269185#M8965</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;The typical wait time is 3ms associated with each conversion type.&lt;/P&gt;&lt;P&gt;Another clue is please check the capacitor value for the capacitor of pin CAP. This capacitor is used as a decoupling capacitor for main internal regulator. Typical (recommended) value of this capacitor is 1uF, other values may cause a malfunction on the internal regulator and so, make the device to fail.&lt;/P&gt;&lt;P&gt;&lt;SPAN class="mce_paste_marker"&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 18 Apr 2013 07:42:38 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/i2c-on-kinetis/m-p/269185#M8965</guid>
      <dc:creator>Hui_Ma</dc:creator>
      <dc:date>2013-04-18T07:42:38Z</dc:date>
    </item>
    <item>
      <title>Re: i2c on kinetis</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/i2c-on-kinetis/m-p/269186#M8966</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif';"&gt;In addition to Hui’s recommendation, make sure that both RST and SHDN pins are driven high. &lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 18 Apr 2013 12:00:24 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/i2c-on-kinetis/m-p/269186#M8966</guid>
      <dc:creator>TomasVaverka</dc:creator>
      <dc:date>2013-04-18T12:00:24Z</dc:date>
    </item>
    <item>
      <title>Re: i2c on kinetis</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/i2c-on-kinetis/m-p/269187#M8967</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Ivan,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Recently I was working on the implementation of the IIC for the sensors on the TOWER-SENSOR boards. I think that all of mentioned sensors are included into this implementation. You can try to look or use the source code for this solution (it is S08QE based).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Pavel&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 19 Apr 2013 05:47:16 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/i2c-on-kinetis/m-p/269187#M8967</guid>
      <dc:creator>pavel_krenek</dc:creator>
      <dc:date>2013-04-19T05:47:16Z</dc:date>
    </item>
  </channel>
</rss>

