<?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>Proprietary radio 2.4Ghz transmit and receive sample applications in nRFconnect SDK</title><link>https://devzone.nordicsemi.com/f/nordic-q-a/94445/proprietary-radio-2-4ghz-transmit-and-receive-sample-applications-in-nrfconnect-sdk</link><description>Hi, 
 
 I need to transmit and recieve data over the 2.4GHz radio. I have customized packets to be sent and received over the radio. But I dont want to use ESB or Gazell protocols. 
 Is there any sample code that has the simple transmit and receive functions</description><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Mon, 19 Dec 2022 09:55:42 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://devzone.nordicsemi.com/f/nordic-q-a/94445/proprietary-radio-2-4ghz-transmit-and-receive-sample-applications-in-nrfconnect-sdk" /><item><title>RE: Proprietary radio 2.4Ghz transmit and receive sample applications in nRFconnect SDK</title><link>https://devzone.nordicsemi.com/thread/401205?ContentTypeID=1</link><pubDate>Mon, 19 Dec 2022 09:55:42 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:1d7040b5-7579-4cb4-8e0d-3ad43b22d3d6</guid><dc:creator>Priyanka</dc:creator><description>&lt;p&gt;Hi Ajit,&lt;/p&gt;
&lt;p&gt;Sorry for the delayed response. Please take a look at the&lt;a href="https://developer.nordicsemi.com/nRF_Connect_SDK/doc/latest/nrf/ug_esb.html#:~:text=Any%20packet%20that%20is%20transmitted%20from%20a%20PTX%20to%20a%20PRX%20is%20uniquely%20identified%20by%20a%20two%2Dbit%20packet%20ID%20field%20(PID)%20in%20the%20packet%20header%20together%20with%20the%20packet%E2%80%99s%20Cyclic%20Redundancy%20Check%20(CRC)%20field.%20This%20packet%20ID%20is%20used%20to%20distinguish%20a%20new%20packet%20from%20the%20previous%20packet%20if%20it%20has%20the%20same%20payload."&gt; packet identification&lt;/a&gt; in the ESB.&amp;nbsp;&lt;/p&gt;
[quote user="Ajitsj"]We changed the CNF0 register values to zero as below[/quote]
&lt;p&gt;So you have disabled the header, but&amp;nbsp;it will cause issues every time the library tries to read one of these values. So, you&amp;nbsp;need to change any part of the library where these values are used.&lt;/p&gt;
&lt;p&gt;You could try looking into&amp;nbsp;&lt;span&gt;&amp;quot;dpl_pdu&amp;quot; or &amp;quot;fixed_pdu&amp;quot; in esb.c. These are the places that use these values.&amp;nbsp;dpl_pdu is used if you configure the library in ESB_DPL mode, otherwise fixed_pdu is used.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;But since you disable the header, it would be better to use the ESB mode.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Proprietary radio 2.4Ghz transmit and receive sample applications in nRFconnect SDK</title><link>https://devzone.nordicsemi.com/thread/398693?ContentTypeID=1</link><pubDate>Fri, 02 Dec 2022 08:15:27 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:f4c91eff-b546-4304-bf57-122aff7c9e33</guid><dc:creator>Ajitsj</dc:creator><description>&lt;p&gt;Hi Priyanka,&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Thanks for your reply. We are using the ESB example &amp;quot;radio_ptx&amp;quot; now and made some changes to transmit our payload.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Our protocol requires the data to be sent in the below mentioned format.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&amp;nbsp;Header &amp;lt;-----------&amp;gt; Data &amp;lt;-----------&amp;gt; CRC&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;(5 bytes)&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(21 bytes)&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; (2 bytes)&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;The Header in turn consists of the following&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Preamble -&amp;gt; 1byte&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Address -&amp;gt; 4 bytes&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;The payload data that we would want to transmit is &lt;strong&gt;21 bytes&lt;/strong&gt; long.&lt;/p&gt;
&lt;p&gt;To achieve this packet we did the following changes in &amp;quot;esb_config&amp;quot; structure in &amp;quot;main.c&amp;quot; of &amp;quot;radio_ptx&amp;quot; project.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&lt;strong&gt;struct esb_config config = &lt;span style="background-color:#ffffff;"&gt;ESB_DEFAULT_CONFIG&lt;/span&gt;;&lt;/strong&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&lt;strong&gt;config.bitrate = &lt;span style="background-color:#ffff00;"&gt;ESB_BITRATE_1MBPS&lt;/span&gt;;&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;We also had to make the changes in the esb.c file.&lt;/p&gt;
&lt;p&gt;1) We changed the value written to the CRCPOLY register from 0x11021 to 0x1021&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;&lt;span&gt;&amp;nbsp;&lt;strong&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/strong&gt;&lt;/span&gt;&lt;strong&gt;NRF_RADIO-&amp;gt;CRCPOLY = &lt;span style="background-color:#ffff00;"&gt;0x1021UL&lt;/span&gt;; /* CRC poly: x^16+x^12^x^5+1 */ //&amp;nbsp;&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;2) We changed the CNF0 register values to zero as below&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;strong&gt;&amp;nbsp; &amp;nbsp; NRF_RADIO-&amp;gt;PCNF0 = (&lt;span style="background-color:#ffff00;"&gt;0&lt;/span&gt; &amp;lt;&amp;lt; RADIO_PCNF0_S0LEN_Pos) |&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;strong&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(&lt;span style="background-color:#ffff00;"&gt;0&lt;/span&gt; &amp;lt;&amp;lt; RADIO_PCNF0_LFLEN_Pos) |&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;strong&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(&lt;span style="background-color:#ffff00;"&gt;0&lt;/span&gt; &amp;lt;&amp;lt; RADIO_PCNF0_S1LEN_Pos);&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;span&gt;3) We changed the &amp;quot;&lt;/span&gt;&lt;/span&gt;addr_length&amp;quot; to 4 since&amp;nbsp;&lt;span&gt;we want the address to be just 4 byte long. So now&amp;nbsp;3bytes from address bytes are used and 1 byte from prefix is used. We also&amp;nbsp;changed the base address and prefix address default values in the structure.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;strong&gt;static struct esb_address esb_addr = {&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;strong&gt;&amp;nbsp; &amp;nbsp; .base_addr_p0 = {&lt;span style="background-color:#ffff00;"&gt;0xA9, 0x44, 0xA9, 0xA5&lt;/span&gt;},&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;strong&gt;&amp;nbsp; &amp;nbsp; .base_addr_p1 = {&lt;span style="background-color:#ffff00;"&gt;0x00, 0x00, 0x00, 0x00&lt;/span&gt;},&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;strong&gt;&amp;nbsp; &amp;nbsp; .pipe_prefixes = {&lt;span style="background-color:#ffff00;"&gt;0xA5&lt;/span&gt;, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;strong&gt;&amp;nbsp; &amp;nbsp; .addr_length = &lt;span style="background-color:#ffff00;"&gt;4&lt;/span&gt;,&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;strong&gt;&amp;nbsp; &amp;nbsp; .num_pipes = CONFIG_ESB_PIPE_COUNT,&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;strong&gt;&amp;nbsp; &amp;nbsp; .rf_channel = 2,&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;strong&gt;&amp;nbsp; &amp;nbsp; .rx_pipes_enabled = 0xFF&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;strong&gt;};&lt;/strong&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Then we copy 21bytes of data payload onto tx_payload.data and transmit the payload.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;&lt;strong&gt;&amp;nbsp; &amp;nbsp; memcpy(tx_payload.data, &amp;amp;Pkt, 21);&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;strong&gt;&amp;nbsp; &amp;nbsp; esb_flush_tx();&lt;/strong&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;&lt;strong&gt;&amp;nbsp; &amp;nbsp; &lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;strong&gt;&amp;nbsp; &amp;nbsp; err = esb_write_payload(&amp;amp;tx_payload);&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;strong&gt;&amp;nbsp; &amp;nbsp; if (err) {&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;strong&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; LOG_ERR(&amp;quot;Payload write failed, err %d&amp;quot;, err);&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;strong&gt;&amp;nbsp; &amp;nbsp; }&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;We do not get any error for&amp;nbsp;&lt;strong&gt;esb_write_payload&amp;nbsp;&lt;/strong&gt;function. However we get the following prints continuously.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;strong&gt;D: TX FAILED EVENT&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;D: TX FAILED EVENT&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;D: TX FAILED EVENT&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;These prints are coming from the following &amp;quot;event_handler&amp;quot; function in &amp;quot;main.c&amp;quot; file of &amp;quot;radio_ptx&amp;quot; project.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;&lt;strong&gt;void event_handler(struct esb_evt const *event)&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;strong&gt;{&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;strong&gt;&amp;nbsp; &amp;nbsp; ready = true;&lt;/strong&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;strong&gt;&amp;nbsp; &amp;nbsp; switch (event-&amp;gt;evt_id) {&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;strong&gt;&amp;nbsp; &amp;nbsp; case ESB_EVENT_TX_SUCCESS:&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;strong&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; LOG_DBG(&amp;quot;TX SUCCESS EVENT&amp;quot;);&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;strong&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; break;&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;strong&gt;&amp;nbsp; &amp;nbsp; case ESB_EVENT_TX_FAILED:&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;strong&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; LOG_DBG(&amp;quot;TX FAILED EVENT&amp;quot;);&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;strong&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; break;&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;strong&gt;&amp;nbsp; &amp;nbsp; case ESB_EVENT_RX_RECEIVED:&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;strong&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; while (esb_read_rx_payload(&amp;amp;rx_payload) == 0) {&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;strong&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; LOG_DBG(&amp;quot;Packet received, len %d : &amp;quot;&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;strong&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;quot;0x%02x, 0x%02x, 0x%02x, 0x%02x, &amp;quot;&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;strong&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;quot;0x%02x, 0x%02x, 0x%02x, 0x%02x&amp;quot;,&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;strong&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; rx_payload.length, rx_payload.data[0],&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;strong&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; rx_payload.data[1], rx_payload.data[2],&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;strong&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; rx_payload.data[3], rx_payload.data[4],&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;strong&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; rx_payload.data[5], rx_payload.data[6],&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;strong&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; rx_payload.data[7]);&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;strong&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;strong&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; break;&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;strong&gt;&amp;nbsp; &amp;nbsp; }&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;strong&gt;}&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;Looks like it&amp;#39;s getting some transmit failed interrupts. Could you please let me know what could be wrong? Or how do I solve this error?&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;Thanks and regards&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;Ajit&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Proprietary radio 2.4Ghz transmit and receive sample applications in nRFconnect SDK</title><link>https://devzone.nordicsemi.com/thread/398542?ContentTypeID=1</link><pubDate>Thu, 01 Dec 2022 13:06:24 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:c3b8e360-8e89-43d8-87fe-f578831cb5ec</guid><dc:creator>Priyanka</dc:creator><description>&lt;p&gt;Hi Ajit,&lt;/p&gt;
&lt;p&gt;We have the Radio &lt;a href="https://infocenter.nordicsemi.com/topic/com.nordic.infocenter.sdk5.v15.0.0/nrf_dev_radio_tx_example.html?cp=8_5_4_4_5_28"&gt;transmitter&lt;/a&gt;&amp;nbsp;and &lt;a href="https://infocenter.nordicsemi.com/topic/com.nordic.infocenter.sdk5.v15.0.0/nrf_dev_radio_rx_example.html?cp=8_5_4_4_5_27"&gt;receiver&lt;/a&gt; samples in nRF5 SDK. We don&amp;#39;t have anything similar in the nRF Connect SDK and the closest will be using ESB. But you can maybe use this code and modify it too, though we would not recommend working this low level because in case later on you need to develop code for retransmission, pairing etc, then it would be quite difficult and you will end up with codes similar to what you get if you initially began with ESB, Gazell etc.&lt;/p&gt;
&lt;p&gt;Best Regards,&lt;/p&gt;
&lt;p&gt;Priyanka&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>