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

Coded phy with NRF_RADIO

I have been trying to get 125Kbit and 500Kbit coded phy wokring by directly using NRF_RADIO API (no softdevice in use). I have followd for example these instructions, but have not been able to send packet between two development kits. 1Mbit and 2Mbit PHYs works just fine without problems. Development kits I'm using are pca10056 version 1.0.0 (2018.20) and SDK is 15.0.0.

Is the configuration in the link correct or should I do some other configuration also to get it working? I used logical address 0 on the tests.

  • Hi,

    These changes should be sufficient. What exactly is not working? Are you not receiving anything? 

    Note that there is additional event PHYEND when the Ble_LRxxxKbit modes are used:

    EVENTS_PHYEND - Generated in Ble_LR125Kbit, Ble_LR500Kbit and BleIeee802154_250Kbit modes when last bit is sent on air.

    Best regards,
    Jørgen

  • Hi,

    Thank You, EVENTS_PHYEND did the trick, now I'm able to send the packets between the two development boards.

    There is still a bit strange behavior on the receiving end (compared to 1Mbit and 2Mbit PHY's). I had to add 1ms delay to the receiving function (see the code below). Without the delay, function stays on waiting EVENTS_READY. Any thoughts why is this?

    NRF_RADIO->EVENTS_READY = 0U;
    NRF_RADIO->TASKS_RXEN = 1U;

    nrf_delay_ms(1);

    while(NRF_RADIO->EVENTS_READY == 0U)
    {
        __NOP();
    }

    NRF_RADIO->EVENTS_END = 0U;
    NRF_RADIO->TASKS_START = 1U;

    while(NRF_RADIO->EVENTS_END == 0U)
    {
        __NOP();
    }

    if(NRF_RADIO->CRCSTATUS != 1U)
    {
        NRF_LOG_INFO("CRC ERROR");
    }

    NRF_RADIO->EVENTS_DISABLED = 0U;
    NRF_RADIO->TASKS_DISABLE   = 1U;

    while (NRF_RADIO->EVENTS_DISABLED == 0U)
    {
        __NOP();

    }

    BR,

       Janne

  • Hi Janne,

    I am having a similar problem with the coded PHY.

    How exactly did PHYEND solve your problem? I'm stuck with non-working ACK packets.

    Thanks

    Johannes

Related