<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="https://devzone.nordicsemi.com/cfs-file/__key/system/syndication/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Initialising the SoftDevice at boot vs. when required</title><link>https://devzone.nordicsemi.com/f/nordic-q-a/86452/initialising-the-softdevice-at-boot-vs-when-required</link><description>I’m new to development with the nRF platform and have a general question on using a SoftDevice. A bit of background: in our application we only need BLE for OTA updates and UART functionality for a special development mode we put the device in. At all</description><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Fri, 01 Apr 2022 09:16:47 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://devzone.nordicsemi.com/f/nordic-q-a/86452/initialising-the-softdevice-at-boot-vs-when-required" /><item><title>RE: Initialising the SoftDevice at boot vs. when required</title><link>https://devzone.nordicsemi.com/thread/361174?ContentTypeID=1</link><pubDate>Fri, 01 Apr 2022 09:16:47 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:c0a80ce4-d082-40e0-adb4-52ca2f135b03</guid><dc:creator>SoWizard</dc:creator><description>&lt;p&gt;&lt;span&gt;This is exactly the response I was looking for. Brilliant. Thanks Einar.&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Initialising the SoftDevice at boot vs. when required</title><link>https://devzone.nordicsemi.com/thread/360995?ContentTypeID=1</link><pubDate>Thu, 31 Mar 2022 11:23:00 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:53717045-28ac-4d2d-8ccf-d30d0698a98f</guid><dc:creator>Einar Thorsrud</dc:creator><description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;I do not see any good reason for not starting the SoftDevice immediately after reset. First of all, the current consumption consequence is negligible (a single RTC instance contributing 0.1 uA). Secondly, your primary reason for not wanting the SoftDevice is that it does not allow you to access the clocks directly, like triggering LFRC calibration using&amp;nbsp;nrf_drv_clock_calibration_start(). However, the SoftDevice will calibrate the LFRC for you, based on the parameters it has been configured with.&lt;/p&gt;
&lt;p&gt;Assuming you use the SoftDevice handler module, which is used in the Bluetooth examples in recent SDK versions, the LF clock configuration is typically done in sdk_config.h.&amp;nbsp;When using LFRC the following configuration is normally most sensible:&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="c_cpp"&gt;//==========================================================
// &amp;lt;o&amp;gt; NRF_SDH_CLOCK_LF_SRC  - SoftDevice clock source.
 
// &amp;lt;0=&amp;gt; NRF_CLOCK_LF_SRC_RC 
// &amp;lt;1=&amp;gt; NRF_CLOCK_LF_SRC_XTAL 
// &amp;lt;2=&amp;gt; NRF_CLOCK_LF_SRC_SYNTH 

#ifndef NRF_SDH_CLOCK_LF_SRC
#define NRF_SDH_CLOCK_LF_SRC 0
#endif

// &amp;lt;o&amp;gt; NRF_SDH_CLOCK_LF_RC_CTIV - SoftDevice calibration timer interval. 
#ifndef NRF_SDH_CLOCK_LF_RC_CTIV
#define NRF_SDH_CLOCK_LF_RC_CTIV 16
#endif

// &amp;lt;o&amp;gt; NRF_SDH_CLOCK_LF_RC_TEMP_CTIV - SoftDevice calibration timer interval under constant temperature. 
// &amp;lt;i&amp;gt; How often (in number of calibration intervals) the RC oscillator shall be calibrated
// &amp;lt;i&amp;gt;  if the temperature has not changed.

#ifndef NRF_SDH_CLOCK_LF_RC_TEMP_CTIV
#define NRF_SDH_CLOCK_LF_RC_TEMP_CTIV 2
#endif

// &amp;lt;o&amp;gt; NRF_SDH_CLOCK_LF_ACCURACY  - External clock accuracy used in the LL to compute timing.
 
// &amp;lt;0=&amp;gt; NRF_CLOCK_LF_ACCURACY_250_PPM 
// &amp;lt;1=&amp;gt; NRF_CLOCK_LF_ACCURACY_500_PPM 
// &amp;lt;2=&amp;gt; NRF_CLOCK_LF_ACCURACY_150_PPM 
// &amp;lt;3=&amp;gt; NRF_CLOCK_LF_ACCURACY_100_PPM 
// &amp;lt;4=&amp;gt; NRF_CLOCK_LF_ACCURACY_75_PPM 
// &amp;lt;5=&amp;gt; NRF_CLOCK_LF_ACCURACY_50_PPM 
// &amp;lt;6=&amp;gt; NRF_CLOCK_LF_ACCURACY_30_PPM 
// &amp;lt;7=&amp;gt; NRF_CLOCK_LF_ACCURACY_20_PPM 
// &amp;lt;8=&amp;gt; NRF_CLOCK_LF_ACCURACY_10_PPM 
// &amp;lt;9=&amp;gt; NRF_CLOCK_LF_ACCURACY_5_PPM 
// &amp;lt;10=&amp;gt; NRF_CLOCK_LF_ACCURACY_2_PPM 
// &amp;lt;11=&amp;gt; NRF_CLOCK_LF_ACCURACY_1_PPM 

#ifndef NRF_SDH_CLOCK_LF_ACCURACY
#define NRF_SDH_CLOCK_LF_ACCURACY 1
#endif
&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;With this configuration LFRC calibration is automatically performed when the SoftDevice is initialized, and regularly, but only if the temperature has changed (as the LFRC is temperature dependent).&lt;/p&gt;
&lt;p&gt;A last reason for not waiting to start the SoftDevice is that many resources are blocked or protected by the SoftDevice, and requires you to use SoftDevice APIs to access them.&amp;nbsp;If you are not consistent, you need to handle both these cases (some SDK libraries and drivers do this for you though).&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>