mirror of
https://gitee.com/Vancouver2017/luban-lite.git
synced 2025-12-18 01:58:56 +00:00
68 lines
2.6 KiB
ReStructuredText
68 lines
2.6 KiB
ReStructuredText
|
|
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.
|