CrossWorks with nRF5 SDK

Comments

1 comment

  • Avatar
    Philip Ouellette

    The Nordic Semi SDK is very helpful for making the radio work. Less helpful for everything else.

     

    Biggest problem I ran into was that the SDK_Config.h file in each example has been stripped down to only enable the functionality you need for that example. Makes merging examples infuriating.  Before I figured it out, I basically gave up and returned to the Keil toolchain which was ok since my app fit in Keil's free 32K code size limit.

     

    There is a complete (almost) SDK_Config.h file lurking somewhere in the SDK. Check the documentation on Nordic Semi's website to help you find it.

    That and the SDK's annoying structure (nested folder paths get so deep that windows environment limitations can break you). Me sure to make the SDK a root folder on your C: drive.

    Another issue with the SDK is the rediculous level of indirection for the simplest of things. Toggling an LED means making 5 nested call/returns.  I tried using the SPI demo in the SDK to read an ADC and it was faster to just read the data by bit bang GPIO (once I had stripped all the nested call crap from GPIO access).

    The ESB radio app in the SDK is excellent (and it can run packets twice as fast if you make the change below). Nordic Semi claims this change breaks backwards compatibility with the nRF51. I don't see why it would since the change is inside an #ifdef NRF52 block.

    nrf_esb.c

    static ret_code_t apply_address_workarounds()
    {
    #ifdef NRF52
    // Set up radio parameters.
    //NRF_RADIO->MODECNF0 = (NRF_RADIO->MODECNF0 & ~RADIO_MODECNF0_RU_Msk) | RADIO_MODECNF0_RU_Default << RADIO_MODECNF0_RU_Pos;
    NRF_RADIO->MODECNF0 = (NRF_RADIO->MODECNF0 & ~RADIO_MODECNF0_RU_Msk) | RADIO_MODECNF0_RU_Fast << RADIO_MODECNF0_RU_Pos;


    // Workaround for nRF52832 Rev 1 Errata 102 and nRF52832 Rev 1 Errata 106. This will reduce sensitivity by 3dB.
    *((volatile uint32_t *)0x40001774) = (*((volatile uint32_t *)0x40001774) & 0xFFFFFFFE) | 0x01000000;
    #endif
    return NRF_SUCCESS;
    }

     

     

    0
    Comment actions Permalink

Please sign in to leave a comment.