<?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 K82 : cancel I2C transfer in Kinetis Microcontrollers</title>
    <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/K82-cancel-I2C-transfer/m-p/791656#M48168</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;I should be able to cancel any ongoing transaction&amp;nbsp; for I2C Master and Slave interfaces.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;1.&lt;/P&gt;&lt;P&gt;In case of slave I'm using&amp;nbsp;I2C_SlaveTransferAbort() what should cancel any read/write operation on I2C bus.&lt;/P&gt;&lt;P&gt;Is this OK ?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;2. For I2C master I'm using freeRTOS wrappers and they dosn't have any API for aborting transfers.&lt;/P&gt;&lt;P&gt;&amp;nbsp;Should I use&amp;nbsp;I2C_MasterStop(I2C_Type *base) ?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I'm using interrupt driver I2C master and slave interfaces and nonblocking transfers. DMA is disabled.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Eugene&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Thu, 13 Dec 2018 09:05:59 GMT</pubDate>
    <dc:creator>EugeneHiihtaja</dc:creator>
    <dc:date>2018-12-13T09:05:59Z</dc:date>
    <item>
      <title>K82 : cancel I2C transfer</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/K82-cancel-I2C-transfer/m-p/791656#M48168</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;I should be able to cancel any ongoing transaction&amp;nbsp; for I2C Master and Slave interfaces.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;1.&lt;/P&gt;&lt;P&gt;In case of slave I'm using&amp;nbsp;I2C_SlaveTransferAbort() what should cancel any read/write operation on I2C bus.&lt;/P&gt;&lt;P&gt;Is this OK ?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;2. For I2C master I'm using freeRTOS wrappers and they dosn't have any API for aborting transfers.&lt;/P&gt;&lt;P&gt;&amp;nbsp;Should I use&amp;nbsp;I2C_MasterStop(I2C_Type *base) ?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I'm using interrupt driver I2C master and slave interfaces and nonblocking transfers. DMA is disabled.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Eugene&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 13 Dec 2018 09:05:59 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/K82-cancel-I2C-transfer/m-p/791656#M48168</guid>
      <dc:creator>EugeneHiihtaja</dc:creator>
      <dc:date>2018-12-13T09:05:59Z</dc:date>
    </item>
    <item>
      <title>Re: K82 : cancel I2C transfer</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/K82-cancel-I2C-transfer/m-p/791657#M48169</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Eugene Hiihtaja,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; 1.In case of slave I'm using&amp;nbsp;I2C_SlaveTransferAbort() what should cancel any read/write operation on I2C bus.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; Answer:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; You can check the I2C_SlaveTransferAbort function.&lt;/P&gt;&lt;PRE class="language-c line-numbers"&gt;&lt;CODE&gt;&lt;SPAN class="keyword token"&gt;void&lt;/SPAN&gt; &lt;SPAN class="token function"&gt;I2C_SlaveTransferAbort&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;I2C_Type &lt;SPAN class="operator token"&gt;*&lt;/SPAN&gt;base&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; i2c_slave_handle_t &lt;SPAN class="operator token"&gt;*&lt;/SPAN&gt;handle&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
&lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="token function"&gt;assert&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;handle&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;

&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="keyword token"&gt;if&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;handle&lt;SPAN class="operator token"&gt;-&amp;gt;&lt;/SPAN&gt;isBusy&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="comment token"&gt;/* Disable interrupts. */&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="token function"&gt;I2C_DisableInterrupts&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;base&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; kIrqFlags&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="comment token"&gt;/* Reset transfer info. */&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="token function"&gt;memset&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;amp;&lt;/SPAN&gt;handle&lt;SPAN class="operator token"&gt;-&amp;gt;&lt;/SPAN&gt;transfer&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;0&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; &lt;SPAN class="keyword token"&gt;sizeof&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;handle&lt;SPAN class="operator token"&gt;-&amp;gt;&lt;/SPAN&gt;transfer&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="comment token"&gt;/* Reset the state to idle. */&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; handle&lt;SPAN class="operator token"&gt;-&amp;gt;&lt;/SPAN&gt;isBusy &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; false&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;
&lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍&lt;SPAN class="line-numbers-rows"&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;It disable the interrupt, so if your slave is using the interrupt to receive and write the I2C data, of course this code can used to cancel the operation.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;2. For I2C master I'm using freeRTOS wrappers and they dosn't have any API for aborting transfers.&lt;/P&gt;&lt;P&gt;&amp;nbsp;Should I use&amp;nbsp;I2C_MasterStop(I2C_Type *base) ?&lt;/P&gt;&lt;P&gt;Answer:About the master, you can use&amp;nbsp; I2C_MasterTransferAbort to stop the sending, I2C_MasterStop just send the STOP signal to the I2C bus.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Wish it helps you!&lt;/P&gt;&lt;P&gt;If you still have question about it, please kindly let me know.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;Have a great day,&lt;BR /&gt;Kerry&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, 14 Dec 2018 09:32:31 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/K82-cancel-I2C-transfer/m-p/791657#M48169</guid>
      <dc:creator>kerryzhou</dc:creator>
      <dc:date>2018-12-14T09:32:31Z</dc:date>
    </item>
  </channel>
</rss>

