| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- Configure clock for controller
- ------------------------------
- The NimBLE stack uses OS cputime for scheduling various events inside
- controller. Since the code of controller is optimized to work with 32768
- Hz clock, the OS cputime has to be configured accordingly.
- To make things easier, controller package (``net/nimble/controller``)
- defines new system configuration setting ``BLE_LP_CLOCK`` as sets it to
- ``1`` so other packages can be configured if necessary. The next section
- describes configuration required for controller to work properly.
- System configuration
- ~~~~~~~~~~~~~~~~~~~~
- **Note:** All BSPs based on nRF5x have below settings automatically
- applied when ``BLE_LP_CLOCK`` is set, there is no need to configure this
- in application.
- The following things need to be configured for NimBLE controller to work
- properly:
- - OS cputime frequency shall be set to ``32768``
- - OS cputime timer source shall be set to 32768 Hz clock source
- - Default 1 MHz clock source can be disabled if not used by application
- - 32768 Hz clock source shall be enabled
- - Crystal settling time shall be set to non-zero value (see below)
- For example, on nRF52 platform timer 5 can be used as source for 32768
- Hz clock. Also, timer 0 can be disabled since this is the default source
- for OS cputime clock and is no longer used. The configuration will look
- as below:
- ::
- syscfg.vals:
- OS_CPUTIME_FREQ: 32768
- OS_CPUTIME_TIMER_NUM: 5
- TIMER_0: 0
- TIMER_5: 1
- BLE_XTAL_SETTLE_TIME: 1500
- On nRF51 platform the only difference is to use timer 3 instead of timer
- 5.
- On platforms without 32768 Hz crystal available it usually can be
- synthesized by setting ``XTAL_32768_SYNTH`` to ``1`` - this is also
- already configured in existing BSPs.
- Crystal settle time configuration
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- The configuration variable ``BLE_XTAL_SETTLE_TIME`` is used by the
- controller to turn on the necessary clock source(s) for the radio and
- associated peripherals prior to Bluetooth events (advertising, scanning,
- connections, etc). For the nRF5x platforms, the HFXO needs to be turned
- on prior to using the radio and the ``BLE_XTAL_SETTLE_TIME`` must be set
- to accommodate this time. The amount of time required is board
- dependent, so users must characterize their hardware and set
- ``BLE_XTAL_SETTLE_TIME`` accordingly. The current value of 1500
- microseconds is a fairly long time and was intended to work for most, if
- not all, platforms.
- Note that changing this time will impact battery life with the amount
- depending on the application. The HFXO draws a fairly large amount of
- current when running so keeping this time as small as possible will
- reduce overall current drain.
|