Receiver Detection of Coded Phy Packets

For the RADIO peripheral of the nrf52(840), if you set up the radio to receive coded Phy transmissions, I have the opportunity where I can set the MODE for 125Kbps or 500Kbps.
Does the receiver care? Will it look at the CL field of the incoming packet to figure out what encoding is?? 

I only ask because I am attempting a simple, transmit from one nrf52840 dk to another nrf52840 dk board. It seems that no matter if I set the transmitter to S2 or S8, the receiver still receives the packets, almost like it automagically figures it out. There isn't any information on the operation of the receiver in the manual, about what its existence means to the receiver section. 

If the receiver on the radio can't automatically detect that the received packet is a different size. Then that means my coding selection on the transmitter board, isn't actually changing what I think it should, even if the Ozone debugger says the registers in the radio peripheral have changed. 

Thanks for help on esoteric questions.
AM

  • The product specification says "Long range 125 kbit/s TX, 125 kbit/s and 500 kbit/s RX" for Ble_LR125Kbit and "Long range 500 kbit/s TX, 125 kbit/s and 500 kbit/s RX" for Ble_LR500Kbit. So in RX mode, the two options are equivalent. The Coding Indicator field in the packet is used to select rate.

  • Thanks Emil!
    As you may or may not know, I am down this rabbit hole based on your post from before with the low-level direct packet c code you presented.

    I converted some of your code to the pre-built functions in the zephyr functions but mostly what you were doing ... 

    For example, to configure my receiver I use the following:

        volatile uint8_t phy = PHY_CODED;
        volatile uint8_t flags = PHY_FLAGS_S8 ;
        flags |= RADIO_PKT_CONF_PHY(phy);
    
    	radio_phy_set(phy, flags);
    	radio_pkt_configure(RADIO_PKT_CONF_LENGTH_8BIT, PDU_AC_LEG_PAYLOAD_SIZE_MAX,
    			    RADIO_PKT_CONF_PHY(phy));


    It's been fun. Thanks for the starting point. 

  • Ah, you really have to pay attention to the wording in the MODE register definition (6.20.14.48). I don't think I really would have noticed that till you put it up in my face. 

    Kind of would be nice if it was summarized as "Setting Long Range Receive mode can be 5 or 6." or simply just write "Put a 5 in MODE for long range Receive", and just ignore the other value.

    Thanks again.

Related