<?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>How to achieve NRF52840 ESB Maximum data rate</title><link>https://devzone.nordicsemi.com/f/nordic-q-a/120889/how-to-achieve-nrf52840-esb-maximum-data-rate</link><description>As part of a university project I am trying to read an analog signal and transmit it at the maximum data rate over ESB. But I cant seem to get above 1700kbps without any of my payload writes failing. I have disabled acking, I am using the highest bitrate</description><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Mon, 05 May 2025 07:49:04 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://devzone.nordicsemi.com/f/nordic-q-a/120889/how-to-achieve-nrf52840-esb-maximum-data-rate" /><item><title>RE: How to achieve NRF52840 ESB Maximum data rate</title><link>https://devzone.nordicsemi.com/thread/533858?ContentTypeID=1</link><pubDate>Mon, 05 May 2025 07:49:04 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:1a981561-02e0-4f9a-a8fa-d41066ac3f45</guid><dc:creator>H&amp;#229;kon Alseth</dc:creator><description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Great to hear!&lt;/p&gt;
&lt;p&gt;I see approx. the same throughput with 4 MBit mode.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Kind regards,&lt;/p&gt;
&lt;p&gt;Håkon&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: How to achieve NRF52840 ESB Maximum data rate</title><link>https://devzone.nordicsemi.com/thread/533736?ContentTypeID=1</link><pubDate>Fri, 02 May 2025 10:55:59 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:53f04e53-8a00-4e5e-82ad-7db3d6c3195b</guid><dc:creator>JamieHartshorne</dc:creator><description>&lt;p&gt;Just to follow this up, after some very quick testing on the new boards with 4MBIT&amp;nbsp; i could achieve&amp;nbsp;3224 kbps&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: How to achieve NRF52840 ESB Maximum data rate</title><link>https://devzone.nordicsemi.com/thread/532780?ContentTypeID=1</link><pubDate>Thu, 24 Apr 2025 10:17:18 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:80153c42-1e3a-4d4b-b0ff-92b7b450f2b1</guid><dc:creator>H&amp;#229;kon Alseth</dc:creator><description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Happy to help out!&lt;/p&gt;
&lt;p&gt;nRF54L15 can do 4 MBit, so this should help wrt. the overall throughput you need.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Kind regards,&lt;/p&gt;
&lt;p&gt;Håkon&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: How to achieve NRF52840 ESB Maximum data rate</title><link>https://devzone.nordicsemi.com/thread/532638?ContentTypeID=1</link><pubDate>Wed, 23 Apr 2025 14:36:22 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:39f3c177-425a-4c93-8333-619690eb25a9</guid><dc:creator>JamieHartshorne</dc:creator><description>&lt;p&gt;Thanks Hakon, at least I have a sanity check on my results. I have ordered an NRF54L15 which I hope will give me faster rates.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: How to achieve NRF52840 ESB Maximum data rate</title><link>https://devzone.nordicsemi.com/thread/532635?ContentTypeID=1</link><pubDate>Wed, 23 Apr 2025 14:28:44 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:a7f2c730-5f98-4003-8c45-b084ca900c2a</guid><dc:creator>H&amp;#229;kon Alseth</dc:creator><description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Remember that there is processing that is required here as well, in terms of executing ISRs/setting up timers, etc.&lt;/p&gt;
&lt;p&gt;I setup a test, with a 1 second timer interrupt, where I count the amount of bytes sent.&lt;/p&gt;
&lt;p&gt;I am seeing&amp;nbsp;219240 byte per second, which is&amp;nbsp;1753920 bit/s (1712 kBit/s).&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;A bit less than you report.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Kind regards,&lt;/p&gt;
&lt;p&gt;Håkon&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: How to achieve NRF52840 ESB Maximum data rate</title><link>https://devzone.nordicsemi.com/thread/532569?ContentTypeID=1</link><pubDate>Wed, 23 Apr 2025 11:04:09 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:a63ec427-052c-416e-bce8-d13c2d7b9036</guid><dc:creator>JamieHartshorne</dc:creator><description>&lt;p&gt;Hi Hakon, I dont currently have a way to measure the dynamic current, using a regular multimeter and a chopped up usb c able with the XIAO nrf52840 ptx board, i get a current of 19mA at a DC voltage of 5.12V, but i will look into the oscilloscope method listed in the docs, at the moment the maximum data rate is 1727.7kbps when the DK and SEED XIAO nrf52840 are quite close together 5cm? At 1m the data rate drops below 1500kbps. This is still using a 4 byte address.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: How to achieve NRF52840 ESB Maximum data rate</title><link>https://devzone.nordicsemi.com/thread/532400?ContentTypeID=1</link><pubDate>Tue, 22 Apr 2025 13:59:53 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:e9aede67-f394-428a-955b-46687e769fbb</guid><dc:creator>H&amp;#229;kon Alseth</dc:creator><description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
[quote user="JamieHartshorne"]a friend has been able to achieve rates of 1650kbps using an NRF24L01[/quote]
&lt;p&gt;Yes, but in this case you need to really really fine-tune the setup, by holding the nRF24 in TX for several milliseconds before the carrier drifts (open loop radio design in 24L-series).&amp;nbsp;&lt;/p&gt;
&lt;p&gt;If you ramp up/down the radio with each TX, you will get approx. 130 is + time-on-air-for-32-byte-user-payload (4 us per byte =&amp;gt; 160 us for 40 bytes),&amp;nbsp;where 900 kBit then is expected.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Just to avoid any confusion around this subject:&lt;/p&gt;
&lt;p&gt;In your current test-case, you need to use nRF52-series or newer devices on both PRX and PTX. With fast ramp-up, you are not backwards compatible with older nRF51- and nRF24-series devices.&lt;/p&gt;
[quote user="JamieHartshorne"]&lt;p&gt;Doing some quick maths, 252 payload + crc byte + 4 prefix/address bytes = 257bytes&lt;/p&gt;
&lt;p&gt;at 2000kbps on air time = 1010.5us, with 40us ramp up, this becomes 1050.5us period or 0.952khz&lt;/p&gt;
&lt;p&gt;0.952*252*8=1919.2 kbits per second theoretically, I am just trying to see where i could find the extra 200 or 100kbps to squeeze every last bit out of the protocol. Again I appreicate your help, I am an embedded novice so I could easily be doing something very simple wrong.&lt;/p&gt;
&lt;p&gt;My code is based on the PRX and PTX examples and has addresses as follows so maybe I am just making the addresses too long?&lt;/p&gt;[/quote]
&lt;p&gt;The full data format will look like this:&lt;/p&gt;
&lt;p&gt;preamble 1 byte + RF address + PCF (packet control field)&amp;nbsp;11&amp;nbsp;&lt;strong&gt;bit&lt;/strong&gt; + user_payload + crc.&lt;/p&gt;
&lt;p&gt;That gives approx. 259 bytes, -&amp;gt; 1036 + 40 us -&amp;gt; 1076 us (0.92937 kHz).&lt;/p&gt;
&lt;p&gt;.92937*252*8 = ~1873 kBit/s.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;That is your theoretical max throughput, provided that your configuration works as you describe.&lt;/p&gt;
&lt;p&gt;What is the range between your prx and ptx? This should be kept approx. 1 meter for testing purposes.&lt;/p&gt;
&lt;p&gt;Have you checked the dynamic current consumption of your PTX device? This should show more-or-less &amp;quot;TX-current&amp;quot; all the time.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Kind regards,&lt;/p&gt;
&lt;p&gt;Håkon&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: How to achieve NRF52840 ESB Maximum data rate</title><link>https://devzone.nordicsemi.com/thread/532374?ContentTypeID=1</link><pubDate>Tue, 22 Apr 2025 13:22:36 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:396d41f8-b842-4cee-9401-92aaf40f08a8</guid><dc:creator>JamieHartshorne</dc:creator><description>&lt;p&gt;Hi Hakon, thanks for your reply. I set .noack equal to 1 before each esb write and I have selective auto ack enabled on the PRX aswell, when i was troubleshooting the issue i tried using 32 byte packets and sending them faster, a friend has been able to achieve rates of 1650kbps using an NRF24L01 and an FPGA with 32 byte packets, but I could only send around 900kbps with that packet size&amp;nbsp;so I&amp;#39;m wondering if the issues are with my configuration/code or if it is just the difference in overhead between the old and new devices. Please let me know if there is any information i can give you to help.&amp;nbsp;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Doing some quick maths, 252 payload + crc byte + 4 prefix/address bytes = 257bytes&lt;/p&gt;
&lt;p&gt;at 2000kbps on air time = 1010.5us, with 40us ramp up, this becomes 1050.5us period or 0.952khz&lt;/p&gt;
&lt;p&gt;0.952*252*8=1919.2 kbits per second theoretically, I am just trying to see where i could find the extra 200 or 100kbps to squeeze every last bit out of the protocol. Again I appreicate your help, I am an embedded novice so I could easily be doing something very simple wrong.&lt;/p&gt;
&lt;p&gt;My code is based on the PRX and PTX examples and has addresses as follows so maybe I am just making the addresses too long?&lt;br /&gt;&lt;br /&gt;&lt;pre class="ui-code" data-mode="text"&gt;	uint8_t base_addr_0[4] = {0xE7, 0xE7, 0xE7, 0xE7};
	uint8_t base_addr_1[4] = {0xC2, 0xC2, 0xC2, 0xC2};
	uint8_t addr_prefix[8] = {0xE7, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, 0xC8};&lt;/pre&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: How to achieve NRF52840 ESB Maximum data rate</title><link>https://devzone.nordicsemi.com/thread/532352?ContentTypeID=1</link><pubDate>Tue, 22 Apr 2025 12:52:00 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:05ce5087-4fa6-4d33-98b3-55beb9287e9f</guid><dc:creator>H&amp;#229;kon Alseth</dc:creator><description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;You will never reach the throughput equal to the on-air data rate, as there will be overhead in general (addressing, ramp-up etc).&lt;/p&gt;
&lt;p&gt;When you setup your ESB configuration, this needs to match on both PRX and PTX.&lt;/p&gt;
&lt;p&gt;Have you set the .noack member to the struct esb_payload variable that you&amp;#39;re using? To enable noack, you need to set this in the tx_payload variable:&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="text"&gt;tx_payload.noack = true;
err = esb_write_payload(&amp;amp;tx_payload);
...&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Kind regards,&lt;/p&gt;
&lt;p&gt;Håkon&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>