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

7.x.x SDK compatibility with nRF51422 - V2 chips

To support a mix of v2 and v3 chips, I want to use the 7.x SDK. But I'm not sure it's compatible. The matrix at infocenter.nordicsemi.com/.../nRF51_Series_Compatibility_Matrix_v2.3.pdf contains a blank space:

image description

Is there meant to be an 7.x SDK there, or am I stuck maintaining two builds and SDK targets?

  • There's blank space there because there's no SDK which has the 8.0.0 SD plus library code compatible with the rev 2 chip. The last SDK with library code for the rev2 chip is 6.1, however you can use softdevice v8 with rev2 (provided you set a couple of flags).

    You're really better off using two builds and two SDKs, although you could use the 6.x SDK and the 8.x softdevice on both rev 2 and rev 3, that would work, just need to figure out which chip you have at runtime and turn the flags on, or not.

  • That's interesting, because I'm using SDK 7.1 with a rev 2 chip.

  • so you may be using the bits of the SDK which either still have the workarounds for the rev 2 bugs and not the newer drivers, or you've been fortunate not to hit the issues for which there are no-longer workarounds. it may work in many circumstances, but it's not tested and not guaranteed and you may well have intermittent issues.

  • Where would I look to find out which softdevices work with which SDK?

  • Good question and the source of much confusion. The Softdevice and the SDK really are two entirely different things. The softdevices work for a given range of chip revisions, the interface to them is very narrow indeed, it's a series of SVC calls, if the softdevice (SD) works for your chip, it works.

    The SDKs are a pile of library code, they deal with peripherals, they deal with BLE services, they deal with advertisement and bonding and other things. They are mostly SD agnostic. The major compatibility issues with the SDK come not from the SD piece but from the peripheral limitations which are or aren't worked around in the SDK code.

    The basic premise is if you have an SDK for library code and a SD for BLE code and you can compile it, it'll work. Doing this requires just removing the SDK SD headers and replacing with the SD you're using.

Related