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

Enhanced ShockBurst on nrf51 - Many receivers issue

Hi all, I have been using Nordic chip-sets for a while mainly for BLE applications. I am now developing a simple lighting product based on Nordic nrf51 family chip-set where some devices send short messages to each other. I could easily use BLE as horsepower protocol but it would be an overkill for such a simple application and I also want to avoid any BLE qualification process together with paying a license to Bluetooth SIG. Indeed the application doesn't need any compatibility with smartphones or other BLE devices and so implementing my proprietary protocol could be a suitable solution.

For doing that, I thought to implement my protocol on top of the "Enhanced ShockBurst" stack provided by Nordic. It seems to be very easy and lightweight and so perfect for my application.

The only problem is that it seems to be developed for sending data from many transmitters to one receiver only while I would need the opposite or at least many receivers listening for a message. Is this limitation due to the acknowledge message back from the receiver to the transmitter causing a conflict? If yes, can I disable this acknowledge message enabling so the reception to many units? Indeed I noticed that it should be possible to disable it in code.

What do you think about it?

Thank you. Regards.

Marco

Parents
  • Hi Marco,

    Yes, you can configure ESB to not having ACK. I don't see any problem using ESB in your application. What you need to do is when you configure , you set the protocol to NRF_ESB_PROTOCOL_ESB_DPL and set the selective_auto_ack bit to 1.

    This is to allow the PRX when receive a packet can check if it need to send ACK back or not (make sure to configure the same setting on both sides).

    Then when you send a packet, set the noack bit in that packet to 1.

    If you still want to have an ACK from the receivers, you can set up a protocol that the PRX will switch to PTX and send a packet back with a random delay time (to avoid all PRXs send that ack at the same time). This is not implemented and you need to do this in the application.

  • Hello Hung, thank you for your reply. So, in this configuration, the PRX is always ready to send an eventual ACK if the received message, sent by the PTX, requires one. Anyway, I'll try this asap. Thank you.

Reply Children
No Data
Related