Beware that this post is related to an SDK in maintenance mode
More Info: Consider nRF Connect SDK for new designs
This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

ESB to sync clocks

I am building a product where a central device communicates with peripheral devices in a star topology. The main purpose of the communication is for the central device to know a delta time between an event on the central device and an event on the peripheral devices. I am trying to determine the best way to do this to achieve a low (few ms) error in the measured time. I do not need to use BLE for this, I was considering ESB. The central device is however also using BLE to communicate with an App, so I have already set up timeslot requests.

My idea is to send 'start' signals repeatedly to all peripherals to start a clock, and when all peripherals respond to a given signal then the central knows all peripherals have started their clocks and will also start its clock. Then peripherals record the timestamps that events occur and send them back to the central when possible.

The issue with using ESB for this is being able to communicate with several nodes at the same time to start the clocks. To be able to decide when a packet is sent, the central must be in PTX mode. But this would only give it the ability to communicate with one PRX node.

Do you have any suggestions for how this could be achieved? Is ESB a good protocol choice?

Related