Hi, I'm currently evaluating using a nRF52810 based module to synchronize time between a number (2-20) of the same devices. I currently have a working prototype using an ESP32 but the power consumption is too high for my needs, so I am considering this module instead. The device sends a square wave signal out via a GPIO pin at a certain rate (the signal out contains the time for an external device to read).
I have a few questions:
1. If I use an external TXOX 32.768 kHz with +-3PPM accuracy, will I be able to accurately keep time on the device within the crystal's stated accuracy, or is there a limit to the accuracy of an external clock source?
2. There is 1 host device with the "master clock" and 1+ clients. I am currently synchronizing time by sending a request from the client device to the host device (ping) and getting a response with the time (pong) and measuring the latency both ways, averaging it, and then adding that to the time sent by the host. I am doing this currently via the ESP32's 2.4GHz wireless protocol (and not Bluetooth). Is this approach still viable within ~2ms accuracy through BLE on the nRF52810?
3. The current method works for up to 20 devices on the same channel, but I'm aware that BLE has limitations on the number of concurrent connections. To get around this limitation, I'm thinking that I could stagger the synchronizations so that the host only allows a certain number of "sync requests" at one time. If a client attempts to connect to a host that already has the maximum number of connections, it would have to retry at a later time. Does this approach make sense, or is there a better way to handle a large number of devices communicating with each other like this?