This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

Unexpected Address matching

Hi,

I running the radio transmitter and receiver examples provided in the nRF5 v11 SDK. However, I am observing some unexpected address matching

Setup: nRF5_SDK_11.0.0-2.alpha_bc3f6a0

Board: PCA10036 v1.1.0

IAR: 7.40.3.8938

Code base used

Examples/peripheral/radio/Receiver

Examples/peripheral/radio/Transmitter

Instead of using the default prefix0 and base0 addresses provided in radio_config.c I am adjusting the base0 and prefix0 register

NRF_RADIO->BASE0 = 0xa5a5a5a5U; // changed to the addresses below depending if in receive or transmit mode

NRF_RADIO->PREFIX0 = 0x00000000U;

           Base0              Expected  behaviour         Observed

Receiver    :  0xa5a5a5a5       Packet received    Packet received
Transmitter :  0xa5a5a5a5

Receiver    :  0x05a5a5a5       No Packet              No Packet
Transmitter :  0xa5a5a5a5

Receiver     :  0x00a5a5a5      No Packet              No Packet 
Transmitter  :  0xa5a5a5a5

Receiver     :  0x0005a5a5      No Packet           receiving few packets (contents 0)
Transmitter  :  0xa5a5a5a5

Receiver     :  0x0000a5a5      No Packet        receiving lots of packets (contents 0) 
Transmitter  :  0xa5a5a5a5

However, if the prefix is set back to 0xc3438303 as provided in the example code, the receiver set to 0x0000a5a5 and transmitter to 0xa5a5a5a5, no packets are received as expected

Is there a restriction on base/prefix addresses that can be used?

  • I typically use these set of rules are from the Bluetooth specification (see Bluetooth Core Specifications 4.2 Vol 6, Part B, section 2.1.2 - Access Address ) the as these are general radio rules as well:

    The Access Address should meet the following requirements:

    • It shall have no more than six consecutive zeros or ones.

    • It shall not be a sequence that differs from the advertising channel packets Access Address (0x8E89BED6) by only one bit. : In addition do not choose the access addresses (if you are using many) so that they differ only by 1 bit.

    • It shall not have all four octets equal.

    • It shall have no more than 24 transitions.

    • Should not start with 0xAA or 0x55 (so it does not match the preamble)

    • It shall have a minimum of two transitions in the most significant six bits

    Transition is a 1 to 0 or 0 to 1 in the bit pattern.

  • I seem to be getting correlation on addresses

    The radio transmit example code has been modified to transmit 10,000 times with a 5 ms delay inbetween each transmission. The PCA100036 board with the receive program address set up to a different base0 address, it still picks up unexpected packets.

    This happens with prefix0 set 0xc3438303

    receive NRF_RADIO->BASE0 = 0x3109429E transmit NRF_RADIO->BASE0 = 0x31084258

    from what I see, these addresses should be conforming to the recommend rules on address requirements.

    again with

    receive NRF_RADIO->BASE0 = 0x23094254 transmit NRF_RADIO->BASE0 = 0x23084292

    I have checked the radio PCNF1 register, the BALEN is set to 4 and the ENDIAN set to 1(big)

    main.c transmitter main.c

    main.c receiver main.c

Related