<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="https://devzone.nordicsemi.com/cfs-file/__key/system/syndication/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>TWIM: EasyDMA transfers - STOP Task before STARTED Event</title><link>https://devzone.nordicsemi.com/f/nordic-q-a/104329/twim-easydma-transfers---stop-task-before-started-event</link><description>What happens if I trigger the STOP task to an I2C transaction that hasn&amp;#39;t had a STARTED event yet? Will the STOPPED event immediately happen, or will the peripheral wait for a transaction to actually happen? Background: I would like to set up automatic</description><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Tue, 03 Oct 2023 20:08:31 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://devzone.nordicsemi.com/f/nordic-q-a/104329/twim-easydma-transfers---stop-task-before-started-event" /><item><title>RE: TWIM: EasyDMA transfers - STOP Task before STARTED Event</title><link>https://devzone.nordicsemi.com/thread/448713?ContentTypeID=1</link><pubDate>Tue, 03 Oct 2023 20:08:31 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:f465d206-2cad-416a-8f2a-c4ea17491dfb</guid><dc:creator>KWolfe81</dc:creator><description>&lt;p&gt;Great!&amp;nbsp; Thanks for the support.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: TWIM: EasyDMA transfers - STOP Task before STARTED Event</title><link>https://devzone.nordicsemi.com/thread/448699?ContentTypeID=1</link><pubDate>Tue, 03 Oct 2023 18:17:04 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:f91d6a84-fbbb-455a-840f-dc132474a020</guid><dc:creator>Kenneth</dc:creator><description>&lt;p&gt;That simplifies things a bit, there is no problem to read data directly from RAM between transcations no, the only exception may be if you read at the same time as a transaction is ongoing, then you may possible get only partial data of a on-going transfer (but reading again a bit later should solve even that).&lt;/p&gt;
&lt;p&gt;Kenneth&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: TWIM: EasyDMA transfers - STOP Task before STARTED Event</title><link>https://devzone.nordicsemi.com/thread/448692?ContentTypeID=1</link><pubDate>Tue, 03 Oct 2023 16:32:59 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:e66ffe16-183c-4a68-86cf-74d1a1a1f900</guid><dc:creator>KWolfe81</dc:creator><description>&lt;p&gt;Sorry, point of clarification, there would not be any manual&amp;nbsp;twi transactions.&amp;nbsp; By &amp;quot;Get data here&amp;quot; I&amp;nbsp;mean that the application would simply&amp;nbsp;consume the data&amp;nbsp;already filled in the existing buffer.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;In short, I&amp;#39;m trying to figure out a way to&amp;nbsp;automatically read in twi data on a &amp;#39;data ready&amp;#39; gpio pin while allowing the application&amp;nbsp;access to all the&amp;nbsp;received data without having to wait until another transaction to occur.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;If there are too many corner cases with&amp;nbsp;the STOP before STARTED approach, the alternative is that I could &amp;#39;peek&amp;#39; inside the RX DMA buffer&amp;nbsp;while the DMA engine is still running.&amp;nbsp;&amp;nbsp;Are there any pitfalls with this approach?&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: TWIM: EasyDMA transfers - STOP Task before STARTED Event</title><link>https://devzone.nordicsemi.com/thread/448644?ContentTypeID=1</link><pubDate>Tue, 03 Oct 2023 12:23:08 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:7c095509-ad4a-4dee-a8df-272ce8ca2496</guid><dc:creator>Kenneth</dc:creator><description>&lt;p&gt;Hello,&lt;/p&gt;
&lt;p&gt;I can understand what you want to do here, but I would suggest that you evaluate run-time when the next periodic reading of twi is relative to when you want to perform an manual reading, e.g. if you see that the time to next periodic reading is for instance less than the time to perform an twi transaction, then consider waiting or disable the ppi channel that may trigger the the periodic twi channel. If you see that you want to perform an manual twi transcation shortly after the periodic twi transfer is still ongoing, then you should wait with the manual twi transfer.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Doing it like above should avoid that you need to trigger stop task, instead you make sure to perform manual twi transcation at safe time, and if you don&amp;#39;t want to perform a periodic twi transaction you instead disable the ppi channel in those situations. Reasons for doing it like this I deem it safer than all the possible corner cases of performing stop shortly after executing a start task (this might also be something the sensor is not happy about).&lt;/p&gt;
&lt;p&gt;Kenneth&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>