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

Synchronization of two placed closed nRF52840

Hello

In this thread we discussed a possability of building a system with large number of conecctions. So, we need to get data from 30 peripheral nodes on one central host. The idea is to use 2 nRF52840 (this chip is selected because we need to have a long working range up to 150 meter in line of sight conditions).The problem is that 2 placed close nRF52840 will interfere with each other, so TX and RX events should be synchronized. Idealy if this events will be without any overlaying. So how this can be synchronized? In which direction I should study documentation? If you have any other ideas for solving problem with 30 connections on the host I will be happy to consider them.

Thanks in advance.

Parents
  • Hi,

    I think it's too complex task to go this way at all - think about crystal frequency deviation, you will see up to 80 usec shift between boards every second. You cannot control internal timings of SoftDevice. A much simpler way is to split BLE frequency range into two halves with channel maps - for example, odd channels for first board, even channels for second one.

  • Hi, thanks for the answer.
    It's really interesting way, but it seems to me that there will be too much noise from second chip will be on the first one even if it uses different (but close!) channels. Anyway, how can I control channels by soft? (I mean which libraries, functions ..)

    You cannot control internal timings of SoftDevice.

    Why? Softdevice use App Timer (as I know), is it impossible to synchronize it?

Reply Children
  • You can change channel map with sd_ble_gap_opt_set(BLE_GAP_OPT_CH_MAP). Maybe it's not optimal idea to split by even-odd channels, but group them, for example, by 5 - just ensure that some wideband source of interference, like wifi AP, will not cover one of your boards entirely.

    Why? Softdevice use App Timer (as I know), is it impossible to synchronize it?

    Softdevice resources (including RTC0) are protected and cannot be accessed directly from your code, only via SoftDevice API. With API, you have control only over connection interval and channel map, there are no methods  to force a connection event at distinct time.

Related