Convinient way to integrate nRF module to a system

Good Evening!

We are designing a project using BLE; however, it requires quite heavy processing. We are still at a low level with pure C to save power, but the MCUs offered by nRF are too weak for us, and we don't want to change everything. At this moment, we were using the BLE module from STM but decided to switch to the Ublox one because we need a ready-to-go module with full certification, etc., and the STM one is too expensive.

Recently, I got a BMD-360 dev board with nrf52811 as ble MCU and started my investigation. And I am fully disappointed.

First of all, I was reading a little bit about NRF firmware, etc., and had already heard about possibilities for making a connection between the Bluetooth module and the application MCU. 

Second, I was 200% sure (even now) that my use case is the most frequent. 

But it turns out that there is no "good" way to do so.

I found 3 options on your website:

  1. Legacy serialization protocol. That sounds nice. I was able to build it and flash it. But next, I realized that there are no standalone libraries. I can attempt to use SDK to build something for an application MCU, but a review of the source code makes me doubt if it is a good solution
  2. Remote Procedure Calls. Really bad documentation, no libraries, no explanation, no anything to start with.
  3. HCI Transport protocol. It has Zephyr support, so it can be compiled even for STM, but a) it does not work with nrf52811 because it requires 40+ kB RAM, and b) I don't want to rewrite the whole project to be Zephyr compatible. 
  4. Of course, making your own firmware with your own protocol could be CPU efficient for us and save a little bit of processing power, but we have dev time limits. This is the last resort.

So, every solution is worse than the previous :) I still hope that I don't know the name of the protocol or haven't found information on google. How do you solve this issue?

  • Hi

    What is the Bluetooth module you are trying to connect to here? Is it the STM module you mention? If so, what kind of application is running on this device? What are you planning on using the nRF52811 for here exactly. It is one of the smaller devices we have in terms of RAM and flash memory and number of peripherals, etc. So if you're doing a lot of heavy processing that might not be the way to go. Can you share some more details on what your use case is exactly so I understand what it is you want to do, and what application you're after. You say you're working on bare metal C programming for saving power, but I'd strongly suggest using the nRF Connect SDK based on the Zephyr RTOS, that has power management APIs to keep the device power lower. If not, you can use the nRF5 SDK, which is older, but apart from the SoftDevice link layer it is lower level, check it out here. Note that new features are not coming to this SDK as it is in maintenance mode.

    Best regards,

    Simon

Related