Hello,
We are developing a system using a receiver nRF unit, and multiple transmitter nRF units. The transmitters use the proprietary radio protocol (not bluetooth LE) to broadcast data periodically, which the receiver listens to.
We are using the nRF51 series reference manual 2.1, specifically section 16.1.2 and the proceeding pages. I understand that a radio packet on this protocol carries an ADDRESS
sequence, with BASE
and PREFIX
data concatenated.
I also understand that "in memory", the packet structure only contains S0
, LENGTH
, S1
, and PAYLOAD
, since the PREAMBLE
, ADDRESS
, and CRC
fields are "added dynamically when the packet is sent".
Using the NRF_RADIO
struct, I can access data like
NRF_RADIO->PREFIX0
and
NRF_RADIO->BASE1
We're using example projects as reference extensively, since most of us are more familiar with software APIs than electronics manuals.
In the nRF51 SDK, there is a project called radio_example. Both the receiver and the transmitter for this program include radio_config.h (!)
In other words, both entry points have pre-configured the NRF_RADIO->PREFIXn
and NRF_RADIO->BASEn
values (along with all other values like NRF_RADIO->TXADDRESS
and NRF_RADIO->RXADDRESSES
)
Due to this, it's unclear which fields need to be matching on both entry points, which fields are used by which entry points, and which fields are updated dynamically by receive/transmit calls.
Ideally, I would like to have each transmitter in my system preconfigured with a unique ADDRESS
, so that my receiver can read ADDRESS
fields from each received packet. Is this possible? And if so, how?
We have considered encoding the address info in the payload, but this is not ideal. Also note that our environment has many other nRF radio devices (due to other teams in the course), and some of them are using Bluetooth LE. We need address checking to distinguish our packets from garbage.
Kind Regards,