<?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>nRF24L01(+) RX ACK payload lost</title><link>https://devzone.nordicsemi.com/f/nordic-q-a/8720/nrf24l01-rx-ack-payload-lost</link><description>I have problems with sometimes loosing ACK payloads from TX FIFO for RX device.
My algorithm is: 
 
 config channel and other settings 
 clear status and FIFOs 
 upload new ACK payload 
 start RX by setting CE=1 
 wait for packet from TX device</description><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Wed, 02 Sep 2015 09:10:17 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://devzone.nordicsemi.com/f/nordic-q-a/8720/nrf24l01-rx-ack-payload-lost" /><item><title>RE: nRF24L01(+) RX ACK payload lost</title><link>https://devzone.nordicsemi.com/thread/31982?ContentTypeID=1</link><pubDate>Wed, 02 Sep 2015 09:10:17 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:806c3895-c05d-4484-bb1f-03d94952341c</guid><dc:creator>Hung Bui</dc:creator><description>&lt;p&gt;Hi Janis,
I afraid that I don&amp;#39;t have further information than what discussed. To be able to investigate more, could you provide an example code that can reproduce the issue that you mentioned &amp;quot;in some rare circumstances I get TX_DS after TX FLUSH&amp;quot; ?&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: nRF24L01(+) RX ACK payload lost</title><link>https://devzone.nordicsemi.com/thread/31981?ContentTypeID=1</link><pubDate>Fri, 14 Aug 2015 13:45:13 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:093b2844-f13f-440a-b4c6-355cba6ce69f</guid><dc:creator>Janis</dc:creator><description>&lt;p&gt;Hi
Yes, that makes sense. The problem is that in some rare circumstances I get TX_DS after TX FLUSH.&lt;/p&gt;
&lt;p&gt;Anyway, hope you can get some more info.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: nRF24L01(+) RX ACK payload lost</title><link>https://devzone.nordicsemi.com/thread/31980?ContentTypeID=1</link><pubDate>Fri, 14 Aug 2015 13:34:15 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:444fc8f5-6b07-4f26-af71-5fca9af0078e</guid><dc:creator>Hung Bui</dc:creator><description>&lt;p&gt;Hi Janis,&lt;/p&gt;
&lt;p&gt;I think it makes sense, the ACK TXFIFO is flushed before receiving the new packet from PTX means we don&amp;#39;t care anymore about the ACK payload (and won&amp;#39;t retransmit if old packet is received). So the TX_DS should not be triggered. But on the subsequent RX, when the ACK payload is ACKed properly, then it should trigger TX_DS and discard the ACK payload.&lt;/p&gt;
&lt;p&gt;I assume that the bit which tells there is a ACK payload in the last ACK packet will also be cleared when we do a flush on TXFIFO.&lt;/p&gt;
&lt;p&gt;To be able to confirm this behaviour and have insight information about this, I will try to get hold of our expert with nRF24L series. But I can&amp;#39;t guarantee because the chip was designed more than 10 years ago.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: nRF24L01(+) RX ACK payload lost</title><link>https://devzone.nordicsemi.com/thread/31979?ContentTypeID=1</link><pubDate>Fri, 14 Aug 2015 11:57:09 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:d914c996-ae5e-4839-99a0-6af7e4e78d65</guid><dc:creator>Janis</dc:creator><description>&lt;p&gt;I would like to know the full rule on removing the ACK payload from RX device TXFIFO.&lt;/p&gt;
&lt;p&gt;For instance if I flush TXFIFO and upload new ACK payload, then on next RX it stays and
TX_DS is not set, but on subsequent RX it will be removed and TX_DS is set. It seems that
nRF remembers if that payload was sent with ACK and only then it will remove it on next received
packet. So it would seem that there is more to the condition then just if the recieved packet is new.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: nRF24L01(+) RX ACK payload lost</title><link>https://devzone.nordicsemi.com/thread/31978?ContentTypeID=1</link><pubDate>Fri, 14 Aug 2015 11:37:44 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:af9efbaf-737a-4e96-bee6-565f3a6cf47c</guid><dc:creator>Hung Bui</dc:creator><description>&lt;p&gt;Hi Janis,
A new packet is a packet that has different CRC or PID from the previous packet. It&amp;#39;s mentioned at page 29 in the nRF24L01+ Spec.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The PID field is incremented at the TX
side for each new packet received
through the SPI. The PID and CRC
fields (see section 7.3.5 on page 30)
are used by the PRX device to
determine if a packet is retransmitted
or new.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;If you are in PRX mode and receives TX_DS flag, this mean:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;You&amp;#39;ve received a new packet from PTX&lt;/li&gt;
&lt;li&gt;You have added a payload into the last ACK packet, and that payload arrived successfully .&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I don&amp;#39;t think the PID will be reset by going back to standby mode CE=0.&lt;/p&gt;
&lt;p&gt;If you going to transmit same payload packet, it&amp;#39;s better to add one PID extra byte that can be controlled by the application. This will cause the CRC to change. And the L01+ will treat it as a new packet.&lt;/p&gt;
&lt;p&gt;Note that we have 3 slots for ACK payload. You can queue up to 3 packets for ACK.&lt;/p&gt;
&lt;p&gt;I don&amp;#39;t really understand why you have to stop RX and start it again when you receive a packet.&lt;/p&gt;
&lt;p&gt;Entering power down mode, on the other hand can do a reset for PID counter.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>