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

nRF52832 Shockburst (not Enhanced) compatibility

Hi,

Browsing the API I only saw Enhanced shockburst support. I need air compatibility to an old 250kBit plain Shockburst communication. No auto ACK and no auto retransmit and no Packet Control Field.

Is there some sample code available? Or could you point me to the right places?

Thank you!

Best,

Mike

Parents
  • I just got the same problem,

    and found a solution by using this example: \nRF5_SDK_14.2.0_17b948a\examples\peripheral\radio\receiver

    I modified the following files to communicate (Rx/Tx) successful between NRF52832 and NRF24L01+

    • Shockburst (not ESB)
    • 250kBit
    • No auto ACK
    • Default NRF24L01 RX pipe0 address (0xE7E7E7E7E7)
    • Address len 5 byte
    • fixed payload len: 32 byte
    • CRC 16 bit

    main.c

    static uint32_t                   packet;              /**< Packet to transmit. */
    static uint8_t                    packet[32];         /**< Packet to receive 32 byte. */


    radio_config.c

    void radio_configure()

    {

    NRF_RADIO->MODE      = (RADIO_MODE_MODE_Nrf_1Mbit << RADIO_MODE_MODE_Pos);

    NRF_RADIO->MODE      = (RADIO_MODE_MODE_Nrf_250Kbit << RADIO_MODE_MODE_Pos);

    ...

    | ((uint32_t)swap_bits(0xC0) << 0); // Prefix byte of address 0 converted to nRF24L series format

    | ((uint32_t)swap_bits(0xE7) << 0); // Prefix byte of address 0 converted to nRF24L series format - default NRF24L01

    ....

    NRF_RADIO->BASE0 = bytewise_bitswap(0x01234567UL);  // Base address for prefix 0 converted to nRF24L series format
    NRF_RADIO->BASE0 = bytewise_bitswap(0xE7E7E7E7UL);  // Base address for prefix 0 converted to nRF24L series format - default

    }


    radio_config.h
    #define PACKET_STATIC_LENGTH        (1UL)                   //!< Packet static length in bytes
    #define PACKET_STATIC_LENGTH        (32UL)                   //!< Packet static length in bytes

Reply
  • I just got the same problem,

    and found a solution by using this example: \nRF5_SDK_14.2.0_17b948a\examples\peripheral\radio\receiver

    I modified the following files to communicate (Rx/Tx) successful between NRF52832 and NRF24L01+

    • Shockburst (not ESB)
    • 250kBit
    • No auto ACK
    • Default NRF24L01 RX pipe0 address (0xE7E7E7E7E7)
    • Address len 5 byte
    • fixed payload len: 32 byte
    • CRC 16 bit

    main.c

    static uint32_t                   packet;              /**< Packet to transmit. */
    static uint8_t                    packet[32];         /**< Packet to receive 32 byte. */


    radio_config.c

    void radio_configure()

    {

    NRF_RADIO->MODE      = (RADIO_MODE_MODE_Nrf_1Mbit << RADIO_MODE_MODE_Pos);

    NRF_RADIO->MODE      = (RADIO_MODE_MODE_Nrf_250Kbit << RADIO_MODE_MODE_Pos);

    ...

    | ((uint32_t)swap_bits(0xC0) << 0); // Prefix byte of address 0 converted to nRF24L series format

    | ((uint32_t)swap_bits(0xE7) << 0); // Prefix byte of address 0 converted to nRF24L series format - default NRF24L01

    ....

    NRF_RADIO->BASE0 = bytewise_bitswap(0x01234567UL);  // Base address for prefix 0 converted to nRF24L series format
    NRF_RADIO->BASE0 = bytewise_bitswap(0xE7E7E7E7UL);  // Base address for prefix 0 converted to nRF24L series format - default

    }


    radio_config.h
    #define PACKET_STATIC_LENGTH        (1UL)                   //!< Packet static length in bytes
    #define PACKET_STATIC_LENGTH        (32UL)                   //!< Packet static length in bytes

Children
Related