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

nrf52840 Bluetooth and 802.15.4 multiprotocol example project

Hi,

 For a number of upcoming projects we require 802.15.4 and BLE dynamic multiprotocol support. We need to select a SoC to implement this.

 We like the look of the nrf52840 and see multiprotocol  should be possible using the nRF-IEEE-802.15.4-radio-driver. 

 A number of people have already asked about this but is there an example showing this working yet? Or if someone has got it working would firstly say they've done it and then, maybe, let us have the code ( or even binary ) please?

 We have just had Silicon Labs pull 802.15.4 support from their modules that we were just about to design in so time is critical for us. We don't have the time to learn an API and get to grips with new hardware/software and the inevitable debugging to get to the point deciding to use the nrf52840. If we can prove multiprotocol works we will almost certainly use the nrf52840.

kind regards

Liam

  • I've had a go at getting this working today.

    Starting with my timeslots BLE template, I have combined it with my 802.15.4 example. I have compiled it and have got it to run.

     When I call sys_init (of system abstraction layer in the 802.15.4) I get an error:

    <error> app: SOFTDEVICE: INVALID ADDRESS MEMORY ACCESS

    The reported address is 0x2000.

    Any ideas? I have not really got past initialisation. Do I have to use the system abstraction layer to use 802.15.4? 

    kind regards

    Liam

  • Hello,

    The sys_init function uses the parameters from your IDE settings. I don't know what IDE you use, but in Segger Embedded Studio, it looks like this:

    In Keil it is found under project settings->Target->Read/Write Memory Areas.

    If you look at the project files for BLE vs. non BLE examples, that is, examples using the softdevice or not, there are different settings. The exact settings depends on your BLE application, but take these project settings from one of the BLE examples for the nRF52840, and copy them into your project. If you need to adjust these, it should be printed in the log (NRF_LOG) when the application starts.

    Best regards,

    Edvin

  • Hi Edvin,

    I am using Segger.

    I based my project on the SDK15 ble_template so the IDE settings are as there were originally set in this . As a test I transferred the values from the IEEE15.4 example and it stopped working altogether. Beyond that I do not know what settings to try.

    Can you confirm that multi protocol will actually work. I've found another post

    https://devzone.nordicsemi.com/f/nordic-q-a/36814/nrf52840-multiprotocol-ble-802-15-4-without-zboss/141729#141729

    It says "The 802.15.4 implementation in the regular SDK do not have the dynamic multiprotocol support that the Thread and Zigbee solutions have." 

    Its the regular SDK that I am trying to use.

    kind regards

    Liam

  • Hello Liam,

    You are right. I spoke to Jørgen, who answered the ticket that you linked.

    The 802.15.4 library in the SDK is an external library, which doesn't have API for integration with timeslots. The driver on GitHub is something that we wrote in Nordic, and it is made to support TimeSlot API.

    Another reason that the library in the SDK will not work is that it uses the same peripherals as the softdevice use, TIMER0 and RTC0, so they don't cooperate.

    Worth mentioning:

    The driver on github is also the drivers that are used in the Thread and ZigBee stacks, so it is well tested.

    So you are correct. You can't use the library from the SDK with TimeSlot API. You must use the drivers on GitHub if you want to use it in parallel with BLE.

    Best regards,

    Edvin

  • Hi Edvin,

    Thank you for confirming I can't use the SDK.

    I want to connect to an existing 802.15.4 coordinator using the github driver. Does this mean I have to write a partial MAC layer to do the associating? That is write code to do a beacon request, analyse the beacons and then do the association. I don't have to write a complete MAC stack; just enough to connect to my beaconless coordinators in the modes they use.

     It seems to be that the somewhere in the thread library the association cpde already exists. Is there anyway that it could be leveraged out and exposed?

    kind regards

    Liam

Related