<?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>Kinetis MicrocontrollersのトピックFRDM KL25Z I2C don't working</title>
    <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/FRDM-KL25Z-I2C-don-t-working/m-p/394553#M21627</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi. I'm trying to write a program that will be transmitting one byte of data from the accelerometer via UART. Unfortunately this not working. By UART all the time is sent a value of "3A", an address "slave" accelerometer.&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper" image-alt="Bez&amp;nbsp;tytułu.png"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/55575iF045C2E2357F83CC/image-size/large?v=v2&amp;amp;px=999" role="button" title="Bez&amp;nbsp;tytułu.png" alt="Bez&amp;nbsp;tytułu.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;Up - UART terminal&lt;/P&gt;&lt;P&gt;I2C I initiated with the file header h, using KDS 2.0.&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper" image-alt="Bez&amp;nbsp;tytułu2.png"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/55603i7092D4E0B3142893/image-size/large?v=v2&amp;amp;px=999" role="button" title="Bez&amp;nbsp;tytułu2.png" alt="Bez&amp;nbsp;tytułu2.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;Program:&lt;/P&gt;&lt;P&gt;for(;;){&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; unsigned char Kp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; I2C0_C1 = I2C0_C1 | (1 &amp;lt;&amp;lt; 7);//Enable I2C&lt;/P&gt;&lt;P&gt;&amp;nbsp; I2C0_C1 = I2C0_C1 | (1 &amp;lt;&amp;lt; 4);//TX mode&lt;/P&gt;&lt;P&gt;&amp;nbsp; I2C0_C1 = I2C0_C1 | (1 &amp;lt;&amp;lt; 5);//start&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; I2C0_D=0x3A;//slave adress of accelerometer - Write&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; while ( !(I2C0_S &amp;amp; (1)) );//Wait for ACK from accelerometer&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; I2C0_D=0x01;//Sending accelerometer register adress&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; (1)) );//Wait for ACK from accelerometer&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; I2C0_C1 = I2C0_C1 | (1 &amp;lt;&amp;lt; 2);//Rstart&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; I2C0_D=0x3B;//slave adress of accelerometer - Read&lt;/P&gt;&lt;P&gt;&amp;nbsp; while ( !(I2C0_S &amp;amp; (1)) );//Wait for ACK from accelerometer&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; I2C0_C1 = I2C0_C1 &amp;amp; ~(1 &amp;lt;&amp;lt; 4);//clear TX&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; I2C0_C1 = I2C0_C1 | (1 &amp;lt;&amp;lt; 3);//set NACK&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Kp=I2C0_D;//receive data from I2C&lt;/P&gt;&lt;P&gt;&amp;nbsp; I2C0_C1 = I2C0_C1 &amp;amp; ~(1 &amp;lt;&amp;lt; 5);//set Stop&lt;/P&gt;&lt;P&gt;&amp;nbsp; I2C0_C1 = I2C0_C1 &amp;amp; ~(1 &amp;lt;&amp;lt; 7);//Disable I2C&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Transmisja(Kp);//Transmit byte value via UART&lt;/P&gt;&lt;P&gt;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;Please help.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;EDIT. When I changed the program (i add "while ( !(I2C0_S &amp;amp; (1&amp;lt;&amp;lt;7)) )"):&lt;/P&gt;&lt;P&gt;for(;;){&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; unsigned char Kp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; I2C0_C1 = I2C0_C1 | (1 &amp;lt;&amp;lt; 7);//Enable I2C&lt;/P&gt;&lt;P&gt;&amp;nbsp; I2C0_C1 = I2C0_C1 | (1 &amp;lt;&amp;lt; 4);//TX mode&lt;/P&gt;&lt;P&gt;&amp;nbsp; I2C0_C1 = I2C0_C1 | (1 &amp;lt;&amp;lt; 5);//start&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; I2C0_D=0x3A;//slave adress of accelerometer - Write&lt;/P&gt;&lt;P&gt;while ( !(I2C0_S &amp;amp; (1&amp;lt;&amp;lt;7)) );//Wait for end of trans.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; while ( !(I2C0_S &amp;amp; (1)) );//Wait for ACK from accelerometer&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; I2C0_D=0x01;//Sending accelerometer register adress&lt;/P&gt;&lt;P&gt;while ( !(I2C0_S &amp;amp; (1&amp;lt;&amp;lt;7)) );//Wait for end of trans.&lt;/P&gt;&lt;P&gt;&amp;nbsp; while ( !(I2C0_S &amp;amp; (1)) );//Wait for ACK from accelerometer&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; I2C0_C1 = I2C0_C1 | (1 &amp;lt;&amp;lt; 2);//Rstart&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; I2C0_D=0x3B;//slave adress of accelerometer - Read&lt;/P&gt;&lt;P&gt;while ( !(I2C0_S &amp;amp; (1&amp;lt;&amp;lt;7)) );//Wait for end of trans.&lt;/P&gt;&lt;P&gt;&amp;nbsp; while ( !(I2C0_S &amp;amp; (1)) );//Wait for ACK from accelerometer&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; I2C0_C1 = I2C0_C1 &amp;amp; ~(1 &amp;lt;&amp;lt; 4);//clear TX&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; I2C0_C1 = I2C0_C1 | (1 &amp;lt;&amp;lt; 3);//set NACK&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Kp=I2C0_D;//receive data from I2C&lt;/P&gt;&lt;P&gt;&amp;nbsp; I2C0_C1 = I2C0_C1 &amp;amp; ~(1 &amp;lt;&amp;lt; 5);//set Stop&lt;/P&gt;&lt;P&gt;&amp;nbsp; I2C0_C1 = I2C0_C1 &amp;amp; ~(1 &amp;lt;&amp;lt; 7);//Disable I2C&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Transmisja(Kp);//Transmit byte value via UART&lt;/P&gt;&lt;P&gt;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;Program send 00 once..and stop working&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 08 Jul 2015 16:43:24 GMT</pubDate>
    <dc:creator>wojciech22a</dc:creator>
    <dc:date>2015-07-08T16:43:24Z</dc:date>
    <item>
      <title>FRDM KL25Z I2C don't working</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/FRDM-KL25Z-I2C-don-t-working/m-p/394553#M21627</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi. I'm trying to write a program that will be transmitting one byte of data from the accelerometer via UART. Unfortunately this not working. By UART all the time is sent a value of "3A", an address "slave" accelerometer.&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper" image-alt="Bez&amp;nbsp;tytułu.png"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/55575iF045C2E2357F83CC/image-size/large?v=v2&amp;amp;px=999" role="button" title="Bez&amp;nbsp;tytułu.png" alt="Bez&amp;nbsp;tytułu.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;Up - UART terminal&lt;/P&gt;&lt;P&gt;I2C I initiated with the file header h, using KDS 2.0.&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper" image-alt="Bez&amp;nbsp;tytułu2.png"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/55603i7092D4E0B3142893/image-size/large?v=v2&amp;amp;px=999" role="button" title="Bez&amp;nbsp;tytułu2.png" alt="Bez&amp;nbsp;tytułu2.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;Program:&lt;/P&gt;&lt;P&gt;for(;;){&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; unsigned char Kp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; I2C0_C1 = I2C0_C1 | (1 &amp;lt;&amp;lt; 7);//Enable I2C&lt;/P&gt;&lt;P&gt;&amp;nbsp; I2C0_C1 = I2C0_C1 | (1 &amp;lt;&amp;lt; 4);//TX mode&lt;/P&gt;&lt;P&gt;&amp;nbsp; I2C0_C1 = I2C0_C1 | (1 &amp;lt;&amp;lt; 5);//start&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; I2C0_D=0x3A;//slave adress of accelerometer - Write&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; while ( !(I2C0_S &amp;amp; (1)) );//Wait for ACK from accelerometer&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; I2C0_D=0x01;//Sending accelerometer register adress&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; (1)) );//Wait for ACK from accelerometer&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; I2C0_C1 = I2C0_C1 | (1 &amp;lt;&amp;lt; 2);//Rstart&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; I2C0_D=0x3B;//slave adress of accelerometer - Read&lt;/P&gt;&lt;P&gt;&amp;nbsp; while ( !(I2C0_S &amp;amp; (1)) );//Wait for ACK from accelerometer&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; I2C0_C1 = I2C0_C1 &amp;amp; ~(1 &amp;lt;&amp;lt; 4);//clear TX&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; I2C0_C1 = I2C0_C1 | (1 &amp;lt;&amp;lt; 3);//set NACK&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Kp=I2C0_D;//receive data from I2C&lt;/P&gt;&lt;P&gt;&amp;nbsp; I2C0_C1 = I2C0_C1 &amp;amp; ~(1 &amp;lt;&amp;lt; 5);//set Stop&lt;/P&gt;&lt;P&gt;&amp;nbsp; I2C0_C1 = I2C0_C1 &amp;amp; ~(1 &amp;lt;&amp;lt; 7);//Disable I2C&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Transmisja(Kp);//Transmit byte value via UART&lt;/P&gt;&lt;P&gt;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;Please help.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;EDIT. When I changed the program (i add "while ( !(I2C0_S &amp;amp; (1&amp;lt;&amp;lt;7)) )"):&lt;/P&gt;&lt;P&gt;for(;;){&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; unsigned char Kp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; I2C0_C1 = I2C0_C1 | (1 &amp;lt;&amp;lt; 7);//Enable I2C&lt;/P&gt;&lt;P&gt;&amp;nbsp; I2C0_C1 = I2C0_C1 | (1 &amp;lt;&amp;lt; 4);//TX mode&lt;/P&gt;&lt;P&gt;&amp;nbsp; I2C0_C1 = I2C0_C1 | (1 &amp;lt;&amp;lt; 5);//start&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; I2C0_D=0x3A;//slave adress of accelerometer - Write&lt;/P&gt;&lt;P&gt;while ( !(I2C0_S &amp;amp; (1&amp;lt;&amp;lt;7)) );//Wait for end of trans.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; while ( !(I2C0_S &amp;amp; (1)) );//Wait for ACK from accelerometer&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; I2C0_D=0x01;//Sending accelerometer register adress&lt;/P&gt;&lt;P&gt;while ( !(I2C0_S &amp;amp; (1&amp;lt;&amp;lt;7)) );//Wait for end of trans.&lt;/P&gt;&lt;P&gt;&amp;nbsp; while ( !(I2C0_S &amp;amp; (1)) );//Wait for ACK from accelerometer&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; I2C0_C1 = I2C0_C1 | (1 &amp;lt;&amp;lt; 2);//Rstart&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; I2C0_D=0x3B;//slave adress of accelerometer - Read&lt;/P&gt;&lt;P&gt;while ( !(I2C0_S &amp;amp; (1&amp;lt;&amp;lt;7)) );//Wait for end of trans.&lt;/P&gt;&lt;P&gt;&amp;nbsp; while ( !(I2C0_S &amp;amp; (1)) );//Wait for ACK from accelerometer&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; I2C0_C1 = I2C0_C1 &amp;amp; ~(1 &amp;lt;&amp;lt; 4);//clear TX&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; I2C0_C1 = I2C0_C1 | (1 &amp;lt;&amp;lt; 3);//set NACK&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Kp=I2C0_D;//receive data from I2C&lt;/P&gt;&lt;P&gt;&amp;nbsp; I2C0_C1 = I2C0_C1 &amp;amp; ~(1 &amp;lt;&amp;lt; 5);//set Stop&lt;/P&gt;&lt;P&gt;&amp;nbsp; I2C0_C1 = I2C0_C1 &amp;amp; ~(1 &amp;lt;&amp;lt; 7);//Disable I2C&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Transmisja(Kp);//Transmit byte value via UART&lt;/P&gt;&lt;P&gt;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;Program send 00 once..and stop working&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 08 Jul 2015 16:43:24 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/FRDM-KL25Z-I2C-don-t-working/m-p/394553#M21627</guid>
      <dc:creator>wojciech22a</dc:creator>
      <dc:date>2015-07-08T16:43:24Z</dc:date>
    </item>
    <item>
      <title>Re: FRDM KL25Z I2C don't working</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/FRDM-KL25Z-I2C-don-t-working/m-p/394554#M21628</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello wojciech22a:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;There is a sample code package for KL25 (KL25_SC) which includes a simple driver for the on-board MMA8451 accelerometer so you don't have to write code from scratch. You can find it in the next product link, under "LAB and Test Software":&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code=FRDM-KL25Z&amp;amp;fpsp=1&amp;amp;tab=Design_Tools_Tab" title="http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code=FRDM-KL25Z&amp;amp;fpsp=1&amp;amp;tab=Design_Tools_Tab"&gt;Freescale Freedom Development Platform for Ki|Freescale&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;KL25 is also fully supported with the KSDK platform. More info here: &lt;A href="http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code=KINETIS-SDK&amp;amp;tid=redKINETIS_SDK" title="http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code=KINETIS-SDK&amp;amp;tid=redKINETIS_SDK"&gt;Software Development Kit for Kinetis MCUs|Freescale&lt;/A&gt;.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;... and getting started guides here:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="https://community.nxp.com/docs/DOC-103288"&gt;Writing my first KSDK1.2 Application in KDS3.0 - Hello World and Toggle LED with GPIO Interrupt&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="https://community.nxp.com/docs/DOC-106079"&gt;Line scan camera with KSDK [ADC + PIT + GPIO]&lt;/A&gt;&amp;nbsp; &amp;lt;- The KSDK guide in this link is targeted for FRDM-KL25.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;If you want to continue writing your own code, here is some feedback:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;- Poll the I2C_S[IICIF] flag instead of I2C_S[TCF], even if not using interrupts. The IICIF is more reliable than the TCF flag. Remember to clear the IICIF flag after each byte transfer by writing 1 to it.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;- Checking for I2C_S[RXAK] flag (acknowledge) in a loop is not useful. You should only check the flag after a transfer completes and then take action based on received ACK or NACK.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;- At the last stage where you try to read from the accelerometer, you are not polling for the transfer completion and you send the stop signal right away. This should be the sequence:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;1- Clear TX bit.&lt;/P&gt;&lt;P&gt;2- Set NACK.&lt;/P&gt;&lt;P&gt;3- I2C_D dummy read to start transfer (this generates the clocks in SCL line).&lt;/P&gt;&lt;P&gt;4- Wait/poll for transfer to complete (IICIF).&lt;/P&gt;&lt;P&gt;5- Send stop (MST = 0)&lt;/P&gt;&lt;P&gt;6- Set TX bit&lt;/P&gt;&lt;P&gt;7- Read I2C_D to get the valid received data.&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;Regards!,&lt;BR /&gt;Jorge Gonzalez&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>Fri, 10 Jul 2015 02:28:01 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/FRDM-KL25Z-I2C-don-t-working/m-p/394554#M21628</guid>
      <dc:creator>Jorge_Gonzalez</dc:creator>
      <dc:date>2015-07-10T02:28:01Z</dc:date>
    </item>
    <item>
      <title>Re: FRDM KL25Z I2C don't working</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/FRDM-KL25Z-I2C-don-t-working/m-p/394555#M21629</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thank Jorge for your help.&lt;/P&gt;&lt;P&gt;According to your instructions I changed the program on the following:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; I2C0_C1 = I2C0_C1 | (1 &amp;lt;&amp;lt; 7);//Enable I2C&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; for(;;){&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; unsigned char Kp;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; I2C0_C1 = I2C0_C1 | (1 &amp;lt;&amp;lt; 4);//TX mode&lt;/P&gt;&lt;P&gt;&amp;nbsp; I2C0_C1 = I2C0_C1 | (1 &amp;lt;&amp;lt; 5);//Start&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; I2C0_D=0x3A;//Slave adress of MMA8451Q -write&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; while ( !(I2C0_S &amp;amp; (1&amp;lt;&amp;lt;1)) );//Waiting of end of transmission -&amp;nbsp; IICIF&lt;/P&gt;&lt;P&gt;&amp;nbsp; I2C0_S = I2C0_S | (1 &amp;lt;&amp;lt; 1);//Set IICIF&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; I2C0_D=0x0D;//sending adress of register "WHO AM I"&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; while ( !(I2C0_S &amp;amp; (1&amp;lt;&amp;lt;1)) );//Waiting of end of transmission&lt;/P&gt;&lt;P&gt;&amp;nbsp; I2C0_S = I2C0_S | (1 &amp;lt;&amp;lt; 1);//Set IICIF&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; I2C0_C1 = I2C0_C1 | (1 &amp;lt;&amp;lt; 2);//Rstart&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; I2C0_D=0x3B;//Slave adress of MMA8451Q - read&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; while ( !(I2C0_S &amp;amp; (1&amp;lt;&amp;lt;1)) );//Waiting of end of transmission -&amp;nbsp; IICIF&lt;/P&gt;&lt;P&gt;&amp;nbsp; I2C0_S = I2C0_S | (1 &amp;lt;&amp;lt; 1);//Set IICIF&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; I2C0_C1 = I2C0_C1 &amp;amp; ~(1 &amp;lt;&amp;lt; 4);//RX mode&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; I2C0_C1 = I2C0_C1 | (1 &amp;lt;&amp;lt; 3);//set NACK&lt;/P&gt;&lt;P&gt;&amp;nbsp; // Kp=I2C0_D;&lt;/P&gt;&lt;P&gt;&amp;nbsp; while (! (I2C0_S &amp;amp; (1&amp;lt;&amp;lt;1)) );//Wait for end of trans -receive - IICIF&lt;/P&gt;&lt;P&gt;&amp;nbsp; I2C0_C1 = I2C0_C1 &amp;amp; ~(1 &amp;lt;&amp;lt; 5);//STOP&lt;/P&gt;&lt;P&gt;&amp;nbsp; I2C0_C1 = I2C0_C1 | (1 &amp;lt;&amp;lt; 4);//TX mode&lt;/P&gt;&lt;P&gt;&amp;nbsp; Kp=I2C0_D;//Receive data&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Transmisja(Kp);//Transmit via uart&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;But this program is also not working. He is not sending anything via UART.Program is stopping on the one of the "while" loop&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 10 Jul 2015 14:17:02 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/FRDM-KL25Z-I2C-don-t-working/m-p/394555#M21629</guid>
      <dc:creator>wojciech22a</dc:creator>
      <dc:date>2015-07-10T14:17:02Z</dc:date>
    </item>
    <item>
      <title>Re: FRDM KL25Z I2C don't working</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/FRDM-KL25Z-I2C-don-t-working/m-p/394556#M21630</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Try with this conditonal statement:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;while((I2C0_S &amp;amp; I2C_S_IICIF_MASK)==0);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards!&lt;/P&gt;&lt;P&gt;Jorge Gonzalez&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 13 Jul 2015 23:51:41 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/FRDM-KL25Z-I2C-don-t-working/m-p/394556#M21630</guid>
      <dc:creator>Jorge_Gonzalez</dc:creator>
      <dc:date>2015-07-13T23:51:41Z</dc:date>
    </item>
    <item>
      <title>Re: FRDM KL25Z I2C don't working</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/FRDM-KL25Z-I2C-don-t-working/m-p/394557#M21631</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thank, but still do not working. I Also set IICE bit in C1 register, without any results. Futher part of configuration register:&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper" image-alt="Bez&amp;nbsp;tytułu.png"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/55229iE02ADC956CD26B05/image-size/large?v=v2&amp;amp;px=999" role="button" title="Bez&amp;nbsp;tytułu.png" alt="Bez&amp;nbsp;tytułu.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;Maybe the problem is that i using PTA1 and PTA2 pins on OpenSDA virtual COM connection. But i dont think so because this is another I / O port than PTE24 and PTA24 in which and using i2c interface. Or maybe other I2C settings:&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper" image-alt="Przechwytywanie2.PNG"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/55267iB090C099F94E15EC/image-size/large?v=v2&amp;amp;px=999" role="button" title="Przechwytywanie2.PNG" alt="Przechwytywanie2.PNG" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jul 2015 18:21:00 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/FRDM-KL25Z-I2C-don-t-working/m-p/394557#M21631</guid>
      <dc:creator>wojciech22a</dc:creator>
      <dc:date>2015-07-15T18:21:00Z</dc:date>
    </item>
    <item>
      <title>Re: FRDM KL25Z I2C don't working</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/FRDM-KL25Z-I2C-don-t-working/m-p/394558#M21632</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;The project has processor expert support. Why are writing to registers directly instead of using Processor Expert APIs?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;You can use the provided methods (&lt;STRONG&gt;SendBlock&lt;/STRONG&gt;, &lt;STRONG&gt;ReceiveBlock&lt;/STRONG&gt;) to create your application. Also, do not enable interrupts if you plan to use polling method. Or the other way, enable the interrupts but do not poll the I2C flags, instead fill the interrupt service routine with the required code.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Actually, there is a good tutorial by colleague Erich Styger to use the on-board accelerometer of FRDM-KL25Z. Have a look to this link:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://mcuoneclipse.com/2012/09/21/tutorial-accelerating-the-kl25z-freedom-board/" title="http://mcuoneclipse.com/2012/09/21/tutorial-accelerating-the-kl25z-freedom-board/"&gt;Tutorial: Accelerating the KL25Z Freedom Board | MCU on Eclipse&lt;/A&gt; &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;And also a custom component targeted specifically for the accelerometer:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://mcuoneclipse.com/2013/04/13/extended-driver-for-the-mma8451q-accelerometer/" title="http://mcuoneclipse.com/2013/04/13/extended-driver-for-the-mma8451q-accelerometer/"&gt;Extended Driver for the MMA8451Q Accelerometer | MCU on Eclipse&lt;/A&gt; &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards!&lt;/P&gt;&lt;P&gt;Jorge Gonzalez&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jul 2015 19:44:32 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/FRDM-KL25Z-I2C-don-t-working/m-p/394558#M21632</guid>
      <dc:creator>Jorge_Gonzalez</dc:creator>
      <dc:date>2015-07-15T19:44:32Z</dc:date>
    </item>
  </channel>
</rss>

