| /** |
| * \addtogroup BSP |
| * \{ |
| * \addtogroup BSP_CONFIG |
| * \{ |
| * \addtogroup BSP_CONFIG_DEFAULTS |
| * |
| * \brief Board support package default configuration values |
| * |
| * The following tags are used to describe the type of each configuration option. |
| * |
| * - **\bsp_config_option_build** : To be changed only in the build configuration |
| * of the project ("Defined symbols -D" in the |
| * preprocessor options). |
| * |
| * - **\bsp_config_option_app** : To be changed only in the custom_config*.h |
| * project files. |
| * |
| * - **\bsp_config_option_expert_only** : To be changed only by an expert user. |
| * \{ |
| */ |
| |
| /** |
| **************************************************************************************** |
| * |
| * @file bsp_defaults.h |
| * |
| * @brief Board Support Package. System Configuration file default values. |
| * |
| * Copyright (c) 2016, Dialog Semiconductor |
| * All rights reserved. |
| * Redistribution and use in source and binary forms, with or without modification, |
| * are permitted provided that the following conditions are met: |
| * 1. Redistributions of source code must retain the above copyright notice, |
| * this list of conditions and the following disclaimer. |
| * 2. Redistributions in binary form must reproduce the above copyright notice, |
| * this list of conditions and the following disclaimer in the documentation |
| * and/or other materials provided with the distribution. |
| * 3. Neither the name of the copyright holder nor the names of its contributors |
| * may be used to endorse or promote products derived from this software without |
| * specific prior written permission. |
| * |
| * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" |
| * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED |
| * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. |
| * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, |
| * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, |
| * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, |
| * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, |
| * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
| * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED |
| * OF THE POSSIBILITY OF SUCH DAMAGE. |
| * |
| * |
| *************************************************************************************** |
| */ |
| |
| #ifndef BSP_DEFAULTS_H_ |
| #define BSP_DEFAULTS_H_ |
| |
| |
| |
| |
| /** |
| * \addtogroup POWER_SETTINGS |
| * |
| * \brief Power configuration settings |
| * \{ |
| */ |
| /* -------------------------------------- Power settings ---------------------------------------- */ |
| |
| /* |
| * This is a deprecated configuration hence not to be defined by an application. |
| * There's a single power configuration setup. |
| */ |
| #ifdef dg_configPOWER_CONFIG |
| #error "Configuration option dg_configPOWER_CONFIG is no longer supported." |
| #endif |
| |
| /** |
| * \brief When set to 1, the system will go to sleep and never exit allowing for the sleep current to be |
| * measured. |
| * |
| * \bsp_default_note{\bsp_config_option_app, \bsp_config_option_expert_only} |
| */ |
| #ifndef dg_configTESTMODE_MEASURE_SLEEP_CURRENT |
| #define dg_configTESTMODE_MEASURE_SLEEP_CURRENT (0) |
| #endif |
| /* ---------------------------------------------------------------------------------------------- */ |
| |
| /** |
| * \} |
| */ |
| |
| /** |
| * \addtogroup IMAGE_CONFIGURATION_SETTINGS |
| * |
| * \brief Image configuration settings. |
| * \{ |
| */ |
| /* ------------------------------- Image configuration settings --------------------------------- */ |
| |
| /** |
| * \brief The chip revision that we compile for. |
| * |
| * \note There is no default value defined for the target chip revision. The application must\n |
| * neither explicitly set dg_configBLACK_ORCA_IC_REV, nor set\n |
| * dg_configUSE_AUTO_CHIP_DETECTION to 1. |
| * |
| * \bsp_default_note{\bsp_config_option_build,} |
| */ |
| #ifndef dg_configBLACK_ORCA_IC_REV |
| # if dg_configUSE_AUTO_CHIP_DETECTION != 1 |
| # error "You must either define dg_configBLACK_ORCA_IC_REV in the build configuration or set dg_configUSE_AUTO_CHIP_DETECTION to 1" |
| # endif |
| #endif |
| |
| /** |
| * \brief The chip stepping that we compile for. |
| * |
| * \note There is no default value defined for the target chip revision. The application must\n |
| * either explicitly set dg_configBLACK_ORCA_IC_STEP nor set\n |
| * dg_configUSE_AUTO_CHIP_DETECTION to 1. |
| * |
| * \bsp_default_note{\bsp_config_option_build,} |
| */ |
| #ifndef dg_configBLACK_ORCA_IC_STEP |
| # if dg_configUSE_AUTO_CHIP_DETECTION != 1 |
| # error "You must either define dg_configBLACK_ORCA_IC_STEP in the build configuration or set dg_configUSE_AUTO_CHIP_DETECTION to 1" |
| # endif |
| #endif |
| |
| /** |
| * \brief The motherboard revision we compile for. |
| * |
| * \bsp_default_note{\bsp_config_option_app,} |
| */ |
| #ifndef dg_configBLACK_ORCA_MB_REV |
| #define dg_configBLACK_ORCA_MB_REV BLACK_ORCA_MB_REV_D |
| #endif |
| |
| /* |
| * This is a deprecated configuration hence not to be defined by an application. |
| * The values of the trim registers are not anymore taken from the Flash. |
| * |
| */ |
| #ifdef dg_configCONFIG_HEADER_IN_FLASH |
| #error "Configuration option dg_configCONFIG_HEADER_IN_FLASH is no longer supported." |
| #endif |
| |
| /** |
| * \brief Controls how the image is built. |
| * - DEVELOPMENT_MODE: various debugging options are included. |
| * - PRODUCTION_MODE: all code used for debugging is removed. |
| * |
| * \bsp_default_note{\bsp_config_option_app, \bsp_config_option_expert_only} |
| */ |
| #ifndef dg_configIMAGE_SETUP |
| #define dg_configIMAGE_SETUP DEVELOPMENT_MODE |
| #endif |
| |
| /** |
| * \brief When set to 1, the delay at the start of execution of the Reset_Handler is skipped. |
| * |
| * \details This delay is added in order to facilitate proper programming of the Flash or QSPI\n |
| * launcher invocation. Without it, there is no guarantee that the execution of the image\n |
| * will not proceed, altering the default configuration of the system from the one that the\n |
| * bootloader leaves it. |
| * |
| * \bsp_default_note{\bsp_config_option_app, \bsp_config_option_expert_only} |
| */ |
| #ifndef dg_configSKIP_MAGIC_CHECK_AT_START |
| #define dg_configSKIP_MAGIC_CHECK_AT_START (0) |
| #endif |
| |
| /** |
| * \brief When set to 1, the chip version (DA14680/1-01 or DA14682/3-BA ) will be detected\n |
| * automatically. |
| * \note It cannot be used in BLE applications because of the different linker scripts\n |
| * that are used. |
| * \warning Not to be used by a generic project, applicable for uartboot only. |
| * |
| * \bsp_default_note{\bsp_config_option_app, \bsp_config_option_expert_only} |
| */ |
| #ifndef dg_configUSE_AUTO_CHIP_DETECTION |
| #define dg_configUSE_AUTO_CHIP_DETECTION (0) |
| #else |
| # if (dg_configUSE_AUTO_CHIP_DETECTION == 1) |
| #undef dg_configBLACK_ORCA_IC_REV |
| #define dg_configBLACK_ORCA_IC_REV BLACK_ORCA_IC_REV_AUTO |
| #undef dg_configBLACK_ORCA_IC_STEP |
| #define dg_configBLACK_ORCA_IC_STEP BLACK_ORCA_IC_STEP_AUTO |
| # endif |
| #endif |
| |
| /** |
| * \brief When set to 1, the OTP copy will be emulated when in DEVELOPMENT_MODE. |
| * |
| * \bsp_default_note{\bsp_config_option_app, \bsp_config_option_expert_only} |
| */ |
| #ifndef dg_configEMULATE_OTP_COPY |
| #define dg_configEMULATE_OTP_COPY (0) |
| #endif |
| |
| /** |
| * \brief When set to 1, the QSPI copy will be emulated when in DEVELOPMENT_MODE (Not Applicable!). |
| * |
| * \bsp_default_note{\bsp_config_option_app, \bsp_config_option_expert_only} |
| */ |
| #ifndef dg_configEMULATE_QSPI_COPY |
| #define dg_configEMULATE_QSPI_COPY (0) |
| #endif |
| /* ---------------------------------------------------------------------------------------------- */ |
| |
| /** |
| * \} |
| */ |
| |
| /** |
| * \addtogroup LOW_POWER_CLOCK_SETTINGS |
| * |
| * \brief Doxygen documentation is not yet available for this module. |
| * Please check the source code file(s) |
| * |
| * \bsp_default_note{\bsp_config_option_app, \bsp_config_option_expert_only} |
| * \{ |
| */ |
| /* --------------------------------- Low-Power clock settings ----------------------------------- */ |
| |
| /* |
| * Maximum sleep time the sleep timer supports |
| * |
| * dg_configTim1Prescaler can be zero. if dg_configTim1Prescaler is not zero then |
| * ( dg_configTim1Prescaler + 1 ) MUST be a power of 2! */ |
| #if dg_configBLACK_ORCA_IC_REV == BLACK_ORCA_IC_REV_A |
| #if (dg_configUSE_LP_CLK == LP_CLK_32000) |
| #define dg_configTim1Prescaler (3) |
| #define dg_configMaxSleepTime (8) // sec |
| #elif (dg_configUSE_LP_CLK == LP_CLK_32768) |
| #define dg_configTim1Prescaler (3) |
| #define dg_configMaxSleepTime (8) // sec |
| #elif (dg_configUSE_LP_CLK == LP_CLK_RCX) |
| #define dg_configTim1Prescaler (0) |
| #define dg_configMaxSleepTime (8) // sec |
| #elif (dg_configUSE_LP_CLK == LP_CLK_ANY) |
| /* Assuming that the frequency of the external digital clock is 32000Hz, |
| * period: 1/32000 = 31.25usec |
| * Timer1 wrap-around time: 65536 * 31.25 = 2.048sec |
| * With a prescaler equal to 3, the wrap around time becomes: (1 + 3) * 2.048 = ~8sec. |
| * If the clock frequency is too slow, i.e. 16000Hz then |
| * period: 1/16000 = 62.5usec |
| * Timer1 wrap-around time = 65536 * 62.5 = 4.096sec |
| * and the prescaler should be 1 so that: (1 + 1) * 4.096 = ~8sec. |
| * If the clock frequency is too high, i.e. 125000Hz then |
| * period: 1/125000 = 8usec |
| * Timer1 wrap-around time = 65536 * 8 = 0.524sec |
| * and the prescaler should be 3 so that: (1 + 3) * 0.524 = ~2sec. |
| * The values MUST be defined in the custom_config_<>.h file! |
| */ |
| #else |
| #error "dg_configUSE_LP_CLK has invalid setting" |
| #endif |
| #else /* dg_configBLACK_ORCA_IC_REV == BLACK_ORCA_IC_REV_A */ |
| #if (dg_configUSE_LP_CLK == LP_CLK_32000) || (dg_configUSE_LP_CLK == LP_CLK_32768) || (dg_configUSE_LP_CLK == LP_CLK_RCX) |
| #ifdef dg_configTim1Prescaler |
| #warning "Timer1 prescaler is not supported in DA14682/3 chips." |
| #undef dg_configTim1Prescaler |
| #endif /* dg_configTim1Prescaler */ |
| #define dg_configMaxSleepTime (134217) // sec |
| #else |
| #error "dg_configUSE_LP_CLK has invalid setting" |
| #endif |
| #endif /* dg_configBLACK_ORCA_IC_REV == BLACK_ORCA_IC_REV_A */ |
| |
| #if (dg_configTim1Prescaler && (((dg_configTim1Prescaler+1) / 2) * 2) != (dg_configTim1Prescaler+1)) |
| #error "dg_configTim1Prescaler+1 is not 0 or a power of 2!" |
| #endif |
| |
| #if dg_configBLACK_ORCA_IC_REV == BLACK_ORCA_IC_REV_A |
| #if (dg_configTim1Prescaler == 0) |
| #define dg_configTim1PrescalerBitRange (0) |
| #elif (dg_configTim1Prescaler == 1) |
| #define dg_configTim1PrescalerBitRange (1) |
| #elif (dg_configTim1Prescaler == 3) |
| #define dg_configTim1PrescalerBitRange (2) |
| #else |
| #error "dg_configTim1Prescaler is larger than 3!" |
| #endif |
| #else |
| #ifdef dg_configTim1PrescalerBitRange |
| #warning "Timer1 prescaler is not supported in DA14682/3 chips." |
| #undef dg_configTim1PrescalerBitRange |
| #endif |
| #endif |
| /* ---------------------------------------------------------------------------------------------- */ |
| |
| /** |
| * \} |
| */ |
| |
| /** |
| * \addtogroup SYSTEM_CONFIGURATION_SETTINGS |
| * |
| * \brief System configuration settings |
| * |
| * \{ |
| */ |
| /* ------------------------------- System configuration settings -------------------------------- */ |
| |
| /** |
| * \brief Source of Low Power clock used (LP_CLK_IS_ANALOG, LP_CLK_IS_DIGITAL) |
| * |
| * \bsp_default_note{\bsp_config_option_app,} |
| */ |
| #ifndef dg_configLP_CLK_SOURCE |
| #define dg_configLP_CLK_SOURCE LP_CLK_IS_ANALOG |
| #endif |
| |
| # if ((dg_configLP_CLK_SOURCE == LP_CLK_IS_ANALOG) && (dg_configUSE_LP_CLK == LP_CLK_ANY)) |
| # error "When the LP source is analog (XTAL), the option LP_CLK_ANY is invalid!" |
| # endif |
| |
| # if ((dg_configLP_CLK_SOURCE == LP_CLK_IS_DIGITAL) && (dg_configUSE_LP_CLK == LP_CLK_RCX)) |
| # error "When the LP source is digital (External), the option LP_CLK_RCX is invalid!" |
| # endif |
| |
| /** |
| * \brief Low Power clock used (LP_CLK_32000, LP_CLK_32768, LP_CLK_RCX, LP_CLK_ANY) |
| * |
| * \bsp_default_note{\bsp_config_option_app,} |
| */ |
| # ifndef dg_configUSE_LP_CLK |
| # define dg_configUSE_LP_CLK LP_CLK_RCX |
| # endif |
| |
| /** |
| * \brief Code execution mode |
| * |
| * - MODE_IS_RAM |
| * - MODE_IS_MIRRORED |
| * - MODE_IS_CACHED |
| * |
| * \bsp_default_note{\bsp_config_option_app, \bsp_config_option_expert_only} |
| */ |
| # ifndef dg_configEXEC_MODE |
| # define dg_configEXEC_MODE MODE_IS_RAM |
| # endif |
| |
| /** |
| * \brief Code location |
| * |
| * - NON_VOLATILE_IS_OTP |
| * - NON_VOLATILE_IS_FLASH |
| * - NON_VOLATILE_IS_NONE (RAM) |
| * |
| * \bsp_default_note{\bsp_config_option_app,} |
| */ |
| # ifndef dg_configCODE_LOCATION |
| # define dg_configCODE_LOCATION NON_VOLATILE_IS_NONE |
| # endif |
| |
| /** |
| * \brief Frequency of the crystal connected to the XTAL Oscillator: 16MHz or 32MHz. |
| * |
| * \bsp_default_note{\bsp_config_option_app,} |
| */ |
| # ifndef dg_configEXT_CRYSTAL_FREQ |
| # define dg_configEXT_CRYSTAL_FREQ EXT_CRYSTAL_IS_16M |
| # endif |
| |
| /** |
| * \brief External LP type |
| * |
| * - 0: a crystal is connected to XTAL32Kp and XTALK32Km |
| * - 1: a digital clock is provided. |
| * |
| * \note the frequency of the digital clock must be 32KHz or 32.768KHz and be always running. |
| * |
| * \bsp_default_note{\bsp_config_option_app, \bsp_config_option_expert_only} |
| */ |
| # ifndef dg_configEXT_LP_IS_DIGITAL |
| # define dg_configEXT_LP_IS_DIGITAL (0) |
| # endif |
| |
| /* |
| * This is a deprecated configuration hence not to be defined by an application. |
| * Forcing the system to enter into clockless sleep during deep sleep is no longer supported. |
| */ |
| #ifdef dg_configFORCE_DEEP_SLEEP |
| #error "Configuration option dg_configFORCE_DEEP_SLEEP is no longer supported." |
| #endif |
| |
| /** |
| * \brief Timer 1 usage |
| * |
| * When set to 0, Timer1 is reserved for the OS tick. |
| * |
| * \note A setting to 1 is meaningful only for non-RTOS projects. |
| * |
| * \bsp_default_note{\bsp_config_option_app, \bsp_config_option_expert_only} |
| */ |
| #ifndef dg_configUSER_CAN_USE_TIMER1 |
| #define dg_configUSER_CAN_USE_TIMER1 (0) |
| #endif |
| |
| /** |
| * \brief Time needed for the settling of the LP clock, in msec. |
| * |
| * \bsp_default_note{\bsp_config_option_app, \bsp_config_option_expert_only} |
| */ |
| #ifndef dg_configXTAL32K_SETTLE_TIME |
| #define dg_configXTAL32K_SETTLE_TIME (8000) |
| #endif |
| |
| /** |
| * \brief Sleep delay time |
| * |
| * At startup, the system will stay active for at least this time period before it is allowed to go |
| * to sleep, in msec. |
| * |
| * \bsp_default_note{\bsp_config_option_app, \bsp_config_option_expert_only} |
| */ |
| #if (dg_configXTAL32K_SETTLE_TIME > 8000) |
| #define dg_configINITIAL_SLEEP_DELAY_TIME (dg_configXTAL32K_SETTLE_TIME) |
| #else |
| #define dg_configINITIAL_SLEEP_DELAY_TIME (8000) |
| #endif |
| |
| /** |
| * \brief XTAL16 settle time |
| * |
| * Time needed for the settling of the XTAL16, in LP cycles. To this value, 5 LP cycles, that are |
| * needed to start the core clock, are added since the SW powers the 1V4 rail after the execution |
| * is resumed. |
| * |
| * \bsp_default_note{\bsp_config_option_app, \bsp_config_option_expert_only} |
| */ |
| #ifndef dg_configXTAL16_SETTLE_TIME |
| #if ((dg_configUSE_LP_CLK == LP_CLK_32000) || (dg_configUSE_LP_CLK == LP_CLK_32768)) |
| #define dg_configXTAL16_SETTLE_TIME (85 + 5) |
| #elif (dg_configUSE_LP_CLK == LP_CLK_RCX) |
| #define dg_configXTAL16_SETTLE_TIME cm_rcx_us_2_lpcycles((uint32_t)((85 + 5) * 30.5)) |
| #else /* LP_CLK_ANY */ |
| // Must be defined in the custom_config_<>.h file. |
| #endif |
| #endif |
| |
| /** |
| * \brief XTAL16 settle time RC32K |
| * |
| * \bsp_default_note{\bsp_config_option_app, \bsp_config_option_expert_only} |
| */ |
| #define dg_configXTAL16_SETTLE_TIME_RC32K (110) |
| |
| /** |
| * \brief RC16 wakeup time |
| * |
| * This is the maximum time, in LP cycles, needed to wake-up the chip and start executing code |
| * using RC16. |
| * |
| * \bsp_default_note{\bsp_config_option_app, \bsp_config_option_expert_only} |
| */ |
| #define dg_configWAKEUP_RC16_TIME (16) |
| |
| /** |
| * \brief XTAL16 wakeup time |
| * |
| * Wake up N LP cycles before "time 0" to have XTAL16 ready when needed. |
| * |
| * \bsp_default_note{\bsp_config_option_app, \bsp_config_option_expert_only} |
| */ |
| #define dg_configWAKEUP_XTAL16_TIME (dg_configXTAL16_SETTLE_TIME + dg_configWAKEUP_RC16_TIME) |
| |
| /** |
| * \brief OS tick restore time |
| * |
| * This is the time, in LP cycles, required from the OS to restore the tick timer. |
| * |
| * \bsp_default_note{\bsp_config_option_app, \bsp_config_option_expert_only} |
| */ |
| #ifndef dg_configOS_TICK_RESTORE_TIME |
| #ifdef RELEASE_BUILD |
| #if dg_configBLACK_ORCA_IC_REV == BLACK_ORCA_IC_REV_A |
| #if ((dg_configUSE_LP_CLK == LP_CLK_32000) || (dg_configUSE_LP_CLK == LP_CLK_32768)) |
| #if (dg_configCODE_LOCATION != NON_VOLATILE_IS_FLASH) |
| #define dg_configOS_TICK_RESTORE_TIME (dg_configTim1Prescaler ? 2 + dg_configTim1Prescaler : 3) |
| #else |
| #if (dg_configIMAGE_SETUP == PRODUCTION_MODE) |
| #define dg_configOS_TICK_RESTORE_TIME (dg_configTim1Prescaler ? 3 + dg_configTim1Prescaler : 4) |
| #else |
| #define dg_configOS_TICK_RESTORE_TIME (dg_configTim1Prescaler ? 3 + dg_configTim1Prescaler : 4) |
| #endif |
| #endif |
| #elif (dg_configUSE_LP_CLK == LP_CLK_RCX) |
| #if (dg_configCODE_LOCATION != NON_VOLATILE_IS_FLASH) |
| #define dg_configOS_TICK_RESTORE_TIME cm_rcx_us_2_lpcycles(120) |
| #else |
| #define dg_configOS_TICK_RESTORE_TIME cm_rcx_us_2_lpcycles(120) |
| #endif |
| #else /* LP_CLK_ANY */ |
| /* Must be defined in the custom_config_<>.h file. |
| * For QSPI cached, the dg_configOS_TICK_RESTORE_TIME must be ~120usec when no prescaling is |
| * used and ~180usec when prescaling is used. |
| */ |
| #endif |
| #else /* dg_configBLACK_ORCA_IC_REV == BLACK_ORCA_IC_REV_A */ |
| #if ((dg_configUSE_LP_CLK == LP_CLK_32000) || (dg_configUSE_LP_CLK == LP_CLK_32768)) |
| #if (dg_configCODE_LOCATION != NON_VOLATILE_IS_FLASH) |
| #define dg_configOS_TICK_RESTORE_TIME (3) |
| #else |
| #if (dg_configIMAGE_SETUP == PRODUCTION_MODE) |
| #define dg_configOS_TICK_RESTORE_TIME (4) |
| #else |
| #define dg_configOS_TICK_RESTORE_TIME (4) |
| #endif |
| #endif |
| #elif (dg_configUSE_LP_CLK == LP_CLK_RCX) |
| #if (dg_configCODE_LOCATION != NON_VOLATILE_IS_FLASH) |
| #define dg_configOS_TICK_RESTORE_TIME cm_rcx_us_2_lpcycles(120) |
| #else |
| #define dg_configOS_TICK_RESTORE_TIME cm_rcx_us_2_lpcycles(120) |
| #endif |
| #else /* LP_CLK_ANY */ |
| /* Must be defined in the custom_config_<>.h file. |
| * For QSPI cached, the dg_configOS_TICK_RESTORE_TIME must be ~120usec when no prescaling is |
| * used and ~180usec when prescaling is used. |
| */ |
| #endif |
| #endif /* dg_configBLACK_ORCA_IC_REV == BLACK_ORCA_IC_REV_A */ |
| #else // RELEASE_BUILD |
| #if ((dg_configUSE_LP_CLK == LP_CLK_32000) || (dg_configUSE_LP_CLK == LP_CLK_32768)) |
| #if (dg_configCODE_LOCATION != NON_VOLATILE_IS_FLASH) |
| #define dg_configOS_TICK_RESTORE_TIME (40) |
| #else |
| #define dg_configOS_TICK_RESTORE_TIME (72) |
| #endif |
| #elif (dg_configUSE_LP_CLK == LP_CLK_RCX) |
| #if (dg_configCODE_LOCATION != NON_VOLATILE_IS_FLASH) |
| #define dg_configOS_TICK_RESTORE_TIME cm_rcx_us_2_lpcycles(1200) |
| #else |
| #define dg_configOS_TICK_RESTORE_TIME cm_rcx_us_2_lpcycles(2400) |
| #endif |
| #else /* LP_CLK_ANY */ |
| /* Must be defined in the custom_config_<>.h file. |
| * Usually, the dg_configOS_TICK_RESTORE_TIME is set to a large value (i.e. 1.2 - 2.4msec) |
| * in order to allow for a more "relaxed" waking up of the system. |
| */ |
| #endif |
| #endif // RELEASE_BUILD |
| #endif // dg_configOS_TICK_RESTORE_TIME |
| |
| /** |
| * \brief Image copy time |
| * |
| * The number of LP cycles needed for the application's image data to be copied from the OTP |
| * (or QSPI) to the RAM in mirrored mode. |
| * |
| * \warning MUST BE SMALLER THAN #dg_configMIN_SLEEP_TIME !!! |
| * |
| * \bsp_default_note{\bsp_config_option_app, \bsp_config_option_expert_only} |
| */ |
| #if (dg_configEXEC_MODE != MODE_IS_MIRRORED) |
| #undef dg_configIMAGE_COPY_TIME |
| #define dg_configIMAGE_COPY_TIME (0) |
| #elif !defined(dg_configIMAGE_COPY_TIME) |
| #if ((dg_configUSE_LP_CLK == LP_CLK_32000) || (dg_configUSE_LP_CLK == LP_CLK_32768)) |
| #define dg_configIMAGE_COPY_TIME (64) |
| #elif (dg_configUSE_LP_CLK == LP_CLK_RCX) |
| #define dg_configIMAGE_COPY_TIME cm_rcx_us_2_lpcycles(1950) |
| #else /* LP_CLK_ANY */ |
| // Must be defined in the custom_config_<>.h file. |
| #endif |
| #endif |
| |
| /** |
| * \brief Retention memory configuration. |
| * |
| * 5 bits field; each bit controls whether the relevant memory block will be retained (1) or not (0). |
| * - bit 0 : SYSRAM1 |
| * - bit 1 : SYSRAM2 |
| * - bit 2 : SYSRAM3 |
| * - bit 3 : SYSRAM4 |
| * - bit 4 : SYSRAM5 |
| * |
| * \bsp_default_note{\bsp_config_option_app, \bsp_config_option_expert_only} |
| * |
| */ |
| #ifndef dg_configMEM_RETENTION_MODE |
| #define dg_configMEM_RETENTION_MODE (0x1F) |
| #endif |
| |
| /* |
| * This is a deprecated configuration hence not to be defined by an application. |
| */ |
| #ifdef dg_configMEM_RETENTION_MODE_PRESERVE_IMAGE |
| #error "dg_configMEM_RETENTION_MODE_PRESERVE_IMAGE is no longer supported." |
| #endif |
| |
| /** |
| * \brief Memory Shuffling mode. |
| * |
| * See SYS_CTRL_REG:REMAP_RAMS field. |
| * |
| * \bsp_default_note{\bsp_config_option_app, \bsp_config_option_expert_only} |
| */ |
| #ifndef dg_configSHUFFLING_MODE |
| #define dg_configSHUFFLING_MODE (0) |
| #endif |
| |
| /** |
| * \brief ECC microcode RAM retainment |
| * |
| * \bsp_default_note{\bsp_config_option_app, \bsp_config_option_expert_only} |
| */ |
| #ifndef dg_configECC_UCODE_RAM_RETAINED |
| #define dg_configECC_UCODE_RAM_RETAINED (0) |
| #endif |
| |
| /** |
| * \brief Watchdog Service |
| * |
| * - 1: enabled |
| * - 0: disabled |
| * |
| * \bsp_default_note{\bsp_config_option_app,} |
| */ |
| #ifndef dg_configUSE_WDOG |
| #define dg_configUSE_WDOG (0) |
| #endif |
| |
| /** |
| * \brief Brown-out Detection |
| * |
| * - 1: used |
| * - 0: not used |
| * |
| * \bsp_default_note{\bsp_config_option_app,} |
| */ |
| #ifndef dg_configUSE_BOD |
| #define dg_configUSE_BOD (1) |
| #endif |
| |
| /** |
| * \brief Reset value for Watchdog. |
| * |
| * See WATCHDOG_REG:WDOG_VAL field. |
| * |
| * \bsp_default_note{\bsp_config_option_app, \bsp_config_option_expert_only} |
| */ |
| #ifndef dg_configWDOG_RESET_VALUE |
| #define dg_configWDOG_RESET_VALUE (0xFF) |
| #endif |
| |
| /** |
| * \brief Maximum watchdog tasks |
| * |
| * Maximum number of tasks that the Watchdog Service can monitor. It can be larger (up to 32) than |
| * needed, at the expense of increased Retention Memory requirement. |
| * |
| * \bsp_default_note{\bsp_config_option_app, \bsp_config_option_expert_only} |
| */ |
| #ifndef dg_configWDOG_MAX_TASKS_CNT |
| #define dg_configWDOG_MAX_TASKS_CNT (4) |
| #endif |
| |
| /** |
| * \brief Watchdog notify interval |
| * |
| * Interval (in miliseconds) for common timer which can be used to trigger tasks in order to notify |
| * watchdog. Can be set to 0 in order to disable timer code entirely. |
| * |
| * \bsp_default_note{\bsp_config_option_app, \bsp_config_option_expert_only} |
| */ |
| #ifndef dg_configWDOG_NOTIFY_TRIGGER_TMO |
| #define dg_configWDOG_NOTIFY_TRIGGER_TMO (0) |
| #endif |
| |
| /** |
| * \brief Abort a clock modification if it will cause an error to the SysTick counter |
| * |
| * - 1: on |
| * - 0: off |
| * |
| * \bsp_default_note{\bsp_config_option_app, \bsp_config_option_expert_only} |
| */ |
| #ifndef dg_configABORT_IF_SYSTICK_CLK_ERR |
| #define dg_configABORT_IF_SYSTICK_CLK_ERR (0) |
| #endif |
| |
| /** |
| * \brief Maximum adapters count |
| * |
| * Should be equal to the number of Adapters used by the Application. It can be larger (up to 254) |
| * than needed, at the expense of increased Retention Memory requirements. It cannot be 0. |
| * |
| * \bsp_default_note{\bsp_config_option_app, \bsp_config_option_expert_only} |
| */ |
| #ifndef dg_configPM_MAX_ADAPTERS_CNT |
| #define dg_configPM_MAX_ADAPTERS_CNT (16) |
| #endif |
| |
| /** |
| * \brief Maximum sleep defer time |
| * |
| * The maximum time sleep can be deferred via a call to pm_defer_sleep_for(). It is in clock cycles |
| * in the case of the XTAL32K and in usec in the case of RCX. |
| * |
| * \bsp_default_note{\bsp_config_option_app, \bsp_config_option_expert_only} |
| */ |
| #ifndef dg_configPM_MAX_ADAPTER_DEFER_TIME |
| #if ((dg_configUSE_LP_CLK == LP_CLK_32000) || (dg_configUSE_LP_CLK == LP_CLK_32768)) |
| #define dg_configPM_MAX_ADAPTER_DEFER_TIME (128) |
| #elif (dg_configUSE_LP_CLK == LP_CLK_RCX) |
| #define dg_configPM_MAX_ADAPTER_DEFER_TIME cm_rcx_us_2_lpcycles(4000) |
| #else /* LP_CLK_ANY */ |
| // Must be defined in the custom_config_<>.h file. It should be > 3.5msec. |
| #endif |
| #endif |
| |
| /** |
| * \brief Minimum sleep time |
| * |
| * No power savings if we enter sleep when the sleep time is less than N LP cycles |
| * |
| * \bsp_default_note{\bsp_config_option_app, \bsp_config_option_expert_only} |
| */ |
| #ifndef dg_configMIN_SLEEP_TIME |
| #if ((dg_configUSE_LP_CLK == LP_CLK_32000) || (dg_configUSE_LP_CLK == LP_CLK_32768)) |
| #define dg_configMIN_SLEEP_TIME (33*3) // 3 msec |
| #elif (dg_configUSE_LP_CLK == LP_CLK_RCX) |
| #define dg_configMIN_SLEEP_TIME cm_rcx_us_2_lpcycles_low_acc(3000) // 3 msec |
| #else /* LP_CLK_ANY */ |
| // Must be defined in the custom_config_<>.h file. It should be ~3msec but this may vary. |
| #endif |
| #endif |
| |
| /** |
| * \brief Recharge period |
| * |
| * \bsp_default_note{\bsp_config_option_app, \bsp_config_option_expert_only} |
| */ |
| #ifndef dg_configSET_RECHARGE_PERIOD |
| #if ((dg_configUSE_LP_CLK == LP_CLK_32000) || (dg_configUSE_LP_CLK == LP_CLK_32768)) |
| #define dg_configSET_RECHARGE_PERIOD (3000) /** number of Low Power clock cycles for |
| sampling and / or refreshing. */ |
| #elif (dg_configUSE_LP_CLK == LP_CLK_RCX) |
| #define dg_configSET_RECHARGE_PERIOD (90000) /** number of msec for sampling and / or |
| refreshing */ |
| #else /* LP_CLK_ANY */ |
| // Must be defined in the custom_config_<>.h file. |
| #endif |
| #endif /* dg_configSET_RECHARGE_PERIOD */ |
| |
| /** |
| * \brief When set to 1, the DCDC is used. |
| * |
| * \bsp_default_note{\bsp_config_option_app, \bsp_config_option_expert_only} |
| */ |
| #ifndef dg_configUSE_DCDC |
| #define dg_configUSE_DCDC (1) |
| #endif |
| |
| /* |
| * This is a deprecated configuration hence not to be defined by an application. |
| * The semantics of dg_configUSE_ADC replaced by dg_configUSE_HW_GPADC. |
| */ |
| #ifdef dg_configUSE_ADC |
| #error "Configuration option dg_configUSE_ADC is no longer supported. Use dg_configUSE_HW_GPADC instead." |
| #endif |
| |
| /** |
| * \brief Apply ADC Gain Error correction. |
| * - 1: used |
| * - 0: not used |
| * |
| * The default setting is: 1. |
| * |
| * \bsp_default_note{\bsp_config_option_app, \bsp_config_option_expert_only} |
| */ |
| #ifndef dg_configUSE_ADC_GAIN_ERROR_CORRECTION |
| #define dg_configUSE_ADC_GAIN_ERROR_CORRECTION (1) |
| #endif |
| |
| /** |
| * \brief When set to 1, the USB interface is used. |
| * |
| * \bsp_default_note{\bsp_config_option_app,} |
| */ |
| #ifndef dg_configUSE_USB |
| #define dg_configUSE_USB (0) |
| #endif |
| |
| /** |
| * \addtogroup CHARGER_SETTINGS |
| * |
| * \brief Charger configuration settings |
| * \{ |
| */ |
| /* -------------------------------------- Charger settings -------------------------------------- */ |
| |
| /** |
| * \brief Battery type |
| * |
| * \bsp_default_note{\bsp_config_option_app, \bsp_config_option_expert_only} |
| */ |
| #ifndef dg_configBATTERY_TYPE |
| #define dg_configBATTERY_TYPE (BATTERY_TYPE_NO_BATTERY) |
| /** |
| * \brief Battery charge voltage |
| * |
| * \bsp_default_note{\bsp_config_option_app, \bsp_config_option_expert_only} |
| */ |
| #define dg_configBATTERY_CHARGE_VOLTAGE (0) |
| /** |
| * \brief Battery charge current |
| * |
| * \bsp_default_note{\bsp_config_option_app, \bsp_config_option_expert_only} |
| */ |
| #define dg_configBATTERY_CHARGE_CURRENT (0) |
| /** |
| * \brief Battery charge NTC |
| * |
| * 0: NTC is enabled, 1: NTC is disabled |
| * |
| * Note that when NTC is enabled, the P14 and P16 are controlled by the charger and cannot be used |
| * by the application. P14 is set high (at 3.3V) when the charging starts while P16 is an input. |
| * |
| * \bsp_default_note{\bsp_config_option_app, \bsp_config_option_expert_only} |
| */ |
| #define dg_configBATTERY_CHARGE_NTC (0) |
| |
| #if (dg_configBATTERY_CHARGE_NTC > 1) |
| #error "dg_configBATTERY_CHARGE_NTC must be either 0 or 1." |
| #endif |
| /** |
| * \brief Battery pre-charge current |
| * |
| * Normal charging : |
| * - 0 - 15 : as the description of the CHARGER_CTRL1_REG[CHARGE_CUR] field. |
| * |
| * Ext charging : "end-of-charge" is not functional when this mode is used. |
| * - 16 : Reserved |
| * - 17 : Reserved |
| * - 18 : 1mA |
| * - 19 : 1.5mA |
| * - 20 : 2.1mA |
| * - 21 : 3.2mA |
| * - 22 : 4.3mA |
| * - 23 : Reserved |
| * - 24 : 6.6mA |
| * - 25 : 7.8mA |
| * - 26 : Reserved |
| * - 27 : 11.3mA |
| * - 28 : 13.3mA |
| * - 29 : 15.3mA |
| * |
| * \bsp_default_note{\bsp_config_option_app, \bsp_config_option_expert_only} |
| */ |
| #define dg_configBATTERY_PRECHARGE_CURRENT (0) |
| #endif |
| |
| /** |
| * \brief When set to 1, the USB Charger is used to charge the battery. |
| * |
| * \bsp_default_note{\bsp_config_option_app,} |
| */ |
| #ifndef dg_configUSE_USB_CHARGER |
| #define dg_configUSE_USB_CHARGER (0) |
| #else |
| #if (dg_configUSE_USB_CHARGER == 1) |
| #undef dg_configUSE_HW_GPADC |
| #define dg_configUSE_HW_GPADC (1) |
| #undef dg_configUSE_USB |
| #define dg_configUSE_USB (1) |
| #undef dg_configGPADC_ADAPTER |
| #define dg_configGPADC_ADAPTER (1) |
| #undef dg_configBATTERY_ADAPTER |
| #define dg_configBATTERY_ADAPTER (1) |
| #endif |
| #endif |
| |
| /** |
| * \brief When set to 1, the USB Charger will try to enumerate, if possible. |
| * |
| * \bsp_default_note{\bsp_config_option_app, \bsp_config_option_expert_only} |
| */ |
| #ifndef dg_configUSE_USB_ENUMERATION |
| #define dg_configUSE_USB_ENUMERATION (0) |
| #else |
| #if (dg_configUSE_USB_ENUMERATION == 1) |
| #undef dg_configUSE_USB |
| #define dg_configUSE_USB (1) |
| #endif |
| #endif |
| |
| /** |
| * \brief Controls how the system will behave when the USB i/f is suspended. |
| * |
| * \details When the USB Node is suspended by the USB Host, the application may have to act in |
| * order to comply with the USB specification (consume less than 2.5mA). The available |
| * options are: |
| * 0: do nothing |
| * 1: pause system clock => the LP clock is stopped and only VBUS and USB irqs are handled |
| * 2: pause application => The system is not paused but the application must stop all |
| * timers and make sure all tasks are blocked. |
| * |
| * Both in modes 1 and 2, the application must make sure that all external peripherals are |
| * either powered off or placed in the lowest power consumption mode. |
| */ |
| #ifndef dg_configUSB_SUSPEND_MODE |
| #define dg_configUSB_SUSPEND_MODE (0) |
| #endif |
| |
| /** |
| * \brief When set to 1, the USB Charger will start charging with less than 100mA until enumerated. |
| * |
| * \bsp_default_note{\bsp_config_option_app, \bsp_config_option_expert_only} |
| */ |
| #ifndef dg_configALLOW_CHARGING_NOT_ENUM |
| #define dg_configALLOW_CHARGING_NOT_ENUM (0) |
| #endif |
| |
| /** |
| * \brief When set to 1, the USB charger will stop charging from an SDP port (if |
| * #dg_configALLOW_CHARGING_NOT_ENUM is set to 1) after 45 minutes, if not enumerated. |
| * |
| * \bsp_default_note{\bsp_config_option_app, \bsp_config_option_expert_only} |
| */ |
| #ifndef dg_configUSE_NOT_ENUM_CHARGING_TIMEOUT |
| #define dg_configUSE_NOT_ENUM_CHARGING_TIMEOUT (1) |
| #endif |
| |
| /** |
| * \brief Pre-charging initial measure delay |
| * |
| * This is the time to wait (N x 10 ms) before doing the first voltage measurement after starting |
| * pre-charging. This is to ensure that an initial battery voltage overshoot will not trigger the |
| * charger to stop pre-charging and move to normal charging. |
| * |
| * \bsp_default_note{\bsp_config_option_app, \bsp_config_option_expert_only} |
| */ |
| #ifndef dg_configPRECHARGING_INITIAL_MEASURE_DELAY |
| #define dg_configPRECHARGING_INITIAL_MEASURE_DELAY (3) |
| #endif |
| |
| /** |
| * \brief Pre-charging threshold |
| * |
| * When Vbat is below this threshold (in ADC measurement units), pre-charging starts. |
| * |
| * The value must be calculated using this equation: |
| * |
| * y[ADC units] = (4095 * Vbat[Volts]) / 5 |
| * |
| * \bsp_default_note{\bsp_config_option_app, \bsp_config_option_expert_only} |
| */ |
| #ifndef dg_configPRECHARGING_THRESHOLD |
| #define dg_configPRECHARGING_THRESHOLD (0) |
| #endif |
| |
| /** |
| * \brief Charging threshold |
| * |
| * When Vbat is at or above this threshold (in ADC measurement units), pre-charging stops and |
| * charging starts. |
| * |
| * The value must be calculated using this equation: |
| * |
| * y[ADC units] = (4095 * Vbat[Volts]) / 5 |
| * |
| * \bsp_default_note{\bsp_config_option_app, \bsp_config_option_expert_only} |
| */ |
| #ifndef dg_configCHARGING_THRESHOLD |
| #define dg_configCHARGING_THRESHOLD (0) |
| #endif |
| |
| /** |
| * \brief Pre-charging timeout |
| * |
| * If after this period, the Vbat is not higher than 3.0V then pre-charging stops (N x 10msec). |
| * |
| * \bsp_default_note{\bsp_config_option_app, \bsp_config_option_expert_only} |
| */ |
| #ifndef dg_configPRECHARGING_TIMEOUT |
| #define dg_configPRECHARGING_TIMEOUT (15 * 60 * 100) |
| #endif |
| |
| /** |
| * \brief Charging timeout |
| * |
| * If after this period, the charger is still charging then charging stops (N x 10msec). This |
| * timeout has priority over the next two timeouts. If it is not zero then it is the only one taken |
| * into account. |
| * |
| * \bsp_default_note{\bsp_config_option_app, \bsp_config_option_expert_only} |
| */ |
| #ifndef dg_configCHARGING_TIMEOUT |
| #define dg_configCHARGING_TIMEOUT (0) |
| #endif |
| |
| /** |
| * \brief Charging CC timeout |
| * |
| * If after this period, the charger is still in CC mode then charging stops (N x 10msec). |
| * |
| * \bsp_default_note{\bsp_config_option_app, \bsp_config_option_expert_only} |
| */ |
| #ifndef dg_configCHARGING_CC_TIMEOUT |
| #define dg_configCHARGING_CC_TIMEOUT (180 * 60 * 100) |
| #endif |
| |
| /** |
| * \brief Charging CV timeout |
| * |
| * If after this period, the charger is still in CC mode then charging stops (N x 10msec). |
| * |
| * \bsp_default_note{\bsp_config_option_app, \bsp_config_option_expert_only} |
| */ |
| #ifndef dg_configCHARGING_CV_TIMEOUT |
| #define dg_configCHARGING_CV_TIMEOUT (360 * 60 * 100) |
| #endif |
| |
| /** |
| * \brief Charginf polling interval |
| * |
| * While being attached to a USB cable and the battery has been charged, this is the interval |
| * (N x 10msec) that the Vbat is polled to decide whether a new charge cycle will be started. |
| * |
| * \bsp_default_note{\bsp_config_option_app, \bsp_config_option_expert_only} |
| */ |
| #ifndef dg_configUSB_CHARGER_POLLING_INTERVAL |
| #define dg_configUSB_CHARGER_POLLING_INTERVAL (100) |
| #endif |
| |
| /** |
| * \brief Battery low level |
| * |
| * If not zero, this is the low limit of the battery voltage. If Vbat drops below this limit, the |
| * system enters hibernation mode, waiting either for the battery to the changed or recharged. |
| * |
| * The value must be calculated using this equation: |
| * |
| * y[ADC units] = (4095 * Vbat[Volts]) / 5 |
| * |
| * \bsp_default_note{\bsp_config_option_app, \bsp_config_option_expert_only} |
| */ |
| #ifndef dg_configBATTERY_LOW_LEVEL |
| #if (dg_configBATTERY_TYPE == BATTERY_TYPE_NO_BATTERY) || (dg_configBATTERY_TYPE == BATTERY_TYPE_NO_RECHARGE) |
| #define dg_configBATTERY_LOW_LEVEL (0) |
| #else |
| #define dg_configBATTERY_LOW_LEVEL (2293) // 2.8V |
| #endif |
| #endif |
| |
| /* |
| * This is a deprecated configuration hence not to be defined by an application. |
| * When entering hibernation mode then: |
| * A DA14680/1-01 system reboots only via an interrupt from the WKUP Ctrl or VBUS. |
| * A DA14682/3-BA system reboots only via an interrupt from the WKUP Ctrl. |
| */ |
| #ifdef dg_configLOW_VBAT_HANDLING |
| #error "Configuration option dg_configLOW_VBAT_HANDLING is no longer supported." |
| #endif |
| |
| /** |
| * \brief Custom battery ADC voltage |
| * |
| * In case of a custom battery with unknown voltage level, this parameter must be defined to |
| * provide the charge level of the battery in ADC measurement units. If not provided for some |
| * reason, it is set to the lowest level (1.9V). |
| * |
| * The value must be calculated using this equation: |
| * |
| * y[ADC units] = (4095 * Vbat[Volts]) / 5 |
| * |
| * \bsp_default_note{\bsp_config_option_app, \bsp_config_option_expert_only} |
| */ |
| #if (dg_configBATTERY_TYPE == BATTERY_TYPE_CUSTOM) |
| #ifndef dg_configBATTERY_TYPE_CUSTOM_ADC_VOLTAGE |
| #define dg_configBATTERY_TYPE_CUSTOM_ADC_VOLTAGE (1556) |
| #endif |
| #endif |
| |
| /** |
| * \brief Battery charge gap |
| * |
| * This is the safety limit used in the "Measurement step" of the specification to decide whether |
| * charging should be started. The default value is 0.1V. |
| * |
| * The value must be calculated using this equation: |
| * |
| * y[ADC units] = (4095 * Vbat[Volts]) / 5 |
| * |
| * \bsp_default_note{\bsp_config_option_app, \bsp_config_option_expert_only} |
| */ |
| #ifndef dg_configBATTERY_CHARGE_GAP |
| #define dg_configBATTERY_CHARGE_GAP (82) |
| #endif |
| |
| /** |
| * \brief Battery replenish gap |
| * |
| * This is the limit below the maximum Vbat level (Vbat - dg_configBATTERY_REPLENISH_GAP), where |
| * charging will be restarted in order to replenish the battery. The default value is 0.2V. |
| * |
| * The value must be calculated using this equation: |
| * |
| * y[ADC units] = (4095 * Vbat[Volts]) / 5 |
| * |
| * \bsp_default_note{\bsp_config_option_app, \bsp_config_option_expert_only} |
| */ |
| #ifndef dg_configBATTERY_REPLENISH_GAP |
| #define dg_configBATTERY_REPLENISH_GAP (82*2) |
| #endif |
| /* ---------------------------------------------------------------------------------------------- */ |
| |
| /** |
| * \} CHARGER_SETTINGS |
| */ |
| |
| |
| /** |
| * \brief The Rsense of the SOC in multiples of 0.1Ohm. The default value is (1 x 0.1Ohm). |
| */ |
| #ifndef dg_configSOC_RSENSE |
| #define dg_configSOC_RSENSE (1) // N x 0.1Ohm |
| #endif |
| |
| /** |
| * \brief When set to 1, the ProDK is used (controls specific settings for this board). |
| * |
| * \bsp_default_note{\bsp_config_option_app,} |
| */ |
| #ifndef dg_configUSE_ProDK |
| #define dg_configUSE_ProDK (0) |
| #endif |
| |
| /** |
| * \brief When set to 1, State of Charge function is enabled. |
| * |
| * \bsp_default_note{\bsp_config_option_app, \bsp_config_option_expert_only} |
| */ |
| #ifndef dg_configUSE_SOC |
| #define dg_configUSE_SOC (0) |
| #else |
| # if (dg_configUSE_SOC == 1) |
| # undef dg_configUSE_HW_SOC |
| # define dg_configUSE_HW_SOC (1) |
| # endif |
| #endif |
| |
| /** |
| * \addtogroup FLASH_SETTINGS |
| * |
| * \brief Flash configuration settings |
| * |
| * \{ |
| */ |
| /* -------------------------------------- Flash settings ---------------------------------------- */ |
| |
| /** |
| * \brief The rail from which the Flash is powered, if a Flash is used. |
| * |
| * - FLASH_IS_NOT_CONNECTED |
| * - FLASH_CONNECTED_TO_1V8 |
| * - FLASH_CONNECTED_TO_1V8P |
| * |
| * \bsp_default_note{\bsp_config_option_app,} |
| */ |
| #ifndef dg_configFLASH_CONNECTED_TO |
| #error "dg_configFLASH_CONNECTED_TO is not defined!" |
| #endif |
| |
| /* Backward compatibility checks */ |
| #if defined(dg_configPOWER_EXT_1V8_PERIPHERALS) || defined(dg_configPOWER_FLASH) \ |
| || defined(dg_configFLASH_POWER_OFF) |
| #define PRINT_POWER_RAIL_SETUP |
| #endif |
| |
| #if defined(dg_configPOWER_EXT_1V8_PERIPHERALS) && defined(dg_configPOWER_1V8P) |
| #error "Both dg_configPOWER_EXT_1V8_PERIPHERALS and dg_configPOWER_1V8P are defined! Please use dg_configPOWER_1V8P only!" |
| #endif |
| |
| #ifdef dg_configPOWER_EXT_1V8_PERIPHERALS |
| #warning "dg_configPOWER_EXT_1V8_PERIPHERALS will be deprecated! Use dg_configPOWER_1V8P instead!" |
| |
| #if (dg_configPOWER_EXT_1V8_PERIPHERALS == 0) \ |
| && (dg_configFLASH_CONNECTED_TO == FLASH_CONNECTED_TO_1V8P) |
| #error "Flash is connected to 1V8P but dg_configPOWER_EXT_1V8_PERIPHERALS is 0..." |
| #endif |
| |
| #if (dg_configPOWER_EXT_1V8_PERIPHERALS == 1) |
| #define dg_configPOWER_1V8P (1) |
| #else |
| #define dg_configPOWER_1V8P (0) |
| #endif |
| #undef dg_configPOWER_EXT_1V8_PERIPHERALS |
| #endif |
| |
| #if defined(dg_configPOWER_FLASH) && defined(dg_configPOWER_1V8_ACTIVE) |
| #error "Both dg_configPOWER_FLASH and dg_configPOWER_1V8_ACTIVE are defined! Please use dg_configPOWER_1V8_ACTIVE only!" |
| #endif |
| |
| #if defined(dg_configFLASH_POWER_OFF) && defined(dg_configPOWER_1V8_SLEEP) |
| #error "Both dg_configFLASH_POWER_OFF and dg_configPOWER_1V8_SLEEP are defined! Please use dg_configPOWER_1V8_SLEEP only!" |
| #endif |
| |
| #ifdef dg_configPOWER_FLASH |
| #warning "dg_configPOWER_FLASH is deprecated! Use dg_configPOWER_1V8_ACTIVE instead!" |
| #endif |
| /* End of backward compatibility checks */ |
| |
| /** |
| * \brief When set to 1, the 1V8 rail is powered, when the system is in active state. |
| * |
| * \bsp_default_note{\bsp_config_option_app,} |
| */ |
| #ifndef dg_configPOWER_1V8_ACTIVE |
| #ifndef dg_configPOWER_FLASH |
| #define dg_configPOWER_1V8_ACTIVE (0) |
| #else |
| #if (dg_configPOWER_FLASH == 0) |
| #if (dg_configFLASH_CONNECTED_TO == FLASH_CONNECTED_TO_1V8) |
| #error "Flash is connected to the 1V8 rail but the rail is turned off (1)..." |
| #else |
| #define dg_configPOWER_1V8_ACTIVE (0) |
| #endif |
| #else |
| #define dg_configPOWER_1V8_ACTIVE (1) |
| #endif |
| #endif |
| #endif |
| |
| /** |
| * \brief When set to 1, the 1V8 is powered during sleep. |
| * |
| * \bsp_default_note{\bsp_config_option_app,} |
| */ |
| #ifndef dg_configPOWER_1V8_SLEEP |
| #ifndef dg_configFLASH_POWER_OFF |
| #define dg_configPOWER_1V8_SLEEP (0) |
| #else |
| #if (dg_configFLASH_POWER_OFF == 0) |
| #define dg_configPOWER_1V8_SLEEP (1) |
| #else |
| #define dg_configPOWER_1V8_SLEEP (0) |
| #endif |
| #endif |
| #endif |
| |
| /** |
| * \brief When set to 1, the Flash (connected to the 1V8 rail) is powered off during sleep. |
| * |
| * \note This is an internal define and cannot be overridden! |
| */ |
| #undef dg_configFLASH_POWER_OFF |
| #define dg_configFLASH_POWER_OFF ((dg_configFLASH_CONNECTED_TO == FLASH_CONNECTED_TO_1V8) \ |
| && (dg_configPOWER_1V8_SLEEP == 0)) |
| |
| /** |
| * \brief When set to 1, the 1V8P rail is powered. |
| * |
| * \bsp_default_note{\bsp_config_option_app,} |
| */ |
| #ifndef dg_configPOWER_1V8P |
| #define dg_configPOWER_1V8P (0) |
| #endif |
| |
| /** |
| * \brief When set to 1, the QSPI FLASH is put to power-down state during sleep. |
| * |
| * \bsp_default_note{\bsp_config_option_app,} |
| */ |
| #ifndef dg_configFLASH_POWER_DOWN |
| #define dg_configFLASH_POWER_DOWN (0) |
| #endif |
| |
| /** |
| * \brief Enable the Flash Autodetection mode |
| * |
| * \warning THIS WILL GREATLY INCREASE THE CODE SIZE AND RETRAM USAGE!!! MAKE SURE YOUR PROJECT |
| * CAN SUPPORT THIS. |
| * |
| * \bsp_default_note{\bsp_config_option_app, \bsp_config_option_expert_only} |
| */ |
| #ifndef dg_configFLASH_AUTODETECT |
| #define dg_configFLASH_AUTODETECT (0) |
| #endif |
| |
| #if dg_configFLASH_AUTODETECT == 0 |
| |
| /** |
| * \brief The Flash Driver header file to include |
| * |
| * The header file must be in the include path of the compiler |
| * |
| * \bsp_default_note{\bsp_config_option_app,} |
| */ |
| #ifndef dg_configFLASH_HEADER_FILE |
| #define dg_configFLASH_HEADER_FILE "qspi_w25q80ew.h" |
| #endif |
| |
| /** |
| * \brief The Flash Manufacturer ID |
| * |
| * This must be defined inside the driver header file |
| * |
| * \bsp_default_note{\bsp_config_option_app,} |
| */ |
| #ifndef dg_configFLASH_MANUFACTURER_ID |
| #define dg_configFLASH_MANUFACTURER_ID WINBOND_ID |
| #endif |
| |
| /** |
| * \brief The Flash Device Type ID |
| * |
| * This must be defined inside the driver header file |
| * |
| * \bsp_default_note{\bsp_config_option_app,} |
| */ |
| #ifndef dg_configFLASH_DEVICE_TYPE |
| #define dg_configFLASH_DEVICE_TYPE W25Q80EW |
| #endif |
| |
| /** |
| * \brief The Flash Device Density ID |
| * |
| * This must be defined inside the driver header file |
| * |
| * \bsp_default_note{\bsp_config_option_app,} |
| */ |
| #ifndef dg_configFLASH_DENSITY |
| #define dg_configFLASH_DENSITY W25Q_8Mb_SIZE |
| #endif |
| |
| #endif /* dg_configFLASH_AUTODETECT == 0 */ |
| |
| /** |
| * \brief Offset of the image if not placed at the beginning of QSPI Flash. |
| * |
| * \bsp_default_note{\bsp_config_option_app, \bsp_config_option_expert_only} |
| */ |
| #ifndef dg_configIMAGE_FLASH_OFFSET |
| #define dg_configIMAGE_FLASH_OFFSET (0) |
| #endif |
| |
| /** |
| * \brief Set the flash page size. |
| * |
| * \bsp_default_note{\bsp_config_option_app, \bsp_config_option_expert_only} |
| */ |
| #ifndef dg_configFLASH_MAX_WRITE_SIZE |
| #define dg_configFLASH_MAX_WRITE_SIZE (128) |
| #endif |
| |
| /** |
| * \brief Disable background operations. |
| * |
| * When enabled, outstanding QSPI operations will take place during sleep time |
| * increasing the efficiency. |
| * |
| * - 1 : Disabled |
| * - 0 : Enabled |
| * |
| * \bsp_default_note{\bsp_config_option_app, \bsp_config_option_expert_only} |
| */ |
| #ifndef dg_configDISABLE_BACKGROUND_FLASH_OPS |
| #define dg_configDISABLE_BACKGROUND_FLASH_OPS (0) |
| #endif |
| |
| /* ---------------------------------------------------------------------------------------------- */ |
| |
| /** |
| * \} |
| */ |
| |
| /** |
| * \addtogroup DEBUG_SETTINGS |
| * |
| * \brief Debugging settings |
| * |
| * \{ |
| */ |
| /* -------------------------------------- Debug settings ---------------------------------------- */ |
| |
| /** |
| * \brief Enable debugger |
| * |
| * \bsp_default_note{\bsp_config_option_app,} |
| */ |
| #ifndef dg_configENABLE_DEBUGGER |
| #define dg_configENABLE_DEBUGGER (1) |
| #endif |
| |
| /** |
| * \brief Use SW cursor |
| * |
| * \bsp_default_note{\bsp_config_option_app,} |
| */ |
| #ifndef dg_configUSE_SW_CURSOR |
| # define dg_configUSE_SW_CURSOR (0) |
| # define SW_CURSOR_PORT (0) |
| # define SW_CURSOR_PIN (0) |
| #else |
| # if dg_configBLACK_ORCA_MB_REV == BLACK_ORCA_MB_REV_D |
| # if !defined SW_CURSOR_PORT && !defined SW_CURSOR_PIN |
| # define SW_CURSOR_PORT (0) |
| # define SW_CURSOR_PIN (7) |
| # endif |
| # else |
| # if !defined SW_CURSOR_PORT && !defined SW_CURSOR_PIN |
| # define SW_CURSOR_PORT (2) |
| # define SW_CURSOR_PIN (3) |
| # endif |
| # endif |
| #endif |
| #define SW_CURSOR_GPIO *(SW_CURSOR_PORT == 0 ? \ |
| (SW_CURSOR_PIN == 0 ? &(GPIO->P00_MODE_REG) : \ |
| (SW_CURSOR_PIN == 1 ? &(GPIO->P01_MODE_REG) : \ |
| (SW_CURSOR_PIN == 2 ? &(GPIO->P02_MODE_REG) : \ |
| (SW_CURSOR_PIN == 3 ? &(GPIO->P03_MODE_REG) : \ |
| (SW_CURSOR_PIN == 4 ? &(GPIO->P04_MODE_REG) : \ |
| (SW_CURSOR_PIN == 5 ? &(GPIO->P05_MODE_REG) : \ |
| (SW_CURSOR_PIN == 6 ? &(GPIO->P06_MODE_REG) : \ |
| &(GPIO->P07_MODE_REG)))))))) \ |
| : \ |
| (SW_CURSOR_PORT == 1 ? \ |
| (SW_CURSOR_PIN == 0 ? &(GPIO->P10_MODE_REG) : \ |
| (SW_CURSOR_PIN == 1 ? &(GPIO->P11_MODE_REG) : \ |
| (SW_CURSOR_PIN == 2 ? &(GPIO->P12_MODE_REG) : \ |
| (SW_CURSOR_PIN == 3 ? &(GPIO->P13_MODE_REG) : \ |
| (SW_CURSOR_PIN == 4 ? &(GPIO->P14_MODE_REG) : \ |
| (SW_CURSOR_PIN == 5 ? &(GPIO->P15_MODE_REG) : \ |
| (SW_CURSOR_PIN == 6 ? &(GPIO->P16_MODE_REG) : \ |
| &(GPIO->P17_MODE_REG)))))))) \ |
| : \ |
| (SW_CURSOR_PORT == 2 ? \ |
| (SW_CURSOR_PIN == 0 ? &(GPIO->P20_MODE_REG) : \ |
| (SW_CURSOR_PIN == 1 ? &(GPIO->P21_MODE_REG) : \ |
| (SW_CURSOR_PIN == 2 ? &(GPIO->P22_MODE_REG) : \ |
| (SW_CURSOR_PIN == 3 ? &(GPIO->P23_MODE_REG) : \ |
| &(GPIO->P24_MODE_REG))))) \ |
| : \ |
| (SW_CURSOR_PORT == 3 ? \ |
| (SW_CURSOR_PIN == 0 ? &(GPIO->P30_MODE_REG) : \ |
| (SW_CURSOR_PIN == 1 ? &(GPIO->P31_MODE_REG) : \ |
| (SW_CURSOR_PIN == 2 ? &(GPIO->P32_MODE_REG) : \ |
| (SW_CURSOR_PIN == 3 ? &(GPIO->P33_MODE_REG) : \ |
| (SW_CURSOR_PIN == 4 ? &(GPIO->P34_MODE_REG) : \ |
| (SW_CURSOR_PIN == 5 ? &(GPIO->P35_MODE_REG) : \ |
| (SW_CURSOR_PIN == 6 ? &(GPIO->P36_MODE_REG) : \ |
| &(GPIO->P37_MODE_REG)))))))) \ |
| : \ |
| (SW_CURSOR_PIN == 0 ? &(GPIO->P40_MODE_REG) : \ |
| (SW_CURSOR_PIN == 1 ? &(GPIO->P41_MODE_REG) : \ |
| (SW_CURSOR_PIN == 2 ? &(GPIO->P42_MODE_REG) : \ |
| (SW_CURSOR_PIN == 3 ? &(GPIO->P43_MODE_REG) : \ |
| (SW_CURSOR_PIN == 4 ? &(GPIO->P44_MODE_REG) : \ |
| (SW_CURSOR_PIN == 5 ? &(GPIO->P45_MODE_REG) : \ |
| (SW_CURSOR_PIN == 6 ? &(GPIO->P46_MODE_REG) : \ |
| &(GPIO->P47_MODE_REG)))))))))))) |
| |
| #define SW_CURSOR_SET *(SW_CURSOR_PORT == 0 ? &(GPIO->P0_SET_DATA_REG) : \ |
| (SW_CURSOR_PORT == 1 ? &(GPIO->P1_SET_DATA_REG) : \ |
| (SW_CURSOR_PORT == 2 ? &(GPIO->P2_SET_DATA_REG) : \ |
| (SW_CURSOR_PORT == 3 ? &(GPIO->P3_SET_DATA_REG) : \ |
| &(GPIO->P4_SET_DATA_REG))))) |
| |
| #define SW_CURSOR_RESET *(SW_CURSOR_PORT == 0 ? &(GPIO->P0_RESET_DATA_REG) : \ |
| (SW_CURSOR_PORT == 1 ? &(GPIO->P1_RESET_DATA_REG) : \ |
| (SW_CURSOR_PORT == 2 ? &(GPIO->P2_RESET_DATA_REG) : \ |
| (SW_CURSOR_PORT == 3 ? &(GPIO->P3_RESET_DATA_REG) : \ |
| &(GPIO->P4_RESET_DATA_REG))))) |
| /* ---------------------------------------------------------------------------------------------- */ |
| |
| /** |
| * \} |
| */ |
| |
| /** |
| * \addtogroup CACHE_SETTINGS |
| * |
| * \brief Cache configuration settings |
| * \{ |
| */ |
| /* -------------------------------------- Cache settings ---------------------------------------- */ |
| |
| /** |
| * \brief Set the size (in bytes) of the QSPI flash cacheable area. |
| * |
| * All reads from offset 0 up to (not including) offset dg_configCACHEABLE_QSPI_AREA_LEN |
| * will be cached. In addition, any writes to this area will trigger cache flushing, to |
| * avoid any cache incoherence. |
| * |
| * The size must be 64KB-aligned, due to the granularity of CACHE_CTRL2_REG[CACHE_LEN]. |
| * |
| * Special values: |
| * * 0 : Turn off cache. |
| * * -1 : Don't configure cacheable area size (i.e. leave as set by booter). |
| * |
| * \bsp_default_note{\bsp_config_option_app, \bsp_config_option_expert_only} |
| */ |
| #ifndef dg_configCACHEABLE_QSPI_AREA_LEN |
| #define dg_configCACHEABLE_QSPI_AREA_LEN (-1) |
| #endif |
| |
| /** |
| * \brief Set the associativity of the cache. |
| * |
| * Available values: |
| * - CACHE_ASSOC_AS_IS |
| * - CACHE_ASSOC_DIRECT_MAP |
| * - CACHE_ASSOC_2_WAY |
| * - CACHE_ASSOC_4_WAY |
| * |
| * \bsp_default_note{\bsp_config_option_app,} |
| */ |
| #ifndef dg_configCACHE_ASSOCIATIVITY |
| #define dg_configCACHE_ASSOCIATIVITY CACHE_ASSOC_4_WAY |
| #endif |
| |
| /** |
| * \brief Set the line size of the cache. |
| * |
| * \bsp_default_note{\bsp_config_option_app,} |
| * |
| * Available values: |
| * - CACHE_LINESZ_AS_IS |
| * - CACHE_LINESZ_8_BYTES |
| * - CACHE_LINESZ_16_BYTES |
| * - CACHE_LINESZ_32_BYTES |
| */ |
| #ifndef dg_configCACHE_LINESZ |
| #define dg_configCACHE_LINESZ CACHE_LINESZ_8_BYTES |
| #endif |
| /* ---------------------------------------------------------------------------------------------- */ |
| |
| /** |
| * \} |
| */ |
| |
| /** |
| * \addtogroup ARBITER_SETTINGS |
| * |
| * \brief Arbiter configuration settings |
| * \{ |
| */ |
| /* ------------------------------- Arbiter configuration settings ------------------------------- */ |
| |
| /** |
| * \brief Custom arbiter configuration support. |
| * |
| * \bsp_default_note{\bsp_config_option_app,} |
| */ |
| #ifndef dg_configCOEX_ENABLE_CONFIG |
| #define dg_configCOEX_ENABLE_CONFIG (0) |
| #endif |
| |
| /** |
| * \brief Arbiter statistics |
| * |
| * \bsp_default_note{\bsp_config_option_app,} |
| */ |
| #ifndef dg_configCOEX_ENABLE_STATS |
| #define dg_configCOEX_ENABLE_STATS (0) |
| #endif |
| /* ---------------------------------------------------------------------------------------------- */ |
| |
| /** |
| * \} |
| */ |
| |
| /** |
| * \addtogroup PERIPHERAL_SELECTION |
| * |
| * \brief Peripheral selection |
| * |
| * When enabled the specific low level driver is included in the compilation of the SDK. |
| * - 0 : Disabled |
| * - 1 : Enabled |
| * |
| * The default option can be overridden in the application configuration file. |
| * |
| * \{ |
| Driver | Setting | Default option |
| ------------------------------ | -------------------------------------- | :------------------: |
| AES HASH | dg_configUSE_HW_AES_HASH | 0 |
| Radio MAC Arbiter | dg_configUSE_HW_COEX | 0 |
| Clock and Power Manager | dg_configUSE_HW_CPM | 1 |
| Direct Memory Access | dg_configUSE_HW_DMA | 1 |
| Elliptic Curve Controller | dg_configUSE_HW_ECC | 1 |
| Analog to Digital Converter | dg_configUSE_HW_GPADC | 1 |
| General Purpose I/O | dg_configUSE_HW_GPIO | 1 |
| Inter-Integrated Circuit | dg_configUSE_HW_I2C | 0 |
| Infra Red Generator | dg_configUSE_HW_IRGEN | 0 |
| Keyboard scanner | dg_configUSE_HW_KEYBOARD_SCANNER | 0 |
| OTP controller | dg_configUSE_HW_OTPC | 1 |
| QSPI controller | dg_configUSE_HW_QSPI | 1 |
| Quadrature decoder | dg_configUSE_HW_QUAD | 0 |
| Radio module | dg_configUSE_HW_RF | 1 |
| State of charge module | dg_configUSE_HW_SOC | 0 |
| Timer 0 | dg_configUSE_HW_TIMER0 | 0 |
| Timer 1 | dg_configUSE_HW_TIMER1 | 1 |
| Timer 2 | dg_configUSE_HW_TIMER2 | 0 |
| True Random Generator | dg_configUSE_HW_TRNG | 1 |
| UART | dg_configUSE_HW_UART | 1 |
| USB charger | dg_configUSE_HW_USB_CHARGER | 1 |
| Wakeup timer | dg_configUSE_HW_WKUP | 1 |
| PDM interface | dg_configUSE_IF_PDM | 0 |
| * |
| * \bsp_default_note{\bsp_config_option_app,} |
| */ |
| |
| /* -------------------------------- Peripherals (hw_*) selection -------------------------------- */ |
| |
| #ifndef dg_configUSE_HW_AES_HASH |
| #define dg_configUSE_HW_AES_HASH (0) |
| #endif |
| |
| #ifndef dg_configUSE_HW_COEX |
| #define dg_configUSE_HW_COEX (0) |
| #endif |
| |
| #ifndef dg_configUSE_HW_CPM |
| #define dg_configUSE_HW_CPM (1) |
| #endif |
| |
| #ifndef dg_configUSE_HW_DMA |
| #define dg_configUSE_HW_DMA (1) |
| #endif |
| |
| #ifndef dg_configUSE_HW_ECC |
| #define dg_configUSE_HW_ECC (1) |
| #endif |
| |
| #ifndef dg_configUSE_HW_GPADC |
| #define dg_configUSE_HW_GPADC (1) |
| #endif |
| |
| #ifndef dg_configUSE_HW_GPIO |
| #define dg_configUSE_HW_GPIO (1) |
| #endif |
| |
| #ifndef dg_configUSE_HW_I2C |
| #define dg_configUSE_HW_I2C (0) |
| #endif |
| |
| #ifndef dg_configUSE_HW_IRGEN |
| #define dg_configUSE_HW_IRGEN (0) |
| #endif |
| |
| #ifndef dg_configUSE_HW_KEYBOARD_SCANNER |
| #define dg_configUSE_HW_KEYBOARD_SCANNER (0) |
| #endif |
| |
| #ifndef dg_configUSE_HW_OTPC |
| #define dg_configUSE_HW_OTPC (1) |
| #endif |
| |
| #ifndef dg_configUSE_HW_QSPI |
| #define dg_configUSE_HW_QSPI (1) |
| #endif |
| |
| #ifndef dg_configUSE_HW_QUAD |
| #define dg_configUSE_HW_QUAD (0) |
| #endif |
| |
| #ifndef dg_configUSE_HW_RF |
| #define dg_configUSE_HW_RF (1) |
| #endif |
| |
| #ifndef dg_configUSE_HW_SOC |
| #define dg_configUSE_HW_SOC (0) |
| #endif |
| |
| #ifndef dg_configUSE_HW_SPI |
| #define dg_configUSE_HW_SPI (0) |
| #endif |
| |
| #ifndef dg_configUSE_HW_TEMPSENS |
| #define dg_configUSE_HW_TEMPSENS (1) |
| #endif |
| |
| #ifndef dg_configUSE_HW_TIMER0 |
| #define dg_configUSE_HW_TIMER0 (0) |
| #endif |
| |
| #ifndef dg_configUSE_HW_TIMER1 |
| #define dg_configUSE_HW_TIMER1 (1) |
| #endif |
| |
| #ifndef dg_configUSE_HW_TIMER2 |
| #define dg_configUSE_HW_TIMER2 (0) |
| #endif |
| |
| #ifndef dg_configUSE_HW_TRNG |
| #define dg_configUSE_HW_TRNG (1) |
| #endif |
| |
| #ifndef dg_configUSE_HW_UART |
| #define dg_configUSE_HW_UART (1) |
| #endif |
| |
| #ifndef dg_configUSE_HW_USB_CHARGER |
| #define dg_configUSE_HW_USB_CHARGER (1) |
| #endif |
| |
| #ifndef dg_configUSE_HW_WKUP |
| #define dg_configUSE_HW_WKUP (1) |
| #endif |
| |
| #ifndef dg_configUSE_HW_USB |
| #define dg_configUSE_HW_USB (0) |
| #endif |
| |
| #ifndef dg_configUSE_IF_PDM |
| #define dg_configUSE_IF_PDM (0) |
| #endif |
| /* ---------------------------------------------------------------------------------------------- */ |
| |
| /** |
| * \} |
| */ |
| |
| /* ------------------------------- WKUP settings ------------------------------------------------ */ |
| |
| /** |
| * \addtogroup WKUP_SETTINGS |
| * |
| * \brief WKUP configuration settings |
| * \{ |
| */ |
| |
| /* ------------------------------- LATCH settings ------------------------------------------------ */ |
| |
| /** |
| * \addtogroup WKUP_LATCH_SETTINGS |
| * |
| * \brief WKUP LATCH configuration settings |
| * \{ |
| */ |
| |
| /** |
| * \brief WKUP latch wakeup (io) source support |
| * |
| * \note In chip revision DA14680/1-01, this feature is implemented in s/w |
| * \note In chip revision DA14682/3-BA, this feature is implemented in h/w |
| * |
| * \bsp_default_note{\bsp_config_option_app,} |
| */ |
| #if (!defined(dg_configLATCH_WKUP_SOURCE)) || (dg_configUSE_HW_WKUP == 0) |
| #undef dg_configLATCH_WKUP_SOURCE |
| #define dg_configLATCH_WKUP_SOURCE (0) |
| #endif |
| |
| /* ---------------------------------------------------------------------------------------------- */ |
| |
| /** |
| * \} |
| */ |
| |
| /* ---------------------------------------------------------------------------------------------- */ |
| |
| /** |
| * \} |
| */ |
| |
| /* ------------------------------- UART settings ------------------------------------------------ */ |
| |
| /** |
| * \addtogroup UART_SETTINGS |
| * |
| * \brief UART FIFO configuration settings |
| * \{ |
| */ |
| |
| /* ------------------------------- FIFO settings ------------------------------------------------ */ |
| |
| /** |
| * \addtogroup UART_FIFO_SETTINGS |
| * |
| * \brief UART FIFO configuration settings |
| * \{ |
| */ |
| |
| /** |
| * \brief Software FIFO support |
| * |
| * \bsp_default_note{\bsp_config_option_app,} |
| */ |
| #ifndef dg_configUART_SOFTWARE_FIFO |
| #define dg_configUART_SOFTWARE_FIFO (0) |
| #endif |
| |
| /** |
| * \brief UART1's software FIFO size |
| * |
| * \bsp_default_note{\bsp_config_option_app,} |
| */ |
| #ifndef dg_configUART1_SOFTWARE_FIFO_SIZE |
| # define dg_configUART1_SOFTWARE_FIFO_SIZE (0) |
| #endif |
| |
| /** |
| * \brief UART2's software FIFO size |
| * |
| * \bsp_default_note{\bsp_config_option_app,} |
| */ |
| #ifndef dg_configUART2_SOFTWARE_FIFO_SIZE |
| # define dg_configUART2_SOFTWARE_FIFO_SIZE (0) |
| #endif |
| /* ---------------------------------------------------------------------------------------------- */ |
| |
| /** |
| * \} |
| */ |
| |
| /* ------------------------------- Circular DMA for RX settings --------------------------------- */ |
| |
| /** |
| * \addtogroup UART_CIRCULAR_DMA_FOR_RX_SETTINGS |
| * |
| * \brief UART FIFO configuration settings |
| * \{ |
| */ |
| |
| /** |
| * \brief Circular DMA support for RX |
| * |
| * \bsp_default_note{\bsp_config_option_app,} |
| */ |
| #ifndef dg_configUART_RX_CIRCULAR_DMA |
| #define dg_configUART_RX_CIRCULAR_DMA (0) |
| #endif |
| |
| /** |
| * \brief UART1's Circular DMA buffer size for RX |
| * |
| * \bsp_default_note{\bsp_config_option_app,} |
| */ |
| #ifndef dg_configUART1_RX_CIRCULAR_DMA_BUF_SIZE |
| #define dg_configUART1_RX_CIRCULAR_DMA_BUF_SIZE (0) |
| #endif |
| |
| /** |
| * \brief UART2's Circular DMA buffer size for RX |
| * |
| * \bsp_default_note{\bsp_config_option_app,} |
| */ |
| #ifndef dg_configUART2_RX_CIRCULAR_DMA_BUF_SIZE |
| #define dg_configUART2_RX_CIRCULAR_DMA_BUF_SIZE (0) |
| #endif |
| |
| /* ---------------------------------------------------------------------------------------------- */ |
| |
| /** |
| * \} |
| */ |
| |
| /* ---------------------------------------------------------------------------------------------- */ |
| |
| /** |
| * \} |
| */ |
| |
| /** |
| * \addtogroup ADAPTER_SELECTION |
| * |
| * \brief Adapter selection |
| * |
| * When enabled the specific adapter is included in the compilation of the SDK. |
| * - 0 : Disabled |
| * - 1 : Enabled |
| * |
| * The default option can be overridden in the application configuration file. |
| * |
| * \{ |
| Adapter | Setting | Default option |
| ------------------------------ | -------------------------------------- | :------------------: |
| Flash | dg_configFLASH_ADAPTER | 1 |
| Inter-Integrated Circuit | dg_configI2C_ADAPTER | 0 |
| Non Volatile Memory Storage | dg_configNVMS_ADAPTER | 1 |
| Virtual EERPOM Storage | dg_configNVMS_VES | 1 |
| Radio | dg_configRF_ADAPTER | 1 |
| Serial Peripheral Interface | dg_configSPI_ADAPTER | 0 |
| UART | dg_configUART_ADAPTER | 0 |
| UART for BLE | dg_configUART_BLE_ADAPTER | 0 |
| Analog to Digital Converter | dg_configGPADC_ADAPTER | 0 |
| Temperature Sensor | dg_configTEMPSENS_ADAPTER | 0 |
| Battery | dg_configBATTERY_ADAPTER | 0 |
| Non Volatile Parameters | dg_configNVPARAM_ADAPTER | 0 |
| Crypto | dg_configCRYPTO_ADAPTER | 1 |
| Keyboard scanner | dg_configKEYBOARD_SCANNER_ADAPTER | 0 |
| * |
| * |
| * \bsp_default_note{\bsp_config_option_app,} |
| */ |
| |
| |
| /* -------------------------------- Adapters (ad_*) selection -------------------------------- */ |
| |
| #ifndef dg_configFLASH_ADAPTER |
| #define dg_configFLASH_ADAPTER (1) |
| #endif |
| |
| #ifndef dg_configI2C_ADAPTER |
| #define dg_configI2C_ADAPTER (0) |
| #endif |
| |
| #ifndef dg_configNVMS_ADAPTER |
| #define dg_configNVMS_ADAPTER (1) |
| #endif |
| |
| #ifndef dg_configNVMS_FLASH_CACHE |
| #define dg_configNVMS_FLASH_CACHE (0) |
| #endif |
| |
| #ifndef dg_configNVMS_VES |
| #define dg_configNVMS_VES (1) |
| #endif |
| |
| #ifndef dg_configRF_ADAPTER |
| #define dg_configRF_ADAPTER (1) |
| #endif |
| |
| #ifndef dg_configSPI_ADAPTER |
| #define dg_configSPI_ADAPTER (0) |
| #endif |
| |
| #ifndef dg_configUART_ADAPTER |
| #define dg_configUART_ADAPTER (0) |
| #endif |
| |
| #ifndef dg_configUART_BLE_ADAPTER |
| #define dg_configUART_BLE_ADAPTER (0) |
| #endif |
| |
| #ifndef dg_configGPADC_ADAPTER |
| #define dg_configGPADC_ADAPTER (0) |
| #endif |
| |
| #ifndef dg_configTEMPSENS_ADAPTER |
| #define dg_configTEMPSENS_ADAPTER (0) |
| #endif |
| |
| #ifndef dg_configBATTERY_ADAPTER |
| #define dg_configBATTERY_ADAPTER (0) |
| #endif |
| |
| #ifndef dg_configNVPARAM_ADAPTER |
| #define dg_configNVPARAM_ADAPTER (0) |
| #endif |
| |
| #ifndef dg_configCRYPTO_ADAPTER |
| #define dg_configCRYPTO_ADAPTER (1) |
| #endif |
| |
| #ifndef dg_configKEYBOARD_SCANNER_ADAPTER |
| #define dg_configKEYBOARD_SCANNER_ADAPTER (0) |
| #endif |
| /* ---------------------------------------------------------------------------------------------- */ |
| |
| /** |
| * \} |
| */ |
| |
| /** |
| * \addtogroup CONSOLE_IO_SETTINGS |
| * |
| * \brief Console IO configuration settings |
| * |
| * \{ |
| Description | Setting | Default option |
| ----------------------------------------- | -------------------------- | :---------------: |
| Enable serial console module | dg_configUSE_CONSOLE | 0 |
| Enable serial console stubbed API | dg_configUSE_CONSOLE_STUBS | 0 |
| Enable Command Line Interface module | dg_configUSE_CLI | 0 |
| Enable Command Line Interface stubbed API | dg_configUSE_CLI_STUBS | 0 |
| |
| \see console.h cli.h |
| |
| \note CLI module requires dg_configUSE_CONSOLE to be enabled. |
| * |
| * \bsp_default_note{\bsp_config_option_app,} |
| */ |
| |
| /* -------------------------------------- Console IO configuration settings --------------------- */ |
| |
| #ifndef dg_configUSE_CONSOLE |
| #define dg_configUSE_CONSOLE (0) |
| #endif |
| |
| #ifndef dg_configUSE_CONSOLE_STUBS |
| #define dg_configUSE_CONSOLE_STUBS (0) |
| #endif |
| |
| #ifndef dg_configUSE_CLI |
| #define dg_configUSE_CLI (0) |
| #endif |
| |
| #ifndef dg_configUSE_CLI_STUBS |
| #define dg_configUSE_CLI_STUBS (0) |
| #endif |
| /* ---------------------------------------------------------------------------------------------- */ |
| |
| /** |
| * \} |
| */ |
| |
| /* ----------------------------- DGTL ----------------------------------------------------------- */ |
| |
| /** |
| * \brief Enable D.GTL interface |
| * |
| * When this macro is enabled, the DGTL framework is available for use. |
| * The framework must furthermore be initialized in the application using |
| * dgtl_init(). Additionally, the UART adapter must be initialized accordingly. |
| * |
| * Please see sdk/middleware/dgtl/include/ for further DGTL configuration |
| * (in dgtl_config.h) and API. |
| * |
| * \bsp_default_note{\bsp_config_option_app,} |
| * |
| */ |
| #ifndef dg_configUSE_DGTL |
| #define dg_configUSE_DGTL (0) |
| #endif |
| |
| /** |
| * \addtogroup DEBUG_SETTINGS |
| * \{ |
| * \addtogroup SYSTEM_VIEW |
| * |
| * \brief System View configuration settings |
| * \{ |
| */ |
| |
| /* ----------------------------- Segger System View configuration ------------------------------- */ |
| |
| /** |
| * \brief Segger's System View |
| * |
| * When enabled the application should also call SEGGER_SYSVIEW_Conf() to enable system monitoring. |
| * configTOTAL_HEAP_SIZE should be increased by dg_configSYSTEMVIEW_STACK_OVERHEAD bytes for each system task. |
| * For example, if there are 8 system tasks configTOTAL_HEAP_SIZE should be increased by |
| * (8 * dg_configSYSTEMVIEW_STACK_OVERHEAD) bytes. |
| * |
| * - 0 : Disabled |
| * - 1 : Enabled |
| * |
| * \bsp_default_note{\bsp_config_option_app,} |
| * |
| */ |
| #ifndef dg_configSYSTEMVIEW |
| #define dg_configSYSTEMVIEW (0) |
| #endif |
| |
| /** |
| * \brief Stack size overhead when System View API is used |
| * |
| * All thread stack sizes plus the the stack of IRQ handlers will be increased by that amount |
| * to avoid stack overflow when System View is monitoring the system. |
| * |
| * \bsp_default_note{\bsp_config_option_app, \bsp_config_option_expert_only} |
| */ |
| #ifndef dg_configSYSTEMVIEW_STACK_OVERHEAD |
| #define dg_configSYSTEMVIEW_STACK_OVERHEAD (256) |
| #endif |
| |
| /* |
| * Enable/Disable System View monitoring time critical interrupt handlers (BLE, CPM, USB). |
| * Disabling ISR monitoring could help reducing assertions triggered by System View monitoring overhead. |
| * |
| */ |
| |
| /** |
| * \brief Let System View monitor BLE related ISRs (BLE_GEN_Handler / BLE_WAKEUP_LP_Handler). |
| * |
| * - 0 : Disabled |
| * - 1 : Enabled |
| * |
| * \bsp_default_note{\bsp_config_option_app, \bsp_config_option_expert_only} |
| */ |
| #ifndef dg_configSYSTEMVIEW_MONITOR_BLE_ISR |
| #define dg_configSYSTEMVIEW_MONITOR_BLE_ISR (1) |
| #endif |
| |
| /** |
| * \brief Let System View monitor CPM related ISRs (SWTIM1_Handler / WKUP_GPIO_Handler). |
| * |
| * - 0 : Disabled |
| * - 1 : Enabled |
| * |
| * \bsp_default_note{\bsp_config_option_app, \bsp_config_option_expert_only} |
| */ |
| #ifndef dg_configSYSTEMVIEW_MONITOR_CPM_ISR |
| #define dg_configSYSTEMVIEW_MONITOR_CPM_ISR (1) |
| #endif |
| |
| /** |
| * \brief Let System View monitor USB related ISRs (USB_Handler / VBUS_Handler). |
| * |
| * - 0 : Disabled |
| * - 1 : Enabled |
| * |
| * \bsp_default_note{\bsp_config_option_app, \bsp_config_option_expert_only} |
| */ |
| #ifndef dg_configSYSTEMVIEW_MONITOR_USB_ISR |
| #define dg_configSYSTEMVIEW_MONITOR_USB_ISR (1) |
| #endif |
| /* ---------------------------------------------------------------------------------------------- */ |
| |
| /** |
| * \} |
| * \} |
| */ |
| |
| /** |
| * \addtogroup RF_DRIVER_SETTINGS |
| * |
| * \brief Doxygen documentation is not yet available for this module. |
| * Please check the source code file(s) |
| * |
| * \bsp_default_note{\bsp_config_option_app, \bsp_config_option_expert_only} |
| * \{ |
| */ |
| /* ------------------------------- RF driver configuration settings ----------------------------- */ |
| |
| /* Set to 1 to enable the recalibration procedure */ |
| #ifndef dg_configRF_ENABLE_RECALIBRATION |
| #define dg_configRF_ENABLE_RECALIBRATION (1) |
| #endif |
| |
| /* If RF recalibration is enabled, we need to enable GPADC as well */ |
| #if dg_configRF_ENABLE_RECALIBRATION |
| #undef dg_configUSE_HW_GPADC |
| #define dg_configUSE_HW_GPADC (1) |
| #undef dg_configGPADC_ADAPTER |
| #define dg_configGPADC_ADAPTER (1) |
| #undef dg_configTEMPSENS_ADAPTER |
| #define dg_configTEMPSENS_ADAPTER (1) |
| #endif |
| |
| /* If RF is enabled, we need to enable GPADC adapter as well */ |
| #if dg_configRF_ADAPTER |
| #undef dg_configGPADC_ADAPTER |
| #define dg_configGPADC_ADAPTER (1) |
| #endif |
| |
| /* Minimum time before performing an RF recalibration, in FreeRTOS scheduler ticks */ |
| #ifndef dg_configRF_MIN_RECALIBRATION_TIMEOUT |
| #if (dg_configUSE_LP_CLK == LP_CLK_32000) |
| #define dg_configRF_MIN_RECALIBRATION_TIMEOUT (1000) // ~2 secs |
| #elif (dg_configUSE_LP_CLK == LP_CLK_32768) |
| #define dg_configRF_MIN_RECALIBRATION_TIMEOUT (1024) // ~2 secs |
| #elif (dg_configUSE_LP_CLK == LP_CLK_RCX) |
| #define dg_configRF_MIN_RECALIBRATION_TIMEOUT (1000) |
| #else /* LP_CLK_ANY */ |
| // Must be defined in the custom_config_<>.h file. Should result in ~2sec. |
| #endif |
| #endif |
| |
| /* Maximum time before performing an RF recalibration, in FreeRTOS scheduler ticks |
| * If this time has elapsed, and RF is about to be powered off, recalibration will |
| * be done unconditionally. Set to 0 to disable this functionality */ |
| #ifndef dg_configRF_MAX_RECALIBRATION_TIMEOUT |
| #define dg_configRF_MAX_RECALIBRATION_TIMEOUT (0) // Disabled |
| #endif |
| |
| /* Timeout value (in FreeRTOS scheduler ticks) for timer to initiate RF recalibration. |
| * This will happen at ANY TIME RF is ON and CONFIGURED, EVEN IF A MAC IS RX/TXing DURING |
| * THIS TIME, in contrary to dg_configRF_MAX_RECALIBRATION_TIMEOUT, that will be |
| * performed ONLY when powering off RF. |
| * This is intended for applications where RF is always on, so there is no |
| * opportunity to be recalibrated the normal way (i.e. during poweroff) |
| * |
| * Set to 0 to disable this functionality */ |
| #ifndef dg_configRF_RECALIBRATION_TIMER_TIMEOUT |
| #define dg_configRF_RECALIBRATION_TIMER_TIMEOUT (0) // Disabled |
| #endif |
| |
| |
| /* Minimum temp difference before performing an RF recalibration, in oC*/ |
| #ifndef dg_configRF_MIN_RECALIBRATION_TEMP_DIFF |
| #ifdef CONFIG_USE_FTDF |
| #define dg_configRF_MIN_RECALIBRATION_TEMP_DIFF (5) |
| #else |
| #define dg_configRF_MIN_RECALIBRATION_TEMP_DIFF (10) |
| #endif |
| #endif |
| |
| /* Duration of recalibration procedure, in lp clk cycles */ |
| #ifndef dg_configRF_RECALIBRATION_DURATION |
| # if defined(CONFIG_USE_FTDF) && defined(CONFIG_USE_BLE) |
| # if ((dg_configUSE_LP_CLK == LP_CLK_32000) || (dg_configUSE_LP_CLK == LP_CLK_32768)) |
| # define dg_configRF_RECALIBRATION_DURATION (230) |
| # elif (dg_configUSE_LP_CLK == LP_CLK_RCX) |
| # define dg_configRF_RECALIBRATION_DURATION cm_rcx_us_2_lpcycles((uint32_t)(230 * 30.5)) |
| # else /* LP_CLK_ANY */ |
| // Must be defined in the custom_config_<>.h file. It should be ~7msec. |
| # endif |
| # else |
| # if ((dg_configUSE_LP_CLK == LP_CLK_32000) || (dg_configUSE_LP_CLK == LP_CLK_32768)) |
| # define dg_configRF_RECALIBRATION_DURATION (131) |
| # elif (dg_configUSE_LP_CLK == LP_CLK_RCX) |
| # define dg_configRF_RECALIBRATION_DURATION cm_rcx_us_2_lpcycles((uint32_t)(131 * 30.5)) |
| # else /* LP_CLK_ANY */ |
| // Must be defined in the custom_config_<>.h file. It should be ~4msec. |
| # endif |
| # endif |
| #endif |
| |
| #ifndef dg_configRF_IFF_CALIBRATION_TIMEOUT |
| #if ((dg_configUSE_LP_CLK == LP_CLK_32000) || (dg_configUSE_LP_CLK == LP_CLK_32768)) |
| #define dg_configRF_IFF_CALIBRATION_TIMEOUT (40) |
| #elif (dg_configUSE_LP_CLK == LP_CLK_RCX) |
| #define dg_configRF_IFF_CALIBRATION_TIMEOUT cm_rcx_us_2_lpcycles((uint32_t)(40 * 30.5)) |
| #else /* LP_CLK_ANY */ |
| // Must be defined in the custom_config_<>.h file. It should be ~1.2msec. |
| # endif |
| #endif |
| /* ---------------------------------------------------------------------------------------------- */ |
| |
| /** |
| * \} |
| */ |
| |
| /** |
| * \addtogroup BLE_EVENT_NOTIFICATIONS |
| * |
| * \brief Doxygen documentation is not yet available for this module. |
| * Please check the source code file(s) |
| * |
| * \bsp_default_note{\bsp_config_option_app, \bsp_config_option_expert_only} |
| * |
| * \{ |
| */ |
| /* -----------------------------------BLE event notifications configuration --------------------- */ |
| |
| /* |
| * BLE ISR event Notifications |
| * |
| * This facility enables the user app to receive notifications for BLE |
| * ISR events. These events can be received either directly from inside |
| * the BLE ISR, or as task notifications to the Application Task |
| * registered to the BLE manager. |
| * |
| * To enable, define dg_configBLE_EVENT_NOTIF_TYPE to either |
| * BLE_EVENT_NOTIF_USER_ISR or BLE_EVENT_NOTIF_USER_TASK. |
| * |
| * - When dg_configBLE_EVENT_NOTIF_TYPE == BLE_EVENT_NOTIF_USER_ISR, the user |
| * can define the following macros on his app configuration: |
| * |
| * dg_configBLE_EVENT_NOTIF_HOOK_END_EVENT : The BLE End Event |
| * dg_configBLE_EVENT_NOTIF_HOOK_CSCNT_EVENT : The BLE CSCNT Event |
| * dg_configBLE_EVENT_NOTIF_HOOK_FINE_EVENT : The BLE FINE Event |
| * |
| * These macros must be actually set to the names of functions defined inside |
| * the user application, having a prototype of |
| * |
| * void func(void); |
| * |
| * (The user app does not need to explicitly define the prototype). |
| * |
| * If one of these macros is not defined, the respective notification |
| * will be suppressed. |
| * |
| * Note that these functions will be called in ISR context, directly from the |
| * BLE ISR. They should therefore be very fast and should NEVER block. |
| * |
| * - When dg_configBLE_EVENT_NOTIF_TYPE == BLE_EVENT_NOTIF_USER_TASK, the user |
| * app will receive task notifications on the task registered to the BLE |
| * manager. |
| * |
| * Notifications will be received using the following bit masks: |
| * |
| * - dg_configBLE_EVENT_NOTIF_MASK_END_EVENT: End Event Mask (Def: bit 24) |
| * - dg_configBLE_EVENT_NOTIF_MASK_CSCNT_EVENT: CSCNT Event Mask (Def: bit 25) |
| * - dg_configBLE_EVENT_NOTIF_MASK_FINE_EVENT: FINE Event Mask (Def: bit 26) |
| * |
| * These macros, defining the task notification bit masks, can be redefined as |
| * needed. |
| * |
| * If one of the macros for callback functions presented in the previous |
| * section (for direct ISR notifications) is defined, while in this mode, |
| * the function with the same name will be called directly from the isr |
| * instead of sending a task notification for this particular event to |
| * the app task. |
| * |
| * Macro dg_configBLE_EVENT_NOTIF_RUNTIME_CONTROL (Default: 1) enables/disables |
| * runtime control/masking of notifications. |
| * |
| * If dg_configBLE_EVENT_NOTIF_RUNTIME_CONTROL == 1, then task notifications |
| * must be enabled/disabled using the |
| * ble_event_notif_[enable|disable]_[end|cscnt|fine]_event() functions. |
| * By default all notifications are disabled. |
| * |
| * If dg_configBLE_EVENT_NOTIF_RUNTIME_CONTROL == 0, all notifications will |
| * be sent unconditionally to the application task. |
| * |
| */ |
| #ifndef dg_configBLE_EVENT_NOTIF_TYPE |
| # define dg_configBLE_EVENT_NOTIF_TYPE BLE_EVENT_NOTIF_USER_ISR |
| #endif |
| |
| #if dg_configBLE_EVENT_NOTIF_TYPE == BLE_EVENT_NOTIF_USER_TASK |
| |
| /* Default implementation of BLE event task notifications. This |
| * implementation allows a user task to register for notifications, |
| * and to get task notifications for the available events |
| */ |
| |
| /* Default task notification masks for the various events for which |
| * the framework provides notifications |
| */ |
| # ifndef dg_configBLE_EVENT_NOTIF_MASK_END_EVENT |
| # define dg_configBLE_EVENT_NOTIF_MASK_END_EVENT (1 << 24) |
| # endif |
| |
| # ifndef dg_configBLE_EVENT_NOTIF_MASK_CSCNT_EVENT |
| # define dg_configBLE_EVENT_NOTIF_MASK_CSCNT_EVENT (1 << 25) |
| # endif |
| |
| # ifndef dg_configBLE_EVENT_NOTIF_MASK_FINE_EVENT |
| # define dg_configBLE_EVENT_NOTIF_MASK_FINE_EVENT (1 << 26) |
| # endif |
| |
| /* Implement event hook functions */ |
| # ifndef dg_configBLE_EVENT_NOTIF_HOOK_END_EVENT |
| # define dg_configBLE_EVENT_NOTIF_HOOK_END_EVENT ble_event_notif_app_task_end_event |
| # endif |
| |
| # ifndef dg_configBLE_EVENT_NOTIF_HOOK_CSCNT_EVENT |
| # define dg_configBLE_EVENT_NOTIF_HOOK_CSCNT_EVENT ble_event_notif_app_task_cscnt_event |
| # endif |
| |
| # ifndef dg_configBLE_EVENT_NOTIF_HOOK_FINE_EVENT |
| # define dg_configBLE_EVENT_NOTIF_HOOK_FINE_EVENT ble_event_notif_app_task_fine_event |
| # endif |
| |
| /* |
| * Allow runtime control of (un)masking notifications |
| */ |
| # ifndef dg_configBLE_EVENT_NOTIF_RUNTIME_CONTROL |
| # define dg_configBLE_EVENT_NOTIF_RUNTIME_CONTROL 1 |
| # endif |
| |
| #endif |
| /* ---------------------------------------------------------------------------------------------- */ |
| |
| /** |
| * \} |
| */ |
| |
| /* ----------------------------------- BLE hooks configuration ---------------------------------- */ |
| |
| /* Name of the function that is called to block BLE from sleeping under certain conditions |
| * |
| * The function must be declared as: |
| * unsigned char my_block_sleep(void); |
| * The return value of the function controls whether the BLE will be allowed to go to sleep or not, |
| * 0: the BLE may go to sleep, if possible |
| * 1: the BLE is not allowed to go to sleep. The caller (BLE Adapter) may block or not, |
| * depending on the BLE stack status. |
| * |
| * dg_configBLE_HOOK_BLOCK_SLEEP should be set to my_block_sleep in this example. |
| */ |
| #ifndef dg_configBLE_HOOK_BLOCK_SLEEP |
| /* Already undefined - Nothing to do. */ |
| #endif |
| |
| /* Name of the function that is called to modify the PTI value (Payload Type Indication) when |
| * arbitration is used |
| * |
| * Arbitration is needed only when another external radio is present. The function must be declared |
| * as: |
| * unsigned char my_pti_modify(void); |
| * Details for the implementation of such a function will be provided when the external radio |
| * arbitration functionality is integrated. |
| * |
| * dg_configBLE_HOOK_PTI_MODIFY should be set to my_pti_modify in this example. |
| * |
| * See also the comment about the <BLE code hooks> in ble_config.h for more info. |
| */ |
| #ifndef dg_configBLE_HOOK_PTI_MODIFY |
| /* Already undefined - Nothing to do. */ |
| #endif |
| |
| /* ---------------------------------------------------------------------------------------------- */ |
| |
| /** |
| * \addtogroup DEBUG_SETTINGS |
| * |
| * \{ |
| */ |
| /* ---------------------------------- OS related configuration ---------------------------------- */ |
| |
| /** |
| * \brief Monitor OS heap allocations |
| * |
| * \bsp_default_note{\bsp_config_option_app,} |
| */ |
| #ifndef dg_configTRACK_OS_HEAP |
| #define dg_configTRACK_OS_HEAP (0) |
| #endif |
| |
| /* ---------------------------------------------------------------------------------------------- */ |
| |
| /** |
| * \} |
| */ |
| |
| /* ---------------------------------- Heap size configuration ----------------------------------- */ |
| |
| /** |
| * \brief Heap size for used libc malloc() |
| * |
| * Specifies the amount of RAM that will be used as heap for libc malloc() function. |
| * It can be configured in bare metal projects to match application's requirements. |
| * |
| * \bsp_default_note{\bsp_config_option_app, \bsp_config_option_expert_only} |
| */ |
| #ifndef __HEAP_SIZE |
| # if defined (CONFIG_RETARGET) || defined (CONFIG_RTT) |
| # define __HEAP_SIZE 0x0600 |
| # else |
| # define __HEAP_SIZE 0x0100 |
| # endif |
| #endif |
| |
| /* flag used by linker scripts */ |
| #if (dg_configBLACK_ORCA_IC_REV != BLACK_ORCA_IC_REV_A) |
| #define __HEAP_IS_LESS_THAN_0x200 (__HEAP_SIZE < 0x200) |
| #endif |
| |
| /* ---------------------------------------------------------------------------------------------- */ |
| |
| /* --------------------------------- Stack size configuration ----------------------------------- */ |
| |
| /** |
| * \brief Stack size for main() function and interrupt handlers. |
| * |
| * Specifies the amount of RAM that will be used as stack for the main() function and the interrupt |
| * handlers. |
| * |
| * \bsp_default_note{\bsp_config_option_app, \bsp_config_option_expert_only} |
| */ |
| #ifndef __STACK_SIZE |
| #define __STACK_SIZE 0x0200 |
| #endif |
| |
| /* ---------------------------------------------------------------------------------------------- */ |
| |
| /* ----------------------------------- RF FEM CONFIGURATION ------------------------------------- */ |
| |
| #include "bsp_fem.h" |
| |
| /* ---------------------------------------------------------------------------------------------- */ |
| |
| |
| /* ----------------------------------- DEBUG CONFIGURATION -------------------------------------- */ |
| |
| #include "bsp_debug.h" |
| |
| /* ---------------------------------------------------------------------------------------------- */ |
| |
| |
| |
| #endif /* BSP_DEFAULTS_H_ */ |
| |
| /** |
| \} |
| \} |
| \} |
| */ |