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

nRF51822 No Longer Advertising After Updating to SD 8.0

We had been trying to use SD 7.0 with SDK 6.1.0, but realized our libraries were mixed up and not controlled very well, and we were experiencing occasional crashes where the chips would fall off and stop running. Trying to organize everything and straighten out all our includes, I downloaded the newest stuff (SD 8.0 with SDK 8.1.0).

After cleaning up the project, I flashed 12 devices with the new program, and 8 of them work like champions and seem to be avoiding the occasional crash symptom we were experiencing before, but the other 4 wouldn't advertise and were behaving erratically when we looked through the debugger (J-Link through Keil v5). Reading the release notes for SD 8.0 I realized our chips were QFABB0 which I believe is rev 2 and there are a few reasons why I shouldn't be using SD 8.0.

Lesson learned, so I rolled back to the old project (that used to work, albeit with issues) and after flashing SD 7.0 to the chips pushed the old program back. The 8 that worked under SD 8.0 continued to operated when rolled back, but the 4 that stopped working, continued to not advertise after the rollback. We have an LED tied to the advertising loop, and everything seems to be running correctly, just the radio never sends out the advertising messages.

Is there something I could have changed on the non-working boards that I can't undo by doing an "Erase All" in nrfGo? If so, is there a way to do a more complete reset? This isn't a very large sample size and I can throw some more boards into the mix tomorrow, I just don't want to waste boards if I'm doing something irreversible.

Thanks, Jeremy

Parents
  • Looking into the compatibility matrix, it does seem that Rev2 and SDK8.1 go together. Anyhow you can try this below, i am not sure if it will work but it is worth a try.

    "A new option allows the application to enable radio and CPU mutual exclusion:

    The new option allows applications to enable mutual exclusion between the radio and the CPU. BLE_COMMON_OPT_RADIO_CPU_MUTEX. This mutual exclusion is required to be enabled when running on nRF51 series IC revision 2 (devices affected by PAN #44 "CCM may exceed real time requirements" or PAN #45 "AAR may exceed real time requirements")."

    These PAN's were fixed in rev 3 hardware and the SD8.0 assumes you are using rev 3.

Reply
  • Looking into the compatibility matrix, it does seem that Rev2 and SDK8.1 go together. Anyhow you can try this below, i am not sure if it will work but it is worth a try.

    "A new option allows the application to enable radio and CPU mutual exclusion:

    The new option allows applications to enable mutual exclusion between the radio and the CPU. BLE_COMMON_OPT_RADIO_CPU_MUTEX. This mutual exclusion is required to be enabled when running on nRF51 series IC revision 2 (devices affected by PAN #44 "CCM may exceed real time requirements" or PAN #45 "AAR may exceed real time requirements")."

    These PAN's were fixed in rev 3 hardware and the SD8.0 assumes you are using rev 3.

Children
  • I did attempt to enable BLE_COMMON_OPT_RADIO_CPU_MUTEX using sd_ble_opt_set() and that didn't seem to help while using 8.0. I'm happy moving back to SD 7.0, but is there something I might have permanently messed up on my rev 2 chip by flashing 8 on it that might be recoverable, or am I probably looking at a mechanical hardware failure that may have happened at some other step in the process and I'm looking in the wrong place? The chips seem to function completely normally (once rolling back to 7.0) whether stepping through with a debugger, or watching a status LED while free running; however, they aren't broadcasting the advertisement message like fresh chips do if configured with the same SD+program.

    Thanks for the quick response, Jeremy

  • The software on board in no way could create a permanent damage to the chip (unless you write to flash too many times and wear it out). I do not think that this behavior is caused by flashing SD8 and rolling back. Something else might have happened physically. "nrfjprog -e" or nrfGo eraseall should roll it back to factory reset firmware setting.

  • I'm having a similar issue when upgrading from hardware rev2 to rev3, the device seems to be working (led blinking, button working) but I don't get any advertising packages. I'm using SDK 8.1.0 and S110 8.0. Did you solve the issue?

Related