<?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のトピックRe: MKL03Z: I2C module: Cannot send a &amp;quot;start&amp;quot; without sending a &amp;quot;stop&amp;quot; prior</title>
    <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/MKL03Z-I2C-module-Cannot-send-a-quot-start-quot-without-sending/m-p/677890#M41721</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;&lt;SPAN&gt;See the appendix of &lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.nxp.com/external-link.jspa?url=http%3A%2F%2Fwww.utasker.com%2Fdocs%2FuTasker%2FuTasker_I2C.pdf" rel="nofollow" target="_blank"&gt;http://www.utasker.com/docs/uTasker/uTasker_I2C.pdf&lt;/A&gt;&lt;SPAN&gt; for details about the issue and the way to work around it.&lt;/SPAN&gt;&lt;BR /&gt;If you would like an immediate and complete solution proven in many industrial products using double-buffered I2C Kinetis parts just use the uTasker Open Source project (link below) which also simulates your chip and the I2C operation.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;Regards&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Mark&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;A class="jive-link-external-small" href="https://community.nxp.com/external-link.jspa?url=http%3A%2F%2Fwww.utasker.com%2Fkinetis.html" rel="nofollow" target="_blank"&gt;http://www.utasker.com/kinetis.html&lt;/A&gt;&lt;BR /&gt;&lt;A class="jive-link-external-small" href="https://community.nxp.com/external-link.jspa?url=http%3A%2F%2Fwww.utasker.com%2Fkinetis%2FFRDM-KL03Z.html" rel="nofollow" target="_blank"&gt;http://www.utasker.com/kinetis/FRDM-KL03Z.html&lt;/A&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Thu, 29 Jun 2017 15:23:05 GMT</pubDate>
    <dc:creator>mjbcswitzerland</dc:creator>
    <dc:date>2017-06-29T15:23:05Z</dc:date>
    <item>
      <title>MKL03Z: I2C module: Cannot send a "start" without sending a "stop" prior</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/MKL03Z-I2C-module-Cannot-send-a-quot-start-quot-without-sending/m-p/677887#M41718</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I have a question on using the I2Cmodule. I am writing the driver for&amp;nbsp;an I2C EEPROM and I need to do the following for performing a read operation on the EEPROM. Note that after sending the address of the byte I want to read, I have to send a start again (without a preceeding stop). This doesn’t seem to be possible in I2C module.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;span class="lia-inline-image-display-wrapper"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/25992iD6C5FC7214FEF1C5/image-size/large?v=v2&amp;amp;px=999" title="read.jpg" alt="read.jpg" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;How I am trying to achieve this is by doing two transactions on the I2C bus. First to write the “Byte addr” bytes. This I am ending without a STOP bit. The next to read the data byte.&lt;/P&gt;&lt;P&gt;==============&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 8.0pt;"&gt;bool eeprom_read_byte(uint16_t address, uint8_t * data){&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 8.0pt;"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 8.0pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Get the I2C instance handle&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 8.0pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; I2C_Type * i2c_handle = NULL;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 8.0pt;"&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; i2c_handle = i2c_shared_init();&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 8.0pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 8.0pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;i2c_master_transfer_t masterXfer = {&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 8.0pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .slaveAddress&amp;nbsp;&amp;nbsp; = EEPROM_I2C_SLAVE_ADDR_7BIT,&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 8.0pt;"&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .direction&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = &lt;SPAN style="background: lime;"&gt;kI2C_Write&lt;/SPAN&gt;,&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 8.0pt;"&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .subaddress&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = (uint32_t) address,&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 8.0pt;"&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .subaddressSize = &lt;SPAN style="background: lime;"&gt;2&lt;/SPAN&gt;,&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 8.0pt;"&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .data&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = NULL,&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 8.0pt;"&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .dataSize&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = &lt;SPAN style="background: lime;"&gt;0&lt;/SPAN&gt;,&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 8.0pt;"&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .flags&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;= &lt;SPAN style="background: lime;"&gt;kI2C_TransferNoStopFlag&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 8.0pt;"&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; };&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 8.0pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 8.0pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;status_t status = I2C_MasterTransferBlocking( i2c_handle, &amp;amp;masterXfer );&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 8.0pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 8.0pt;"&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; if( kStatus_Success != status ){&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 8.0pt;"&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PRINTF(("%s[%d], %s() - I2C_MasterTransferBlocking failed: %d\r\n", __FILE__, __LINE__, __func__, status));&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 8.0pt;"&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return FAILED;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 8.0pt;"&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; }&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 8.0pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 8.0pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;masterXfer.slaveAddress&amp;nbsp;&amp;nbsp; = EEPROM_I2C_SLAVE_ADDR_7BIT;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 8.0pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; masterXfer.direction&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = &lt;SPAN style="background: lime;"&gt;kI2C_Read&lt;/SPAN&gt;;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 8.0pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; masterXfer.subaddress&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = (uint32_t) address;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 8.0pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; masterXfer.subaddressSize = &lt;SPAN style="background: lime;"&gt;0&lt;/SPAN&gt;;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 8.0pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; masterXfer.data&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = data;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 8.0pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; masterXfer.dataSize&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = &lt;SPAN style="background: lime;"&gt;1&lt;/SPAN&gt;;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 8.0pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; masterXfer.flags&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = &lt;SPAN style="background: lime;"&gt;kI2C_TransferDefaultFlag&lt;/SPAN&gt;;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 8.0pt; color: red;"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 8.0pt; color: red;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; status = I2C_MasterTransferBlocking( i2c_handle, &amp;amp;masterXfer ); &lt;/SPAN&gt;&lt;SPAN style="font-size: 8.0pt; color: red;"&gt;è&lt;/SPAN&gt;&lt;SPAN style="font-size: 8.0pt; color: red;"&gt; This always returns error&lt;/SPAN&gt; &lt;SPAN style="font-size: 8.0pt; color: red;"&gt;kStatus_I2C_Busy&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 8.0pt;"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 8.0pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (kStatus_Success != status){&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 8.0pt;"&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PRINTF(("%s[%d], %s() - I2C_MasterTransferBlocking failed: %d\r\n", __FILE__, __LINE__, __func__, status));&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 8.0pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return FAILED;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 8.0pt;"&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; }&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 8.0pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 8.0pt;"&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; return SUCCESSFUL;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 8.0pt;"&gt;}&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;==============&lt;/P&gt;&lt;P&gt;The “&lt;SPAN style="color: red;"&gt;kStatus_I2C_Busy&lt;/SPAN&gt;” is returned from the following code inside I2C_MasterStart() function and below is the explanation of this from the reference manual.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Return an error if the bus is already in use. */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (statusFlags &amp;amp; kI2C_BusBusyFlag)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; result = kStatus_I2C_Busy;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;span class="lia-inline-image-display-wrapper"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/26142i73BBE816CDDC5AB4/image-size/large?v=v2&amp;amp;px=999" title="rm.jpg" alt="rm.jpg" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;Please suggest me how I can achieve the I2C communication needed to perform a read operation on this I2C EEPROM.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 29 Jun 2017 08:23:38 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/MKL03Z-I2C-module-Cannot-send-a-quot-start-quot-without-sending/m-p/677887#M41718</guid>
      <dc:creator>gauravbanyal</dc:creator>
      <dc:date>2017-06-29T08:23:38Z</dc:date>
    </item>
    <item>
      <title>Re: MKL03Z: I2C module: Cannot send a "start" without sending a "stop" prior</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/MKL03Z-I2C-module-Cannot-send-a-quot-start-quot-without-sending/m-p/677888#M41719</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Look up 'Repeated Start'. &amp;nbsp;Note that parts that have double buffered I2C has &amp;nbsp;a bug in them related to Repeated Start.&lt;BR /&gt;There have been several discussion here on how to work around the issue.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 29 Jun 2017 12:33:40 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/MKL03Z-I2C-module-Cannot-send-a-quot-start-quot-without-sending/m-p/677888#M41719</guid>
      <dc:creator>bobpaddock</dc:creator>
      <dc:date>2017-06-29T12:33:40Z</dc:date>
    </item>
    <item>
      <title>Re: MKL03Z: I2C module: Cannot send a "start" without sending a "stop" prior</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/MKL03Z-I2C-module-Cannot-send-a-quot-start-quot-without-sending/m-p/677889#M41720</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello Bob,&amp;nbsp;&lt;/P&gt;&lt;P&gt;Now my understanding is that a repeated start&amp;nbsp;means when a "start" is sent without a "stop" preceding it. I now think I was doing it wrong earlier. So I changed the red colored code below to "&lt;SPAN&gt;masterXfer.flags = &lt;/SPAN&gt;kI2C_TransferRepeatedStartFlag". With this, I see that the read is sent on the bus. Now the problem is that no data is returned.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;==========&lt;/P&gt;&lt;P&gt;masterXfer.slaveAddress&amp;nbsp;&amp;nbsp; = EEPROM_I2C_SLAVE_ADDR_7BIT;&lt;/P&gt;&lt;P&gt;masterXfer.direction&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = kI2C_Read;&lt;/P&gt;&lt;P&gt;masterXfer.subaddress&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = (uint32_t) address;&lt;/P&gt;&lt;P&gt;masterXfer.subaddressSize = 0;&lt;/P&gt;&lt;P&gt;masterXfer.data&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = data;&lt;/P&gt;&lt;P&gt;masterXfer.dataSize&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = 1;&lt;/P&gt;&lt;P&gt;masterXfer.flags&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = &lt;SPAN style="color: #ff0000;"&gt;kI2C_TransferDefaultFlag;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;status = I2C_MasterTransferBlocking( i2c_handle, &amp;amp;masterXfer ); //&amp;nbsp;This always returns error kStatus_I2C_Busy&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;==========&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;With this change following is what I see on the scope:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/24386iB94782B6DC46DE44/image-size/large?v=v2&amp;amp;px=999" title="IMG_5039.JPG" alt="IMG_5039.JPG" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Could you please elaborate on the workaround or could you point me to the right discussion on the forum which talks about this case?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks,&lt;/P&gt;&lt;P&gt;Gaurav.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 29 Jun 2017 13:31:10 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/MKL03Z-I2C-module-Cannot-send-a-quot-start-quot-without-sending/m-p/677889#M41720</guid>
      <dc:creator>gauravbanyal</dc:creator>
      <dc:date>2017-06-29T13:31:10Z</dc:date>
    </item>
    <item>
      <title>Re: MKL03Z: I2C module: Cannot send a "start" without sending a "stop" prior</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/MKL03Z-I2C-module-Cannot-send-a-quot-start-quot-without-sending/m-p/677890#M41721</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;&lt;SPAN&gt;See the appendix of &lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.nxp.com/external-link.jspa?url=http%3A%2F%2Fwww.utasker.com%2Fdocs%2FuTasker%2FuTasker_I2C.pdf" rel="nofollow" target="_blank"&gt;http://www.utasker.com/docs/uTasker/uTasker_I2C.pdf&lt;/A&gt;&lt;SPAN&gt; for details about the issue and the way to work around it.&lt;/SPAN&gt;&lt;BR /&gt;If you would like an immediate and complete solution proven in many industrial products using double-buffered I2C Kinetis parts just use the uTasker Open Source project (link below) which also simulates your chip and the I2C operation.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;Regards&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Mark&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;A class="jive-link-external-small" href="https://community.nxp.com/external-link.jspa?url=http%3A%2F%2Fwww.utasker.com%2Fkinetis.html" rel="nofollow" target="_blank"&gt;http://www.utasker.com/kinetis.html&lt;/A&gt;&lt;BR /&gt;&lt;A class="jive-link-external-small" href="https://community.nxp.com/external-link.jspa?url=http%3A%2F%2Fwww.utasker.com%2Fkinetis%2FFRDM-KL03Z.html" rel="nofollow" target="_blank"&gt;http://www.utasker.com/kinetis/FRDM-KL03Z.html&lt;/A&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 29 Jun 2017 15:23:05 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/MKL03Z-I2C-module-Cannot-send-a-quot-start-quot-without-sending/m-p/677890#M41721</guid>
      <dc:creator>mjbcswitzerland</dc:creator>
      <dc:date>2017-06-29T15:23:05Z</dc:date>
    </item>
    <item>
      <title>Re: MKL03Z: I2C module: Cannot send a "start" without sending a "stop" prior</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/MKL03Z-I2C-module-Cannot-send-a-quot-start-quot-without-sending/m-p/677891#M41722</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;General format for EEPROM read is:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Start&lt;BR /&gt;Device_Address Write&lt;/P&gt;&lt;P&gt;Write_EEPROM_ADDRESS_High (or low depending on the part)&lt;/P&gt;&lt;P&gt;Write_EEPROM_ADDRESS_Low&lt;/P&gt;&lt;P&gt;Repeated Start&lt;/P&gt;&lt;P&gt;Device_Address Read&lt;/P&gt;&lt;P&gt;Read/Ack&lt;/P&gt;&lt;P&gt;...&lt;/P&gt;&lt;P&gt;Read/Nack Nack indicates this is the last read.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The master still needs to generate the clocks so there needs to be more than one read.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 29 Jun 2017 15:49:43 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/MKL03Z-I2C-module-Cannot-send-a-quot-start-quot-without-sending/m-p/677891#M41722</guid>
      <dc:creator>bobpaddock</dc:creator>
      <dc:date>2017-06-29T15:49:43Z</dc:date>
    </item>
    <item>
      <title>Re: MKL03Z: I2C module: Cannot send a "start" without sending a "stop" prior</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/MKL03Z-I2C-module-Cannot-send-a-quot-start-quot-without-sending/m-p/677892#M41723</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Mark,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks for this information. So my understanding is that this is a bug in the microcontroller's I2C&amp;nbsp;module.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I have to admit that I don't completely understand the cause and hence don't know how to handle it. It seems that I have to either integrate uTasker in my project which would be quite risky to do at this stage or do a manual workaround in the SDK which I don't prefer doing.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;If you or NXP can send me changed and validated SDK files for the I2C driver (fsl_i2c.c) with this workaround implemented, it will be much helpful.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Best regards,&lt;/P&gt;&lt;P&gt;Gaurav.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 30 Jun 2017 11:59:11 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/MKL03Z-I2C-module-Cannot-send-a-quot-start-quot-without-sending/m-p/677892#M41723</guid>
      <dc:creator>gauravbanyal</dc:creator>
      <dc:date>2017-06-30T11:59:11Z</dc:date>
    </item>
    <item>
      <title>Re: MKL03Z: I2C module: Cannot send a "start" without sending a "stop" prior</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/MKL03Z-I2C-module-Cannot-send-a-quot-start-quot-without-sending/m-p/677893#M41724</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello Mark,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I figure out from the Appendix you shared that the typical issue is that the i2c master, after sending the repeated start sends a wrong slave address. But this doesn't seem to be happening in my case.&amp;nbsp;Here it seems to be that I am able to read but the slave is not returning the right information.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;In this, I write 0xAA at address 0x0004 and then try to read address 0x0004. What do you think could be wrong here? Do you think its the double buffering bug? how?&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/24372i6F669E6BB1150F53/image-size/large?v=v2&amp;amp;px=999" title="I2C.jpeg" alt="I2C.jpeg" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Cheers,&lt;/P&gt;&lt;P&gt;Gaurav.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 30 Jun 2017 13:07:20 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/MKL03Z-I2C-module-Cannot-send-a-quot-start-quot-without-sending/m-p/677893#M41724</guid>
      <dc:creator>gauravbanyal</dc:creator>
      <dc:date>2017-06-30T13:07:20Z</dc:date>
    </item>
    <item>
      <title>Re: MKL03Z: I2C module: Cannot send a "start" without sending a "stop" prior</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/MKL03Z-I2C-module-Cannot-send-a-quot-start-quot-without-sending/m-p/677894#M41725</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;&lt;SPAN&gt;You will need to contact NXP since I don't work with the SDK. In case of emergencies I can correct code and validate operation but this will need a contact which can be arranged at &lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.nxp.com/external-link.jspa?url=http%3A%2F%2Fwww.utasker.com%2Fservices.html" rel="nofollow" target="_blank"&gt;http://www.utasker.com/services.html&lt;/A&gt;&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>Fri, 30 Jun 2017 14:00:08 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/MKL03Z-I2C-module-Cannot-send-a-quot-start-quot-without-sending/m-p/677894#M41725</guid>
      <dc:creator>mjbcswitzerland</dc:creator>
      <dc:date>2017-06-30T14:00:08Z</dc:date>
    </item>
    <item>
      <title>Re: MKL03Z: I2C module: Cannot send a "start" without sending a "stop" prior</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/MKL03Z-I2C-module-Cannot-send-a-quot-start-quot-without-sending/m-p/677895#M41726</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;I am not sure whether this is a chip issue, driver issue or application issue yet but it looks like your write doesn't correspond to what you display in the initial post. There you show that you want&lt;BR /&gt;W50, 0, 4, W50, AA&lt;BR /&gt;but your oscilloscope is displaying W50, 0, 4, AA, which is different because the slave is never being addressed for the data write (the second W50 is missing).&lt;BR /&gt;In this case it may be normal that the read is a 0xff since you haven't written anything yet.&lt;/P&gt;&lt;P&gt;If you intended to send the second W50 between the 4 and the AA if could be the chip bug where the second start address is lost (as noted in the appendix of the uTasker I2C document).&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>Fri, 30 Jun 2017 14:14:19 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/MKL03Z-I2C-module-Cannot-send-a-quot-start-quot-without-sending/m-p/677895#M41726</guid>
      <dc:creator>mjbcswitzerland</dc:creator>
      <dc:date>2017-06-30T14:14:19Z</dc:date>
    </item>
    <item>
      <title>Re: MKL03Z: I2C module: Cannot send a "start" without sending a "stop" prior</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/MKL03Z-I2C-module-Cannot-send-a-quot-start-quot-without-sending/m-p/677896#M41727</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;This is because the write to this chip is a bit different. It does not need a repeated start.&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/24409i079D98629425D20C/image-size/large?v=v2&amp;amp;px=999" title="write.JPG" alt="write.JPG" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;The EEPROM datasheet I am referring to is this one:&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/24441iB45E8EE0725A7905/image-size/large?v=v2&amp;amp;px=999" title="datasheet.JPG" alt="datasheet.JPG" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 30 Jun 2017 14:25:58 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/MKL03Z-I2C-module-Cannot-send-a-quot-start-quot-without-sending/m-p/677896#M41727</guid>
      <dc:creator>gauravbanyal</dc:creator>
      <dc:date>2017-06-30T14:25:58Z</dc:date>
    </item>
    <item>
      <title>Re: MKL03Z: I2C module: Cannot send a "start" without sending a "stop" prior</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/MKL03Z-I2C-module-Cannot-send-a-quot-start-quot-without-sending/m-p/677897#M41728</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;In that case the I2C bus looks correct and you are not using repeated-starts, which means you may not be affected by the chip's bugs.&lt;/P&gt;&lt;P&gt;If the oscilloscope shows the I2C activity correctly being coded it may be that you have write protection on the EEPROM stopping it changing its memory, which wouldn't be a I2C issue.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards&lt;/P&gt;&lt;P&gt;Mark&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 30 Jun 2017 14:34:24 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/MKL03Z-I2C-module-Cannot-send-a-quot-start-quot-without-sending/m-p/677897#M41728</guid>
      <dc:creator>mjbcswitzerland</dc:creator>
      <dc:date>2017-06-30T14:34:24Z</dc:date>
    </item>
    <item>
      <title>Re: MKL03Z: I2C module: Cannot send a "start" without sending a "stop" prior</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/MKL03Z-I2C-module-Cannot-send-a-quot-start-quot-without-sending/m-p/677898#M41729</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;This one too I have ruled out as a possibility:&lt;/P&gt;&lt;P&gt;"If the addressed location is Write-protected, by Write Control (WC) being driven high, the&lt;BR /&gt;device replies with NoAck, and the location is not modified. If, instead, the addressed&lt;BR /&gt;location is not Write-protected, the device replies with Ack."&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;There is something else which is just escaping my eyes/mind.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 30 Jun 2017 14:40:22 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/MKL03Z-I2C-module-Cannot-send-a-quot-start-quot-without-sending/m-p/677898#M41729</guid>
      <dc:creator>gauravbanyal</dc:creator>
      <dc:date>2017-06-30T14:40:22Z</dc:date>
    </item>
    <item>
      <title>Re: MKL03Z: I2C module: Cannot send a "start" without sending a "stop" prior</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/MKL03Z-I2C-module-Cannot-send-a-quot-start-quot-without-sending/m-p/677899#M41730</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;The oscilloscope is showing correct operation on the bus but the slave is responding with 0xff.&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;In this case the question is whether you can believe the oscilloscope's interpretation - I would look at the SDA/SCL signals directly to check the start, stop, ack, nack, timing etc. If all is correct it is not a I2C driver/chip issue but something at the slave.&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>Fri, 30 Jun 2017 14:47:31 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/MKL03Z-I2C-module-Cannot-send-a-quot-start-quot-without-sending/m-p/677899#M41730</guid>
      <dc:creator>mjbcswitzerland</dc:creator>
      <dc:date>2017-06-30T14:47:31Z</dc:date>
    </item>
    <item>
      <title>Re: MKL03Z: I2C module: Cannot send a "start" without sending a "stop" prior</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/MKL03Z-I2C-module-Cannot-send-a-quot-start-quot-without-sending/m-p/677900#M41731</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I am also printing the value that I read from the slave on my UART terminal. it is 0xFF.&lt;/P&gt;&lt;P&gt;BTW I am using repeated-start for the read. With that in mid, do you think what I see on the scope is correct in the sense that the issue that you know of, which is described in you uTasker documentation is not present here in the read?&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 30 Jun 2017 14:52:32 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/MKL03Z-I2C-module-Cannot-send-a-quot-start-quot-without-sending/m-p/677900#M41731</guid>
      <dc:creator>gauravbanyal</dc:creator>
      <dc:date>2017-06-30T14:52:32Z</dc:date>
    </item>
    <item>
      <title>Re: MKL03Z: I2C module: Cannot send a "start" without sending a "stop" prior</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/MKL03Z-I2C-module-Cannot-send-a-quot-start-quot-without-sending/m-p/677901#M41732</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;Maybe the EEPROM requîres a STOP condition to start writing the data (meaning a repeated start after the write could be wrong)?&lt;BR /&gt;Also, after you have written something to an EEPROM it may take several ms before it has been programmed - &lt;SPAN style="text-decoration: underline;"&gt;usually one polls its status register until it shows that it is no longer busy before reading&lt;/SPAN&gt;.&lt;BR /&gt;I don't see I2S bus problems at the moment and the application is more likely to be the issue.&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>Fri, 30 Jun 2017 15:04:14 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/MKL03Z-I2C-module-Cannot-send-a-quot-start-quot-without-sending/m-p/677901#M41732</guid>
      <dc:creator>mjbcswitzerland</dc:creator>
      <dc:date>2017-06-30T15:04:14Z</dc:date>
    </item>
    <item>
      <title>Re: MKL03Z: I2C module: Cannot send a "start" without sending a "stop" prior</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/MKL03Z-I2C-module-Cannot-send-a-quot-start-quot-without-sending/m-p/677902#M41733</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Section 5.2.1 of the data sheet does indicate that Repeated Start is used, it just doesn't call it that in that paragraph.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 30 Jun 2017 15:52:23 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/MKL03Z-I2C-module-Cannot-send-a-quot-start-quot-without-sending/m-p/677902#M41733</guid>
      <dc:creator>bobpaddock</dc:creator>
      <dc:date>2017-06-30T15:52:23Z</dc:date>
    </item>
    <item>
      <title>Re: MKL03Z: I2C module: Cannot send a "start" without sending a "stop" prior</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/MKL03Z-I2C-module-Cannot-send-a-quot-start-quot-without-sending/m-p/677903#M41734</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;Section 5.1 "Write operations":&lt;/P&gt;&lt;DIV style="left: 544.701px; top: 511.872px; font-size: 16.6px; font-family: sans-serif; transform: scaleX(1.00207);"&gt;&lt;STRONG&gt;When the bus master generates a Stop condition immediately after a data byte Ack bit (in&lt;/STRONG&gt;&lt;/DIV&gt;&lt;DIV style="left: 269.6px; top: 531.872px; font-size: 16.6px; font-family: sans-serif; transform: scaleX(1.00331);"&gt;&lt;STRONG&gt;the “10th bit” time slot), either at the end of a Byte Write or a Page Write, the internal Write&lt;/STRONG&gt;&lt;/DIV&gt;&lt;DIV style="left: 570.2px; top: 551.872px; font-size: 16.6px; font-family: sans-serif; transform: scaleX(1.00278);"&gt;&lt;STRONG&gt;cycle tW is triggered. &lt;SPAN style="text-decoration: underline;"&gt;A Stop condition at any other time slot does not trigger the internal&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/DIV&gt;&lt;DIV style="left: 206.6px; top: 571.872px; font-size: 16.6px; font-family: sans-serif; transform: scaleX(1.00227);"&gt;&lt;STRONG&gt;&lt;SPAN style="text-decoration: underline;"&gt;Write cycle&lt;/SPAN&gt;.&lt;/STRONG&gt;&lt;/DIV&gt;&lt;DIV style="left: 206.6px; top: 571.872px; font-size: 16.6px; font-family: sans-serif; transform: scaleX(1.00227);"&gt;A repeated start will presumably effectively cancel a write before it starts.&lt;/DIV&gt;&lt;DIV style="left: 206.6px; top: 571.872px; font-size: 16.6px; font-family: sans-serif; transform: scaleX(1.00227);"&gt; &lt;/DIV&gt;&lt;DIV style="left: 206.6px; top: 571.872px; font-size: 16.6px; font-family: sans-serif; transform: scaleX(1.00227);"&gt;Also, the user's manual discusses how to poll for the write to complete in 5.1.6.&lt;/DIV&gt;&lt;DIV style="left: 206.6px; top: 571.872px; font-size: 16.6px; font-family: sans-serif; transform: scaleX(1.00227);"&gt; &lt;/DIV&gt;&lt;DIV style="left: 206.6px; top: 571.872px; font-size: 16.6px; font-family: sans-serif; transform: scaleX(1.00227);"&gt;I also agree that, from 5.2.1, a repeated start is required (must be used) when reading.&lt;/DIV&gt;&lt;DIV style="left: 206.6px; top: 571.872px; font-size: 16.6px; font-family: sans-serif; transform: scaleX(1.00227);"&gt; &lt;/DIV&gt;&lt;DIV style="left: 206.6px; top: 571.872px; font-size: 16.6px; font-family: sans-serif; transform: scaleX(1.00227);"&gt;From 5.1.1. the write address plus the data should be written in &lt;EM&gt;one single I2C frame&lt;/EM&gt;. It doesn't state that it won't work if a repeated start is used but it is not the method that is explained and possibly will fail. Sending as two write frames looks to be incorrect since the second one's data will presumably be understood as a part of a new address and not as data.&lt;/DIV&gt;&lt;DIV style="left: 206.6px; top: 571.872px; font-size: 16.6px; font-family: sans-serif; transform: scaleX(1.00227);"&gt; &lt;/DIV&gt;&lt;DIV style="left: 206.6px; top: 571.872px; font-size: 16.6px; font-family: sans-serif; transform: scaleX(1.00227);"&gt;Therefore it looks like the present problem is at the application level where there are one or more errors as it is being performed at the moment.&lt;/DIV&gt;&lt;DIV style="left: 206.6px; top: 571.872px; font-size: 16.6px; font-family: sans-serif; transform: scaleX(1.00227);"&gt; &lt;/DIV&gt;&lt;DIV style="left: 206.6px; top: 571.872px; font-size: 16.6px; font-family: sans-serif; transform: scaleX(1.00227);"&gt;Regards&lt;/DIV&gt;&lt;DIV style="left: 206.6px; top: 571.872px; font-size: 16.6px; font-family: sans-serif; transform: scaleX(1.00227);"&gt; &lt;/DIV&gt;&lt;DIV style="left: 206.6px; top: 571.872px; font-size: 16.6px; font-family: sans-serif; transform: scaleX(1.00227);"&gt;Mark&lt;/DIV&gt;&lt;DIV style="left: 206.6px; top: 571.872px; font-size: 16.6px; font-family: sans-serif; transform: scaleX(1.00227);"&gt; &lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 01 Jul 2017 19:24:36 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/MKL03Z-I2C-module-Cannot-send-a-quot-start-quot-without-sending/m-p/677903#M41734</guid>
      <dc:creator>mjbcswitzerland</dc:creator>
      <dc:date>2017-07-01T19:24:36Z</dc:date>
    </item>
    <item>
      <title>Re: MKL03Z: I2C module: Cannot send a "start" without sending a "stop" prior</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/MKL03Z-I2C-module-Cannot-send-a-quot-start-quot-without-sending/m-p/677904#M41735</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;&lt;SPAN style="color: #1f497d;"&gt;It works now. &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #1f497d;"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #1f497d;"&gt;You don’t want to know the reason as it does not add to your knowledge. The phenomenon operating here was optical illusion. When there are pins around the ground pin, you can end up connecting a non-connected pin to ground, thinking you have connected the ground pin to ground.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #1f497d;"&gt;Fix that and it starts to work.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #1f497d;"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #1f497d;"&gt;Thanks for investigations and spending the time and your responses. I appreciate.&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #1f497d;"&gt;But I am sorry for your wasted time.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #1f497d;"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #1f497d;"&gt;Thanks,&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #1f497d;"&gt;Gaurav.&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 03 Jul 2017 12:38:04 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/MKL03Z-I2C-module-Cannot-send-a-quot-start-quot-without-sending/m-p/677904#M41735</guid>
      <dc:creator>gauravbanyal</dc:creator>
      <dc:date>2017-07-03T12:38:04Z</dc:date>
    </item>
    <item>
      <title>Re: MKL03Z: I2C module: Cannot send a "start" without sending a "stop" prior</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/MKL03Z-I2C-module-Cannot-send-a-quot-start-quot-without-sending/m-p/677905#M41736</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;I am using I2C for communicate with my RTC device. I am transferring the data of 0x90(write mode) , 0x3F(resister address) , 0x02(data). Again I am writing&amp;nbsp;&lt;SPAN&gt;0x90(write mode) , 0x3F(resister address) , 0x06&lt;/SPAN&gt;&lt;SPAN&gt;(data) as per data sheet we have write two data bytes.&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;Now I am reading from that device(RTC) by writing data 0x90(write mode),0x30(register to read),repeat start,0x91(read mode). But i am getting data as 0xFF only.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;where as this code is working when I am for MK60 but not working with MK66.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;Can I know the reason.&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 05 Sep 2018 05:55:44 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/MKL03Z-I2C-module-Cannot-send-a-quot-start-quot-without-sending/m-p/677905#M41736</guid>
      <dc:creator>software</dc:creator>
      <dc:date>2018-09-05T05:55:44Z</dc:date>
    </item>
  </channel>
</rss>

