The official Mbed 2 C/C++ SDK provides the software platform and libraries to build your applications.
Dependents: hello SerialTestv11 SerialTestv12 Sierpinski ... more
mbed 2
This is the mbed 2 library. If you'd like to learn about Mbed OS please see the mbed-os docs.
TARGET_EFM32HG_STK3400/TOOLCHAIN_ARM_MICRO/em_lesense.h@171:3a7713b1edbc, 2018-11-08 (annotated)
- Committer:
- AnnaBridge
- Date:
- Thu Nov 08 11:45:42 2018 +0000
- Revision:
- 171:3a7713b1edbc
- Parent:
- TARGET_EFM32GG_STK3700/TARGET_Silicon_Labs/TARGET_EFM32/emlib/inc/em_lesense.h@160:5571c4ff569f
mbed library. Release version 164
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
AnnaBridge | 156:ff21514d8981 | 1 | /***************************************************************************//** |
AnnaBridge | 156:ff21514d8981 | 2 | * @file em_lesense.h |
AnnaBridge | 156:ff21514d8981 | 3 | * @brief Low Energy Sensor (LESENSE) peripheral API |
Anna Bridge |
160:5571c4ff569f | 4 | * @version 5.3.3 |
AnnaBridge | 156:ff21514d8981 | 5 | ******************************************************************************* |
Anna Bridge |
160:5571c4ff569f | 6 | * # License |
AnnaBridge | 156:ff21514d8981 | 7 | * <b>Copyright 2016 Silicon Laboratories, Inc. http://www.silabs.com</b> |
AnnaBridge | 156:ff21514d8981 | 8 | ******************************************************************************* |
AnnaBridge | 156:ff21514d8981 | 9 | * |
AnnaBridge | 156:ff21514d8981 | 10 | * Permission is granted to anyone to use this software for any purpose, |
AnnaBridge | 156:ff21514d8981 | 11 | * including commercial applications, and to alter it and redistribute it |
AnnaBridge | 156:ff21514d8981 | 12 | * freely, subject to the following restrictions: |
AnnaBridge | 156:ff21514d8981 | 13 | * |
AnnaBridge | 156:ff21514d8981 | 14 | * 1. The origin of this software must not be misrepresented; you must not |
AnnaBridge | 156:ff21514d8981 | 15 | * claim that you wrote the original software. |
AnnaBridge | 156:ff21514d8981 | 16 | * 2. Altered source versions must be plainly marked as such, and must not be |
AnnaBridge | 156:ff21514d8981 | 17 | * misrepresented as being the original software. |
AnnaBridge | 156:ff21514d8981 | 18 | * 3. This notice may not be removed or altered from any source distribution. |
AnnaBridge | 156:ff21514d8981 | 19 | * |
AnnaBridge | 156:ff21514d8981 | 20 | * DISCLAIMER OF WARRANTY/LIMITATION OF REMEDIES: Silicon Labs has no |
AnnaBridge | 156:ff21514d8981 | 21 | * obligation to support this Software. Silicon Labs is providing the |
AnnaBridge | 156:ff21514d8981 | 22 | * Software "AS IS", with no express or implied warranties of any kind, |
AnnaBridge | 156:ff21514d8981 | 23 | * including, but not limited to, any implied warranties of merchantability |
AnnaBridge | 156:ff21514d8981 | 24 | * or fitness for any particular purpose or warranties against infringement |
AnnaBridge | 156:ff21514d8981 | 25 | * of any proprietary rights of a third party. |
AnnaBridge | 156:ff21514d8981 | 26 | * |
AnnaBridge | 156:ff21514d8981 | 27 | * Silicon Labs will not be liable for any consequential, incidental, or |
AnnaBridge | 156:ff21514d8981 | 28 | * special damages, or any other relief, or for any claim by any third party, |
AnnaBridge | 156:ff21514d8981 | 29 | * arising from your use of this Software. |
AnnaBridge | 156:ff21514d8981 | 30 | * |
AnnaBridge | 156:ff21514d8981 | 31 | ******************************************************************************/ |
AnnaBridge | 156:ff21514d8981 | 32 | |
AnnaBridge | 156:ff21514d8981 | 33 | #ifndef EM_LESENSE_H |
AnnaBridge | 156:ff21514d8981 | 34 | #define EM_LESENSE_H |
AnnaBridge | 156:ff21514d8981 | 35 | |
AnnaBridge | 156:ff21514d8981 | 36 | #include "em_device.h" |
AnnaBridge | 156:ff21514d8981 | 37 | |
AnnaBridge | 156:ff21514d8981 | 38 | #if defined(LESENSE_COUNT) && (LESENSE_COUNT > 0) |
AnnaBridge | 156:ff21514d8981 | 39 | #include <stdint.h> |
AnnaBridge | 156:ff21514d8981 | 40 | #include <stdbool.h> |
AnnaBridge | 156:ff21514d8981 | 41 | |
AnnaBridge | 156:ff21514d8981 | 42 | #ifdef __cplusplus |
AnnaBridge | 156:ff21514d8981 | 43 | extern "C" { |
AnnaBridge | 156:ff21514d8981 | 44 | #endif |
AnnaBridge | 156:ff21514d8981 | 45 | |
AnnaBridge | 156:ff21514d8981 | 46 | /***************************************************************************//** |
AnnaBridge | 156:ff21514d8981 | 47 | * @addtogroup emlib |
AnnaBridge | 156:ff21514d8981 | 48 | * @{ |
AnnaBridge | 156:ff21514d8981 | 49 | ******************************************************************************/ |
AnnaBridge | 156:ff21514d8981 | 50 | |
AnnaBridge | 156:ff21514d8981 | 51 | /***************************************************************************//** |
AnnaBridge | 156:ff21514d8981 | 52 | * @addtogroup LESENSE |
AnnaBridge | 156:ff21514d8981 | 53 | * @{ |
AnnaBridge | 156:ff21514d8981 | 54 | ******************************************************************************/ |
AnnaBridge | 156:ff21514d8981 | 55 | |
AnnaBridge | 156:ff21514d8981 | 56 | /** Number of decoder states supported by current device. */ |
AnnaBridge | 156:ff21514d8981 | 57 | #define LESENSE_NUM_DECODER_STATES (_LESENSE_DECSTATE_DECSTATE_MASK + 1) |
AnnaBridge | 156:ff21514d8981 | 58 | |
AnnaBridge | 156:ff21514d8981 | 59 | /** Number of LESENSE channels. */ |
AnnaBridge | 156:ff21514d8981 | 60 | #define LESENSE_NUM_CHANNELS 16 |
AnnaBridge | 156:ff21514d8981 | 61 | |
AnnaBridge | 156:ff21514d8981 | 62 | /******************************************************************************* |
AnnaBridge | 156:ff21514d8981 | 63 | ******************************** ENUMS ************************************ |
AnnaBridge | 156:ff21514d8981 | 64 | ******************************************************************************/ |
AnnaBridge | 156:ff21514d8981 | 65 | |
AnnaBridge | 156:ff21514d8981 | 66 | /** Clock divisors for controlling the prescaling factor of the period |
AnnaBridge | 156:ff21514d8981 | 67 | * counter. |
AnnaBridge | 156:ff21514d8981 | 68 | * Note: these enumeration values are being used for different clock division |
AnnaBridge | 156:ff21514d8981 | 69 | * related configuration parameters (hfPresc, lfPresc, pcPresc). */ |
Anna Bridge |
160:5571c4ff569f | 70 | typedef enum { |
AnnaBridge | 156:ff21514d8981 | 71 | lesenseClkDiv_1 = 0, /**< Divide clock by 1. */ |
AnnaBridge | 156:ff21514d8981 | 72 | lesenseClkDiv_2 = 1, /**< Divide clock by 2. */ |
AnnaBridge | 156:ff21514d8981 | 73 | lesenseClkDiv_4 = 2, /**< Divide clock by 4. */ |
AnnaBridge | 156:ff21514d8981 | 74 | lesenseClkDiv_8 = 3, /**< Divide clock by 8. */ |
AnnaBridge | 156:ff21514d8981 | 75 | lesenseClkDiv_16 = 4, /**< Divide clock by 16. */ |
AnnaBridge | 156:ff21514d8981 | 76 | lesenseClkDiv_32 = 5, /**< Divide clock by 32. */ |
AnnaBridge | 156:ff21514d8981 | 77 | lesenseClkDiv_64 = 6, /**< Divide clock by 64. */ |
AnnaBridge | 156:ff21514d8981 | 78 | lesenseClkDiv_128 = 7 /**< Divide clock by 128. */ |
AnnaBridge | 156:ff21514d8981 | 79 | } LESENSE_ClkPresc_TypeDef; |
AnnaBridge | 156:ff21514d8981 | 80 | |
AnnaBridge | 156:ff21514d8981 | 81 | /** Scan modes. */ |
Anna Bridge |
160:5571c4ff569f | 82 | typedef enum { |
AnnaBridge | 156:ff21514d8981 | 83 | /** New scan is started each time the period counter overflows. */ |
AnnaBridge | 156:ff21514d8981 | 84 | lesenseScanStartPeriodic = LESENSE_CTRL_SCANMODE_PERIODIC, |
AnnaBridge | 156:ff21514d8981 | 85 | |
AnnaBridge | 156:ff21514d8981 | 86 | /** Single scan is performed when LESENSE_ScanStart() is called. */ |
AnnaBridge | 156:ff21514d8981 | 87 | lesenseScanStartOneShot = LESENSE_CTRL_SCANMODE_ONESHOT, |
AnnaBridge | 156:ff21514d8981 | 88 | |
AnnaBridge | 156:ff21514d8981 | 89 | /** New scan is triggered by pulse on PRS channel. */ |
AnnaBridge | 156:ff21514d8981 | 90 | lesenseScanStartPRS = LESENSE_CTRL_SCANMODE_PRS |
AnnaBridge | 156:ff21514d8981 | 91 | } LESENSE_ScanMode_TypeDef; |
AnnaBridge | 156:ff21514d8981 | 92 | |
AnnaBridge | 156:ff21514d8981 | 93 | /** PRS sources. |
AnnaBridge | 156:ff21514d8981 | 94 | * Note: these enumeration values are being used for different PRS related |
AnnaBridge | 156:ff21514d8981 | 95 | * configuration parameters. */ |
Anna Bridge |
160:5571c4ff569f | 96 | typedef enum { |
AnnaBridge | 156:ff21514d8981 | 97 | lesensePRSCh0 = 0, /**< PRS channel 0. */ |
AnnaBridge | 156:ff21514d8981 | 98 | lesensePRSCh1 = 1, /**< PRS channel 1. */ |
AnnaBridge | 156:ff21514d8981 | 99 | lesensePRSCh2 = 2, /**< PRS channel 2. */ |
AnnaBridge | 156:ff21514d8981 | 100 | lesensePRSCh3 = 3, /**< PRS channel 3. */ |
Anna Bridge |
160:5571c4ff569f | 101 | #if defined(LESENSE_CTRL_PRSSEL_PRSCH4) |
AnnaBridge | 156:ff21514d8981 | 102 | lesensePRSCh4 = 4, /**< PRS channel 4. */ |
AnnaBridge | 156:ff21514d8981 | 103 | #endif |
Anna Bridge |
160:5571c4ff569f | 104 | #if defined(LESENSE_CTRL_PRSSEL_PRSCH5) |
AnnaBridge | 156:ff21514d8981 | 105 | lesensePRSCh5 = 5, /**< PRS channel 5. */ |
AnnaBridge | 156:ff21514d8981 | 106 | #endif |
Anna Bridge |
160:5571c4ff569f | 107 | #if defined(LESENSE_CTRL_PRSSEL_PRSCH6) |
AnnaBridge | 156:ff21514d8981 | 108 | lesensePRSCh6 = 6, /**< PRS channel 6. */ |
AnnaBridge | 156:ff21514d8981 | 109 | #endif |
Anna Bridge |
160:5571c4ff569f | 110 | #if defined(LESENSE_CTRL_PRSSEL_PRSCH7) |
AnnaBridge | 156:ff21514d8981 | 111 | lesensePRSCh7 = 7, /**< PRS channel 7. */ |
AnnaBridge | 156:ff21514d8981 | 112 | #endif |
Anna Bridge |
160:5571c4ff569f | 113 | #if defined(LESENSE_CTRL_PRSSEL_PRSCH8) |
AnnaBridge | 156:ff21514d8981 | 114 | lesensePRSCh8 = 8, /**< PRS channel 8. */ |
AnnaBridge | 156:ff21514d8981 | 115 | #endif |
Anna Bridge |
160:5571c4ff569f | 116 | #if defined(LESENSE_CTRL_PRSSEL_PRSCH9) |
AnnaBridge | 156:ff21514d8981 | 117 | lesensePRSCh9 = 9, /**< PRS channel 9. */ |
AnnaBridge | 156:ff21514d8981 | 118 | #endif |
Anna Bridge |
160:5571c4ff569f | 119 | #if defined(LESENSE_CTRL_PRSSEL_PRSCH10) |
AnnaBridge | 156:ff21514d8981 | 120 | lesensePRSCh10 = 10, /**< PRS channel 10.*/ |
AnnaBridge | 156:ff21514d8981 | 121 | #endif |
Anna Bridge |
160:5571c4ff569f | 122 | #if defined(LESENSE_CTRL_PRSSEL_PRSCH11) |
AnnaBridge | 156:ff21514d8981 | 123 | lesensePRSCh11 = 11, /**< PRS channel 11.*/ |
AnnaBridge | 156:ff21514d8981 | 124 | #endif |
AnnaBridge | 156:ff21514d8981 | 125 | } LESENSE_PRSSel_TypeDef; |
AnnaBridge | 156:ff21514d8981 | 126 | |
AnnaBridge | 156:ff21514d8981 | 127 | /** Locations of the alternate excitation function. */ |
Anna Bridge |
160:5571c4ff569f | 128 | typedef enum { |
AnnaBridge | 156:ff21514d8981 | 129 | /** Alternate excitation is mapped to the LES_ALTEX pins. */ |
AnnaBridge | 156:ff21514d8981 | 130 | lesenseAltExMapALTEX = _LESENSE_CTRL_ALTEXMAP_ALTEX, |
AnnaBridge | 156:ff21514d8981 | 131 | |
AnnaBridge | 156:ff21514d8981 | 132 | #if defined(_LESENSE_CTRL_ALTEXMAP_ACMP) |
AnnaBridge | 156:ff21514d8981 | 133 | /** Alternate excitation is mapped to the pins of the other ACMP. */ |
AnnaBridge | 156:ff21514d8981 | 134 | lesenseAltExMapACMP = _LESENSE_CTRL_ALTEXMAP_ACMP, |
AnnaBridge | 156:ff21514d8981 | 135 | #endif |
AnnaBridge | 156:ff21514d8981 | 136 | |
AnnaBridge | 156:ff21514d8981 | 137 | #if defined(_LESENSE_CTRL_ALTEXMAP_CH) |
AnnaBridge | 156:ff21514d8981 | 138 | /** Alternative excitation is mapped to the pin of LESENSE channel |
AnnaBridge | 156:ff21514d8981 | 139 | * (X+8 mod 16), X being the active channel. */ |
AnnaBridge | 156:ff21514d8981 | 140 | lesenseAltExMapCH = _LESENSE_CTRL_ALTEXMAP_CH, |
AnnaBridge | 156:ff21514d8981 | 141 | #endif |
AnnaBridge | 156:ff21514d8981 | 142 | } LESENSE_AltExMap_TypeDef; |
AnnaBridge | 156:ff21514d8981 | 143 | |
AnnaBridge | 156:ff21514d8981 | 144 | /** Result buffer interrupt and DMA trigger levels. */ |
Anna Bridge |
160:5571c4ff569f | 145 | typedef enum { |
AnnaBridge | 156:ff21514d8981 | 146 | /** DMA and interrupt flags are set when result buffer is halffull. */ |
AnnaBridge | 156:ff21514d8981 | 147 | lesenseBufTrigHalf = LESENSE_CTRL_BUFIDL_HALFFULL, |
AnnaBridge | 156:ff21514d8981 | 148 | |
AnnaBridge | 156:ff21514d8981 | 149 | /** DMA and interrupt flags set when result buffer is full. */ |
AnnaBridge | 156:ff21514d8981 | 150 | lesenseBufTrigFull = LESENSE_CTRL_BUFIDL_FULL |
AnnaBridge | 156:ff21514d8981 | 151 | } LESENSE_BufTrigLevel_TypeDef; |
AnnaBridge | 156:ff21514d8981 | 152 | |
AnnaBridge | 156:ff21514d8981 | 153 | /** Modes of operation for DMA wakeup from EM2. */ |
Anna Bridge |
160:5571c4ff569f | 154 | typedef enum { |
AnnaBridge | 156:ff21514d8981 | 155 | /** No DMA wakeup from EM2. */ |
AnnaBridge | 156:ff21514d8981 | 156 | lesenseDMAWakeUpDisable = LESENSE_CTRL_DMAWU_DISABLE, |
AnnaBridge | 156:ff21514d8981 | 157 | |
AnnaBridge | 156:ff21514d8981 | 158 | /** DMA wakeup from EM2 when data is valid in the result buffer. */ |
AnnaBridge | 156:ff21514d8981 | 159 | lesenseDMAWakeUpBufValid = LESENSE_CTRL_DMAWU_BUFDATAV, |
AnnaBridge | 156:ff21514d8981 | 160 | |
AnnaBridge | 156:ff21514d8981 | 161 | /** DMA wakeup from EM2 when the resultbuffer is full/halffull, depending on |
AnnaBridge | 156:ff21514d8981 | 162 | * RESBIDL configuration in LESENSE_CTRL register (selected by |
AnnaBridge | 156:ff21514d8981 | 163 | * resBufTrigLevel in LESENSE_ResBufTrigLevel_TypeDef descriptor structure). */ |
AnnaBridge | 156:ff21514d8981 | 164 | lesenseDMAWakeUpBufLevel = LESENSE_CTRL_DMAWU_BUFLEVEL |
AnnaBridge | 156:ff21514d8981 | 165 | } LESENSE_DMAWakeUp_TypeDef; |
AnnaBridge | 156:ff21514d8981 | 166 | |
AnnaBridge | 156:ff21514d8981 | 167 | /** Bias modes. */ |
Anna Bridge |
160:5571c4ff569f | 168 | typedef enum { |
AnnaBridge | 156:ff21514d8981 | 169 | /** Duty cycle bias module between low power and high accuracy mode. */ |
AnnaBridge | 156:ff21514d8981 | 170 | lesenseBiasModeDutyCycle = LESENSE_BIASCTRL_BIASMODE_DUTYCYCLE, |
AnnaBridge | 156:ff21514d8981 | 171 | |
AnnaBridge | 156:ff21514d8981 | 172 | /** Bias module is always in high accuracy mode. */ |
AnnaBridge | 156:ff21514d8981 | 173 | lesenseBiasModeHighAcc = LESENSE_BIASCTRL_BIASMODE_HIGHACC, |
AnnaBridge | 156:ff21514d8981 | 174 | |
AnnaBridge | 156:ff21514d8981 | 175 | /** Bias module is controlled by the EMU and not affected by LESENSE. */ |
AnnaBridge | 156:ff21514d8981 | 176 | lesenseBiasModeDontTouch = LESENSE_BIASCTRL_BIASMODE_DONTTOUCH |
AnnaBridge | 156:ff21514d8981 | 177 | } LESENSE_BiasMode_TypeDef; |
AnnaBridge | 156:ff21514d8981 | 178 | |
AnnaBridge | 156:ff21514d8981 | 179 | /** Scan configuration. */ |
Anna Bridge |
160:5571c4ff569f | 180 | typedef enum { |
AnnaBridge | 156:ff21514d8981 | 181 | /** The channel configuration registers (CHx_CONF) used are directly mapped to |
AnnaBridge | 156:ff21514d8981 | 182 | * the channel number. */ |
AnnaBridge | 156:ff21514d8981 | 183 | lesenseScanConfDirMap = LESENSE_CTRL_SCANCONF_DIRMAP, |
AnnaBridge | 156:ff21514d8981 | 184 | |
AnnaBridge | 156:ff21514d8981 | 185 | /** The channel configuration registers used are CHx+8_CONF for channels 0-7 |
AnnaBridge | 156:ff21514d8981 | 186 | * and CHx-8_CONF for channels 8-15. */ |
AnnaBridge | 156:ff21514d8981 | 187 | lesenseScanConfInvMap = LESENSE_CTRL_SCANCONF_INVMAP, |
AnnaBridge | 156:ff21514d8981 | 188 | |
AnnaBridge | 156:ff21514d8981 | 189 | /** The channel configuration registers used toggles between CHX_SCANCONF and |
AnnaBridge | 156:ff21514d8981 | 190 | * CHX+8_SCANCONF when channel x triggers. */ |
AnnaBridge | 156:ff21514d8981 | 191 | lesenseScanConfToggle = LESENSE_CTRL_SCANCONF_TOGGLE, |
AnnaBridge | 156:ff21514d8981 | 192 | |
AnnaBridge | 156:ff21514d8981 | 193 | /** The decoder state defines the channel configuration register (CHx_CONF) to |
AnnaBridge | 156:ff21514d8981 | 194 | * be used. */ |
AnnaBridge | 156:ff21514d8981 | 195 | lesenseScanConfDecDef = LESENSE_CTRL_SCANCONF_DECDEF |
AnnaBridge | 156:ff21514d8981 | 196 | } LESENSE_ScanConfSel_TypeDef; |
AnnaBridge | 156:ff21514d8981 | 197 | |
AnnaBridge | 156:ff21514d8981 | 198 | /** DAC CHx data control configuration. */ |
Anna Bridge |
160:5571c4ff569f | 199 | typedef enum { |
AnnaBridge | 156:ff21514d8981 | 200 | /** DAC channel x data is defined by DAC_CHxDATA register. |
AnnaBridge | 156:ff21514d8981 | 201 | * Note: this value could be used for both DAC Ch0 and Ch1. */ |
AnnaBridge | 156:ff21514d8981 | 202 | lesenseDACIfData = _LESENSE_PERCTRL_DACCH0DATA_DACDATA, |
AnnaBridge | 156:ff21514d8981 | 203 | |
AnnaBridge | 156:ff21514d8981 | 204 | #if defined(_LESENSE_PERCTRL_DACCH0DATA_ACMPTHRES) |
AnnaBridge | 156:ff21514d8981 | 205 | /** DAC channel x data is defined by ACMPTHRES in LESENSE_CHx_INTERACT. |
AnnaBridge | 156:ff21514d8981 | 206 | * Note: this value could be used for both DAC Ch0 and Ch1. */ |
AnnaBridge | 156:ff21514d8981 | 207 | lesenseACMPThres = _LESENSE_PERCTRL_DACCH0DATA_ACMPTHRES, |
AnnaBridge | 156:ff21514d8981 | 208 | #endif |
AnnaBridge | 156:ff21514d8981 | 209 | |
AnnaBridge | 156:ff21514d8981 | 210 | #if defined(_LESENSE_PERCTRL_DACCH0DATA_THRES) |
AnnaBridge | 156:ff21514d8981 | 211 | /** DAC channel x data is defined by THRES in LESENSE_CHx_INTERACT. |
AnnaBridge | 156:ff21514d8981 | 212 | * Note: this value could be used for both DAC Ch0 and Ch1. */ |
AnnaBridge | 156:ff21514d8981 | 213 | lesenseThres = _LESENSE_PERCTRL_DACCH0DATA_THRES, |
AnnaBridge | 156:ff21514d8981 | 214 | #endif |
AnnaBridge | 156:ff21514d8981 | 215 | } LESENSE_ControlDACData_TypeDef; |
AnnaBridge | 156:ff21514d8981 | 216 | |
AnnaBridge | 156:ff21514d8981 | 217 | #if defined(_LESENSE_PERCTRL_DACCH0CONV_MASK) |
AnnaBridge | 156:ff21514d8981 | 218 | /** DAC channel x conversion mode configuration. */ |
Anna Bridge |
160:5571c4ff569f | 219 | typedef enum { |
AnnaBridge | 156:ff21514d8981 | 220 | /** LESENSE doesn't control DAC channel x. |
AnnaBridge | 156:ff21514d8981 | 221 | * Note: this value could be used for both DAC Ch0 and Ch1. */ |
AnnaBridge | 156:ff21514d8981 | 222 | lesenseDACConvModeDisable = _LESENSE_PERCTRL_DACCH0CONV_DISABLE, |
AnnaBridge | 156:ff21514d8981 | 223 | |
AnnaBridge | 156:ff21514d8981 | 224 | /** DAC channel x is driven in continuous mode. |
AnnaBridge | 156:ff21514d8981 | 225 | * Note: this value could be used for both DAC Ch0 and Ch1. */ |
AnnaBridge | 156:ff21514d8981 | 226 | lesenseDACConvModeContinuous = _LESENSE_PERCTRL_DACCH0CONV_CONTINUOUS, |
AnnaBridge | 156:ff21514d8981 | 227 | |
AnnaBridge | 156:ff21514d8981 | 228 | /** DAC channel x is driven in sample hold mode. |
AnnaBridge | 156:ff21514d8981 | 229 | * Note: this value could be used for both DAC Ch0 and Ch1. */ |
AnnaBridge | 156:ff21514d8981 | 230 | lesenseDACConvModeSampleHold = _LESENSE_PERCTRL_DACCH0CONV_SAMPLEHOLD, |
AnnaBridge | 156:ff21514d8981 | 231 | |
AnnaBridge | 156:ff21514d8981 | 232 | /** DAC channel x is driven in sample off mode. |
AnnaBridge | 156:ff21514d8981 | 233 | * Note: this value could be used for both DAC Ch0 and Ch1. */ |
AnnaBridge | 156:ff21514d8981 | 234 | lesenseDACConvModeSampleOff = _LESENSE_PERCTRL_DACCH0CONV_SAMPLEOFF |
AnnaBridge | 156:ff21514d8981 | 235 | } LESENSE_ControlDACConv_TypeDef; |
AnnaBridge | 156:ff21514d8981 | 236 | #endif |
AnnaBridge | 156:ff21514d8981 | 237 | |
AnnaBridge | 156:ff21514d8981 | 238 | #if defined(_LESENSE_PERCTRL_DACCH0OUT_MASK) |
AnnaBridge | 156:ff21514d8981 | 239 | /** DAC channel x output mode configuration. */ |
Anna Bridge |
160:5571c4ff569f | 240 | typedef enum { |
AnnaBridge | 156:ff21514d8981 | 241 | /** DAC CHx output to pin and ACMP/ADC disabled. |
AnnaBridge | 156:ff21514d8981 | 242 | * Note: this value could be used for both DAC Ch0 and Ch1. */ |
AnnaBridge | 156:ff21514d8981 | 243 | lesenseDACOutModeDisable = _LESENSE_PERCTRL_DACCH0OUT_DISABLE, |
AnnaBridge | 156:ff21514d8981 | 244 | |
AnnaBridge | 156:ff21514d8981 | 245 | /** DAC CHx output to pin enabled, output to ADC and ACMP disabled. |
AnnaBridge | 156:ff21514d8981 | 246 | * Note: this value could be used for both DAC Ch0 and Ch1. */ |
AnnaBridge | 156:ff21514d8981 | 247 | lesenseDACOutModePin = _LESENSE_PERCTRL_DACCH0OUT_PIN, |
AnnaBridge | 156:ff21514d8981 | 248 | |
AnnaBridge | 156:ff21514d8981 | 249 | /** DAC CHx output to pin disabled, output to ADC and ACMP enabled. |
AnnaBridge | 156:ff21514d8981 | 250 | * Note: this value could be used for both DAC Ch0 and Ch1. */ |
AnnaBridge | 156:ff21514d8981 | 251 | lesenseDACOutModeADCACMP = _LESENSE_PERCTRL_DACCH0OUT_ADCACMP, |
AnnaBridge | 156:ff21514d8981 | 252 | |
AnnaBridge | 156:ff21514d8981 | 253 | /** DAC CHx output to pin, ADC, and ACMP enabled. |
AnnaBridge | 156:ff21514d8981 | 254 | * Note: this value could be used for both DAC Ch0 and Ch1. */ |
AnnaBridge | 156:ff21514d8981 | 255 | lesenseDACOutModePinADCACMP = _LESENSE_PERCTRL_DACCH0OUT_PINADCACMP |
AnnaBridge | 156:ff21514d8981 | 256 | } LESENSE_ControlDACOut_TypeDef; |
AnnaBridge | 156:ff21514d8981 | 257 | #endif |
AnnaBridge | 156:ff21514d8981 | 258 | |
AnnaBridge | 156:ff21514d8981 | 259 | #if defined(_LESENSE_PERCTRL_DACREF_MASK) |
AnnaBridge | 156:ff21514d8981 | 260 | /** DAC reference configuration. */ |
Anna Bridge |
160:5571c4ff569f | 261 | typedef enum { |
AnnaBridge | 156:ff21514d8981 | 262 | /** DAC uses VDD reference. */ |
AnnaBridge | 156:ff21514d8981 | 263 | lesenseDACRefVdd = LESENSE_PERCTRL_DACREF_VDD, |
AnnaBridge | 156:ff21514d8981 | 264 | |
AnnaBridge | 156:ff21514d8981 | 265 | /** DAC uses bandgap reference. */ |
AnnaBridge | 156:ff21514d8981 | 266 | lesenseDACRefBandGap = LESENSE_PERCTRL_DACREF_BANDGAP |
AnnaBridge | 156:ff21514d8981 | 267 | } LESENSE_DACRef_TypeDef; |
AnnaBridge | 156:ff21514d8981 | 268 | #endif |
AnnaBridge | 156:ff21514d8981 | 269 | |
AnnaBridge | 156:ff21514d8981 | 270 | /** ACMPx control configuration. */ |
Anna Bridge |
160:5571c4ff569f | 271 | typedef enum { |
AnnaBridge | 156:ff21514d8981 | 272 | /** LESENSE does not control the ACMPx. |
AnnaBridge | 156:ff21514d8981 | 273 | * Note: this value could be used for both ACMP0 and ACMP1. */ |
AnnaBridge | 156:ff21514d8981 | 274 | lesenseACMPModeDisable = _LESENSE_PERCTRL_ACMP0MODE_DISABLE, |
AnnaBridge | 156:ff21514d8981 | 275 | |
AnnaBridge | 156:ff21514d8981 | 276 | /** LESENSE controls the input mux of ACMPx. |
AnnaBridge | 156:ff21514d8981 | 277 | * Note: this value could be used for both ACMP0 and ACMP1. */ |
AnnaBridge | 156:ff21514d8981 | 278 | lesenseACMPModeMux = _LESENSE_PERCTRL_ACMP0MODE_MUX, |
AnnaBridge | 156:ff21514d8981 | 279 | |
AnnaBridge | 156:ff21514d8981 | 280 | /** LESENSE controls the input mux of and the threshold value of ACMPx. |
AnnaBridge | 156:ff21514d8981 | 281 | * Note: this value could be used for both ACMP0 and ACMP1. */ |
AnnaBridge | 156:ff21514d8981 | 282 | lesenseACMPModeMuxThres = _LESENSE_PERCTRL_ACMP0MODE_MUXTHRES |
AnnaBridge | 156:ff21514d8981 | 283 | } LESENSE_ControlACMP_TypeDef; |
AnnaBridge | 156:ff21514d8981 | 284 | |
AnnaBridge | 156:ff21514d8981 | 285 | /** Warm up modes. ACMP and DAC duty cycle mode configuration. */ |
Anna Bridge |
160:5571c4ff569f | 286 | typedef enum { |
AnnaBridge | 156:ff21514d8981 | 287 | /** ACMPs and DACs are shut down when LESENSE is idle. */ |
AnnaBridge | 156:ff21514d8981 | 288 | lesenseWarmupModeNormal = LESENSE_PERCTRL_WARMUPMODE_NORMAL, |
AnnaBridge | 156:ff21514d8981 | 289 | |
AnnaBridge | 156:ff21514d8981 | 290 | /** ACMPs are kept powered up when LESENSE is idle. */ |
AnnaBridge | 156:ff21514d8981 | 291 | lesenseWarmupModeACMP = LESENSE_PERCTRL_WARMUPMODE_KEEPACMPWARM, |
AnnaBridge | 156:ff21514d8981 | 292 | |
AnnaBridge | 156:ff21514d8981 | 293 | /** The DAC is kept powered up when LESENSE is idle. */ |
AnnaBridge | 156:ff21514d8981 | 294 | lesenseWarmupModeDAC = LESENSE_PERCTRL_WARMUPMODE_KEEPDACWARM, |
AnnaBridge | 156:ff21514d8981 | 295 | |
AnnaBridge | 156:ff21514d8981 | 296 | /** ACMPs and the DAC are kept powered up when LESENSE is idle. */ |
AnnaBridge | 156:ff21514d8981 | 297 | lesenseWarmupModeKeepWarm = LESENSE_PERCTRL_WARMUPMODE_KEEPACMPDACWARM |
AnnaBridge | 156:ff21514d8981 | 298 | } LESENSE_WarmupMode_TypeDef; |
AnnaBridge | 156:ff21514d8981 | 299 | |
AnnaBridge | 156:ff21514d8981 | 300 | /** Decoder input source configuration. */ |
Anna Bridge |
160:5571c4ff569f | 301 | typedef enum { |
AnnaBridge | 156:ff21514d8981 | 302 | /** The SENSORSTATE register is used as input to the decoder. */ |
AnnaBridge | 156:ff21514d8981 | 303 | lesenseDecInputSensorSt = LESENSE_DECCTRL_INPUT_SENSORSTATE, |
AnnaBridge | 156:ff21514d8981 | 304 | |
AnnaBridge | 156:ff21514d8981 | 305 | /** PRS channels are used as input to the decoder. */ |
AnnaBridge | 156:ff21514d8981 | 306 | lesenseDecInputPRS = LESENSE_DECCTRL_INPUT_PRS |
AnnaBridge | 156:ff21514d8981 | 307 | } LESENSE_DecInput_TypeDef; |
AnnaBridge | 156:ff21514d8981 | 308 | |
AnnaBridge | 156:ff21514d8981 | 309 | /** Compare source selection for sensor sampling. */ |
Anna Bridge |
160:5571c4ff569f | 310 | typedef enum { |
AnnaBridge | 156:ff21514d8981 | 311 | /** Counter output will be used in comparison. */ |
AnnaBridge | 156:ff21514d8981 | 312 | lesenseSampleModeCounter = 0x0 << _LESENSE_CH_INTERACT_SAMPLE_SHIFT, |
AnnaBridge | 156:ff21514d8981 | 313 | |
Anna Bridge |
160:5571c4ff569f | 314 | /** ACMP output will be used in comparison. */ |
Anna Bridge |
160:5571c4ff569f | 315 | lesenseSampleModeACMP = LESENSE_CH_INTERACT_SAMPLE_ACMP, |
AnnaBridge | 156:ff21514d8981 | 316 | |
AnnaBridge | 156:ff21514d8981 | 317 | #if defined(LESENSE_CH_INTERACT_SAMPLE_ADC) |
AnnaBridge | 156:ff21514d8981 | 318 | /** ADC output will be used in comparison. */ |
AnnaBridge | 156:ff21514d8981 | 319 | lesenseSampleModeADC = LESENSE_CH_INTERACT_SAMPLE_ADC, |
AnnaBridge | 156:ff21514d8981 | 320 | |
AnnaBridge | 156:ff21514d8981 | 321 | /** Differential ADC output will be used in comparison. */ |
AnnaBridge | 156:ff21514d8981 | 322 | lesenseSampleModeADCDiff = LESENSE_CH_INTERACT_SAMPLE_ADCDIFF, |
AnnaBridge | 156:ff21514d8981 | 323 | #endif |
AnnaBridge | 156:ff21514d8981 | 324 | } LESENSE_ChSampleMode_TypeDef; |
AnnaBridge | 156:ff21514d8981 | 325 | |
AnnaBridge | 156:ff21514d8981 | 326 | /** Interrupt generation setup for CHx interrupt flag. */ |
Anna Bridge |
160:5571c4ff569f | 327 | typedef enum { |
AnnaBridge | 156:ff21514d8981 | 328 | /** No interrupt is generated. */ |
AnnaBridge | 156:ff21514d8981 | 329 | lesenseSetIntNone = LESENSE_CH_INTERACT_SETIF_NONE, |
AnnaBridge | 156:ff21514d8981 | 330 | |
AnnaBridge | 156:ff21514d8981 | 331 | /** Set interrupt flag if the sensor triggers. */ |
AnnaBridge | 156:ff21514d8981 | 332 | lesenseSetIntLevel = LESENSE_CH_INTERACT_SETIF_LEVEL, |
AnnaBridge | 156:ff21514d8981 | 333 | |
AnnaBridge | 156:ff21514d8981 | 334 | /** Set interrupt flag on positive edge of the sensor state. */ |
AnnaBridge | 156:ff21514d8981 | 335 | lesenseSetIntPosEdge = LESENSE_CH_INTERACT_SETIF_POSEDGE, |
AnnaBridge | 156:ff21514d8981 | 336 | |
AnnaBridge | 156:ff21514d8981 | 337 | /** Set interrupt flag on negative edge of the sensor state. */ |
AnnaBridge | 156:ff21514d8981 | 338 | lesenseSetIntNegEdge = LESENSE_CH_INTERACT_SETIF_NEGEDGE |
AnnaBridge | 156:ff21514d8981 | 339 | } LESENSE_ChIntMode_TypeDef; |
AnnaBridge | 156:ff21514d8981 | 340 | |
AnnaBridge | 156:ff21514d8981 | 341 | /** Channel pin mode for the excitation phase of the scan sequence. */ |
Anna Bridge |
160:5571c4ff569f | 342 | typedef enum { |
AnnaBridge | 156:ff21514d8981 | 343 | /** Channel pin is disabled. */ |
AnnaBridge | 156:ff21514d8981 | 344 | lesenseChPinExDis = LESENSE_CH_INTERACT_EXMODE_DISABLE, |
AnnaBridge | 156:ff21514d8981 | 345 | |
AnnaBridge | 156:ff21514d8981 | 346 | /** Channel pin is configured as push-pull, driven HIGH. */ |
AnnaBridge | 156:ff21514d8981 | 347 | lesenseChPinExHigh = LESENSE_CH_INTERACT_EXMODE_HIGH, |
AnnaBridge | 156:ff21514d8981 | 348 | |
AnnaBridge | 156:ff21514d8981 | 349 | /** Channel pin is configured as push-pull, driven LOW. */ |
AnnaBridge | 156:ff21514d8981 | 350 | lesenseChPinExLow = LESENSE_CH_INTERACT_EXMODE_LOW, |
AnnaBridge | 156:ff21514d8981 | 351 | |
AnnaBridge | 156:ff21514d8981 | 352 | /** DAC output (only available on channel 0, 1, 2, 3, 12, 13, 14 and 15) */ |
AnnaBridge | 156:ff21514d8981 | 353 | lesenseChPinExDACOut = LESENSE_CH_INTERACT_EXMODE_DACOUT |
AnnaBridge | 156:ff21514d8981 | 354 | } LESENSE_ChPinExMode_TypeDef; |
AnnaBridge | 156:ff21514d8981 | 355 | |
AnnaBridge | 156:ff21514d8981 | 356 | /** Channel pin mode for the idle phase of the scan sequence. */ |
Anna Bridge |
160:5571c4ff569f | 357 | typedef enum { |
AnnaBridge | 156:ff21514d8981 | 358 | /** Channel pin is disabled in idle phase. |
AnnaBridge | 156:ff21514d8981 | 359 | * Note: this value could be used for all channels. */ |
AnnaBridge | 156:ff21514d8981 | 360 | lesenseChPinIdleDis = _LESENSE_IDLECONF_CH0_DISABLE, |
AnnaBridge | 156:ff21514d8981 | 361 | |
AnnaBridge | 156:ff21514d8981 | 362 | /** Channel pin is configured as push-pull, driven HIGH in idle phase. |
AnnaBridge | 156:ff21514d8981 | 363 | * Note: this value could be used for all channels. */ |
AnnaBridge | 156:ff21514d8981 | 364 | lesenseChPinIdleHigh = _LESENSE_IDLECONF_CH0_HIGH, |
AnnaBridge | 156:ff21514d8981 | 365 | |
AnnaBridge | 156:ff21514d8981 | 366 | /** Channel pin is configured as push-pull, driven LOW in idle phase. |
AnnaBridge | 156:ff21514d8981 | 367 | * Note: this value could be used for all channels. */ |
AnnaBridge | 156:ff21514d8981 | 368 | lesenseChPinIdleLow = _LESENSE_IDLECONF_CH0_LOW, |
AnnaBridge | 156:ff21514d8981 | 369 | |
AnnaBridge | 156:ff21514d8981 | 370 | #if defined(_LESENSE_IDLECONF_CH0_DAC) |
AnnaBridge | 156:ff21514d8981 | 371 | /** Channel pin is connected to DAC output in idle phase. |
AnnaBridge | 156:ff21514d8981 | 372 | * Note: this value could be used for all channels. */ |
AnnaBridge | 156:ff21514d8981 | 373 | lesenseChPinIdleDACC = _LESENSE_IDLECONF_CH0_DAC |
AnnaBridge | 156:ff21514d8981 | 374 | #else |
AnnaBridge | 156:ff21514d8981 | 375 | /** Channel pin is connected to DAC CH0 output in idle phase. |
AnnaBridge | 156:ff21514d8981 | 376 | * Note: only applies to channel 0, 1, 2, 3. */ |
AnnaBridge | 156:ff21514d8981 | 377 | lesenseChPinIdleDACCh0 = _LESENSE_IDLECONF_CH0_DACCH0, |
AnnaBridge | 156:ff21514d8981 | 378 | |
AnnaBridge | 156:ff21514d8981 | 379 | /** Channel pin is connected to DAC CH1 output in idle phase. |
AnnaBridge | 156:ff21514d8981 | 380 | * Note: only applies to channel 12, 13, 14, 15. */ |
AnnaBridge | 156:ff21514d8981 | 381 | lesenseChPinIdleDACCh1 = _LESENSE_IDLECONF_CH12_DACCH1, |
AnnaBridge | 156:ff21514d8981 | 382 | #endif |
AnnaBridge | 156:ff21514d8981 | 383 | } LESENSE_ChPinIdleMode_TypeDef; |
AnnaBridge | 156:ff21514d8981 | 384 | |
AnnaBridge | 156:ff21514d8981 | 385 | /** Clock used for excitation and sample delay timing. */ |
Anna Bridge |
160:5571c4ff569f | 386 | typedef enum { |
AnnaBridge | 156:ff21514d8981 | 387 | /** LFACLK (LF clock) is used. */ |
AnnaBridge | 156:ff21514d8981 | 388 | lesenseClkLF = _LESENSE_CH_INTERACT_EXCLK_LFACLK, |
AnnaBridge | 156:ff21514d8981 | 389 | |
AnnaBridge | 156:ff21514d8981 | 390 | /** AUXHFRCO (HF clock) is used. */ |
AnnaBridge | 156:ff21514d8981 | 391 | lesenseClkHF = _LESENSE_CH_INTERACT_EXCLK_AUXHFRCO |
AnnaBridge | 156:ff21514d8981 | 392 | } LESENSE_ChClk_TypeDef; |
AnnaBridge | 156:ff21514d8981 | 393 | |
AnnaBridge | 156:ff21514d8981 | 394 | /** Compare modes for counter comparison. */ |
Anna Bridge |
160:5571c4ff569f | 395 | typedef enum { |
AnnaBridge | 156:ff21514d8981 | 396 | /** Comparison evaluates to 1 if the sensor data is less than the counter |
AnnaBridge | 156:ff21514d8981 | 397 | * threshold, or if the ACMP output is 0. */ |
AnnaBridge | 156:ff21514d8981 | 398 | lesenseCompModeLess = LESENSE_CH_EVAL_COMP_LESS, |
AnnaBridge | 156:ff21514d8981 | 399 | |
AnnaBridge | 156:ff21514d8981 | 400 | /** Comparison evaluates to 1 if the sensor data is greater than, or equal to |
AnnaBridge | 156:ff21514d8981 | 401 | * the counter threshold, or if the ACMP output is 1. */ |
AnnaBridge | 156:ff21514d8981 | 402 | lesenseCompModeGreaterOrEq = LESENSE_CH_EVAL_COMP_GE |
AnnaBridge | 156:ff21514d8981 | 403 | } LESENSE_ChCompMode_TypeDef; |
AnnaBridge | 156:ff21514d8981 | 404 | |
AnnaBridge | 156:ff21514d8981 | 405 | #if defined(_LESENSE_CH_EVAL_MODE_MASK) |
AnnaBridge | 156:ff21514d8981 | 406 | /** Sensor evaluation modes. */ |
Anna Bridge |
160:5571c4ff569f | 407 | typedef enum { |
AnnaBridge | 156:ff21514d8981 | 408 | /** Threshold comparison evaluation mode. In this mode the sensor data |
AnnaBridge | 156:ff21514d8981 | 409 | * is compared to the configured threshold value. Two possible comparison |
AnnaBridge | 156:ff21514d8981 | 410 | * operators can be used on the sensor data, either >= (GE) or < (LT). |
AnnaBridge | 156:ff21514d8981 | 411 | * Which operator to use is given using the |
AnnaBridge | 156:ff21514d8981 | 412 | * @ref LESENSE_ChDesc_TypeDef::compMode member. */ |
AnnaBridge | 156:ff21514d8981 | 413 | lesenseEvalModeThreshold = _LESENSE_CH_EVAL_MODE_THRES, |
AnnaBridge | 156:ff21514d8981 | 414 | |
AnnaBridge | 156:ff21514d8981 | 415 | /** Sliding window evaluation mode. In this mode the sensor data is |
AnnaBridge | 156:ff21514d8981 | 416 | * evaluated against the upper and lower limits of a window range. The |
AnnaBridge | 156:ff21514d8981 | 417 | * windows range is defined by a base value and a window size. */ |
AnnaBridge | 156:ff21514d8981 | 418 | lesenseEvalModeSlidingWindow = _LESENSE_CH_EVAL_MODE_SLIDINGWIN, |
AnnaBridge | 156:ff21514d8981 | 419 | |
AnnaBridge | 156:ff21514d8981 | 420 | /** Step detection evaluation mode. In this mode the sensor data is compared |
AnnaBridge | 156:ff21514d8981 | 421 | * to the sensor data from the previous measurement. The sensor evaluation |
AnnaBridge | 156:ff21514d8981 | 422 | * will result in a "1" if the difference between the current measurement |
AnnaBridge | 156:ff21514d8981 | 423 | * and the previous one is greater than a configurable "step size". If the |
AnnaBridge | 156:ff21514d8981 | 424 | * difference is less than the configured step size then the sensor |
AnnaBridge | 156:ff21514d8981 | 425 | * evaluation will result in a "0". */ |
AnnaBridge | 156:ff21514d8981 | 426 | lesenseEvalModeStepDetection = _LESENSE_CH_EVAL_MODE_STEPDET, |
AnnaBridge | 156:ff21514d8981 | 427 | } LESENSE_ChEvalMode_TypeDef; |
AnnaBridge | 156:ff21514d8981 | 428 | #endif |
AnnaBridge | 156:ff21514d8981 | 429 | |
AnnaBridge | 156:ff21514d8981 | 430 | /** Idle phase configuration of alternate excitation channels. */ |
Anna Bridge |
160:5571c4ff569f | 431 | typedef enum { |
AnnaBridge | 156:ff21514d8981 | 432 | /** ALTEX output is disabled in idle phase. |
AnnaBridge | 156:ff21514d8981 | 433 | * Note: this value could be used for all alternate excitation channels. */ |
AnnaBridge | 156:ff21514d8981 | 434 | lesenseAltExPinIdleDis = _LESENSE_ALTEXCONF_IDLECONF0_DISABLE, |
AnnaBridge | 156:ff21514d8981 | 435 | |
AnnaBridge | 156:ff21514d8981 | 436 | /** ALTEX output is high in idle phase. |
AnnaBridge | 156:ff21514d8981 | 437 | * Note: this value could be used for all alternate excitation channels. */ |
AnnaBridge | 156:ff21514d8981 | 438 | lesenseAltExPinIdleHigh = _LESENSE_ALTEXCONF_IDLECONF0_HIGH, |
AnnaBridge | 156:ff21514d8981 | 439 | |
AnnaBridge | 156:ff21514d8981 | 440 | /** ALTEX output is low in idle phase. |
AnnaBridge | 156:ff21514d8981 | 441 | * Note: this value could be used for all alternate excitation channels. */ |
AnnaBridge | 156:ff21514d8981 | 442 | lesenseAltExPinIdleLow = _LESENSE_ALTEXCONF_IDLECONF0_LOW |
AnnaBridge | 156:ff21514d8981 | 443 | } LESENSE_AltExPinIdle_TypeDef; |
AnnaBridge | 156:ff21514d8981 | 444 | |
AnnaBridge | 156:ff21514d8981 | 445 | /** Transition action modes. */ |
Anna Bridge |
160:5571c4ff569f | 446 | typedef enum { |
AnnaBridge | 156:ff21514d8981 | 447 | /** No PRS pulses generated (if PRSCOUNT == 0). |
AnnaBridge | 156:ff21514d8981 | 448 | * Do not count (if PRSCOUNT == 1). */ |
AnnaBridge | 156:ff21514d8981 | 449 | lesenseTransActNone = LESENSE_ST_TCONFA_PRSACT_NONE, |
AnnaBridge | 156:ff21514d8981 | 450 | |
AnnaBridge | 156:ff21514d8981 | 451 | /** Generate pulse on LESPRS0 (if PRSCOUNT == 0). */ |
AnnaBridge | 156:ff21514d8981 | 452 | lesenseTransActPRS0 = LESENSE_ST_TCONFA_PRSACT_PRS0, |
AnnaBridge | 156:ff21514d8981 | 453 | |
AnnaBridge | 156:ff21514d8981 | 454 | /** Generate pulse on LESPRS1 (if PRSCOUNT == 0). */ |
AnnaBridge | 156:ff21514d8981 | 455 | lesenseTransActPRS1 = LESENSE_ST_TCONFA_PRSACT_PRS1, |
AnnaBridge | 156:ff21514d8981 | 456 | |
AnnaBridge | 156:ff21514d8981 | 457 | /** Generate pulse on LESPRS0 and LESPRS1 (if PRSCOUNT == 0). */ |
AnnaBridge | 156:ff21514d8981 | 458 | lesenseTransActPRS01 = LESENSE_ST_TCONFA_PRSACT_PRS01, |
AnnaBridge | 156:ff21514d8981 | 459 | |
AnnaBridge | 156:ff21514d8981 | 460 | /** Generate pulse on LESPRS2 (for both PRSCOUNT == 0 and PRSCOUNT == 1). */ |
AnnaBridge | 156:ff21514d8981 | 461 | lesenseTransActPRS2 = LESENSE_ST_TCONFA_PRSACT_PRS2, |
AnnaBridge | 156:ff21514d8981 | 462 | |
AnnaBridge | 156:ff21514d8981 | 463 | /** Generate pulse on LESPRS0 and LESPRS2 (if PRSCOUNT == 0). */ |
AnnaBridge | 156:ff21514d8981 | 464 | lesenseTransActPRS02 = LESENSE_ST_TCONFA_PRSACT_PRS02, |
AnnaBridge | 156:ff21514d8981 | 465 | |
AnnaBridge | 156:ff21514d8981 | 466 | /** Generate pulse on LESPRS1 and LESPRS2 (if PRSCOUNT == 0). */ |
AnnaBridge | 156:ff21514d8981 | 467 | lesenseTransActPRS12 = LESENSE_ST_TCONFA_PRSACT_PRS12, |
AnnaBridge | 156:ff21514d8981 | 468 | |
AnnaBridge | 156:ff21514d8981 | 469 | /** Generate pulse on LESPRS0, LESPRS1 and LESPRS2 (if PRSCOUNT == 0). */ |
AnnaBridge | 156:ff21514d8981 | 470 | lesenseTransActPRS012 = LESENSE_ST_TCONFA_PRSACT_PRS012, |
AnnaBridge | 156:ff21514d8981 | 471 | |
AnnaBridge | 156:ff21514d8981 | 472 | /** Count up (if PRSCOUNT == 1). */ |
AnnaBridge | 156:ff21514d8981 | 473 | lesenseTransActUp = LESENSE_ST_TCONFA_PRSACT_UP, |
AnnaBridge | 156:ff21514d8981 | 474 | |
AnnaBridge | 156:ff21514d8981 | 475 | /** Count down (if PRSCOUNT == 1). */ |
AnnaBridge | 156:ff21514d8981 | 476 | lesenseTransActDown = LESENSE_ST_TCONFA_PRSACT_DOWN, |
AnnaBridge | 156:ff21514d8981 | 477 | |
AnnaBridge | 156:ff21514d8981 | 478 | /** Count up and generate pulse on LESPRS2 (if PRSCOUNT == 1). */ |
AnnaBridge | 156:ff21514d8981 | 479 | lesenseTransActUpAndPRS2 = LESENSE_ST_TCONFA_PRSACT_UPANDPRS2, |
AnnaBridge | 156:ff21514d8981 | 480 | |
AnnaBridge | 156:ff21514d8981 | 481 | /** Count down and generate pulse on LESPRS2 (if PRSCOUNT == 1). */ |
AnnaBridge | 156:ff21514d8981 | 482 | lesenseTransActDownAndPRS2 = LESENSE_ST_TCONFA_PRSACT_DOWNANDPRS2 |
AnnaBridge | 156:ff21514d8981 | 483 | } LESENSE_StTransAct_TypeDef; |
AnnaBridge | 156:ff21514d8981 | 484 | |
AnnaBridge | 156:ff21514d8981 | 485 | /******************************************************************************* |
AnnaBridge | 156:ff21514d8981 | 486 | ******************************* STRUCTS *********************************** |
AnnaBridge | 156:ff21514d8981 | 487 | ******************************************************************************/ |
AnnaBridge | 156:ff21514d8981 | 488 | |
AnnaBridge | 156:ff21514d8981 | 489 | /** Core control (LESENSE_CTRL) descriptor structure. */ |
Anna Bridge |
160:5571c4ff569f | 490 | typedef struct { |
AnnaBridge | 156:ff21514d8981 | 491 | /** Select scan start mode to control how the scan start is being triggered.*/ |
AnnaBridge | 156:ff21514d8981 | 492 | LESENSE_ScanMode_TypeDef scanStart; |
AnnaBridge | 156:ff21514d8981 | 493 | |
AnnaBridge | 156:ff21514d8981 | 494 | /** Select PRS source for scan start if scanMode is set to lesensePrsPulse. */ |
AnnaBridge | 156:ff21514d8981 | 495 | LESENSE_PRSSel_TypeDef prsSel; |
AnnaBridge | 156:ff21514d8981 | 496 | |
AnnaBridge | 156:ff21514d8981 | 497 | /** Select scan configuration register usage strategy. */ |
AnnaBridge | 156:ff21514d8981 | 498 | LESENSE_ScanConfSel_TypeDef scanConfSel; |
AnnaBridge | 156:ff21514d8981 | 499 | |
AnnaBridge | 156:ff21514d8981 | 500 | /** Set to true to invert ACMP0 output. */ |
AnnaBridge | 156:ff21514d8981 | 501 | bool invACMP0; |
AnnaBridge | 156:ff21514d8981 | 502 | |
AnnaBridge | 156:ff21514d8981 | 503 | /** Set to true to invert ACMP1 output. */ |
AnnaBridge | 156:ff21514d8981 | 504 | bool invACMP1; |
AnnaBridge | 156:ff21514d8981 | 505 | |
AnnaBridge | 156:ff21514d8981 | 506 | /** Set to true to sample both ACMPs simultaneously. */ |
AnnaBridge | 156:ff21514d8981 | 507 | bool dualSample; |
AnnaBridge | 156:ff21514d8981 | 508 | |
AnnaBridge | 156:ff21514d8981 | 509 | /** Set to true in order to to store SCANRES in RAM (accessible via RESDATA) |
AnnaBridge | 156:ff21514d8981 | 510 | * after each scan. */ |
AnnaBridge | 156:ff21514d8981 | 511 | bool storeScanRes; |
AnnaBridge | 156:ff21514d8981 | 512 | |
AnnaBridge | 156:ff21514d8981 | 513 | /** Set to true in order to always make LESENSE write to the result buffer, |
AnnaBridge | 156:ff21514d8981 | 514 | * even if it is full. */ |
AnnaBridge | 156:ff21514d8981 | 515 | bool bufOverWr; |
AnnaBridge | 156:ff21514d8981 | 516 | |
AnnaBridge | 156:ff21514d8981 | 517 | /** Select trigger conditions for interrupt and DMA. */ |
AnnaBridge | 156:ff21514d8981 | 518 | LESENSE_BufTrigLevel_TypeDef bufTrigLevel; |
AnnaBridge | 156:ff21514d8981 | 519 | |
AnnaBridge | 156:ff21514d8981 | 520 | /** Configure trigger condition for DMA wakeup from EM2. */ |
AnnaBridge | 156:ff21514d8981 | 521 | LESENSE_DMAWakeUp_TypeDef wakeupOnDMA; |
AnnaBridge | 156:ff21514d8981 | 522 | |
AnnaBridge | 156:ff21514d8981 | 523 | /** Select bias mode. */ |
AnnaBridge | 156:ff21514d8981 | 524 | LESENSE_BiasMode_TypeDef biasMode; |
AnnaBridge | 156:ff21514d8981 | 525 | |
AnnaBridge | 156:ff21514d8981 | 526 | /** Set to true to keep LESENSE running in debug mode. */ |
AnnaBridge | 156:ff21514d8981 | 527 | bool debugRun; |
AnnaBridge | 156:ff21514d8981 | 528 | } LESENSE_CoreCtrlDesc_TypeDef; |
AnnaBridge | 156:ff21514d8981 | 529 | |
AnnaBridge | 156:ff21514d8981 | 530 | /** Default configuration for LESENSE_CtrlDesc_TypeDef structure. */ |
AnnaBridge | 156:ff21514d8981 | 531 | #define LESENSE_CORECTRL_DESC_DEFAULT \ |
Anna Bridge |
160:5571c4ff569f | 532 | { \ |
Anna Bridge |
160:5571c4ff569f | 533 | lesenseScanStartPeriodic,/* Start new scan each time the period counter overflows. */ \ |
Anna Bridge |
160:5571c4ff569f | 534 | lesensePRSCh0, /* Default PRS channel is selected. */ \ |
Anna Bridge |
160:5571c4ff569f | 535 | lesenseScanConfDirMap, /* Direct mapping SCANCONF register usage strategy. */ \ |
Anna Bridge |
160:5571c4ff569f | 536 | false, /* Don't invert ACMP0 output. */ \ |
Anna Bridge |
160:5571c4ff569f | 537 | false, /* Don't invert ACMP1 output. */ \ |
Anna Bridge |
160:5571c4ff569f | 538 | false, /* Disable dual sampling. */ \ |
Anna Bridge |
160:5571c4ff569f | 539 | true, /* Store scan result after each scan. */ \ |
Anna Bridge |
160:5571c4ff569f | 540 | true, /* Overwrite result buffer register even if it is full. */ \ |
Anna Bridge |
160:5571c4ff569f | 541 | lesenseBufTrigHalf, /* Trigger interrupt and DMA request if result buffer is half full. */ \ |
Anna Bridge |
160:5571c4ff569f | 542 | lesenseDMAWakeUpDisable, /* Don't wake up on DMA from EM2. */ \ |
Anna Bridge |
160:5571c4ff569f | 543 | lesenseBiasModeDontTouch,/* Don't touch bias configuration. */ \ |
Anna Bridge |
160:5571c4ff569f | 544 | true /* Keep LESENSE running in debug mode. */ \ |
Anna Bridge |
160:5571c4ff569f | 545 | } |
AnnaBridge | 156:ff21514d8981 | 546 | |
AnnaBridge | 156:ff21514d8981 | 547 | /** LESENSE timing control descriptor structure. */ |
Anna Bridge |
160:5571c4ff569f | 548 | typedef struct { |
AnnaBridge | 156:ff21514d8981 | 549 | /** Set the number of LFACLK cycles to delay sensor interaction on |
AnnaBridge | 156:ff21514d8981 | 550 | * each channel. Valid range: 0-3 (2 bit). */ |
AnnaBridge | 156:ff21514d8981 | 551 | uint8_t startDelay; |
AnnaBridge | 156:ff21514d8981 | 552 | |
AnnaBridge | 156:ff21514d8981 | 553 | /** |
AnnaBridge | 156:ff21514d8981 | 554 | * Set to true do delay the startup of AUXHFRCO until the system enters |
AnnaBridge | 156:ff21514d8981 | 555 | * the excite phase. This will reduce the time AUXHFRCO is enabled and |
AnnaBridge | 156:ff21514d8981 | 556 | * reduce power usage. */ |
AnnaBridge | 156:ff21514d8981 | 557 | bool delayAuxStartup; |
AnnaBridge | 156:ff21514d8981 | 558 | } LESENSE_TimeCtrlDesc_TypeDef; |
AnnaBridge | 156:ff21514d8981 | 559 | |
AnnaBridge | 156:ff21514d8981 | 560 | /** Default configuration for LESENSE_TimeCtrlDesc_TypeDef structure. */ |
Anna Bridge |
160:5571c4ff569f | 561 | #define LESENSE_TIMECTRL_DESC_DEFAULT \ |
Anna Bridge |
160:5571c4ff569f | 562 | { \ |
Anna Bridge |
160:5571c4ff569f | 563 | 0U, /* No sensor interaction delay. */ \ |
Anna Bridge |
160:5571c4ff569f | 564 | false /* Don't delay the AUXHFRCO startup. */ \ |
Anna Bridge |
160:5571c4ff569f | 565 | } |
AnnaBridge | 156:ff21514d8981 | 566 | |
AnnaBridge | 156:ff21514d8981 | 567 | /** LESENSE peripheral control descriptor structure. */ |
Anna Bridge |
160:5571c4ff569f | 568 | typedef struct { |
AnnaBridge | 156:ff21514d8981 | 569 | /** Configure DAC channel 0 data control. */ |
AnnaBridge | 156:ff21514d8981 | 570 | LESENSE_ControlDACData_TypeDef dacCh0Data; |
AnnaBridge | 156:ff21514d8981 | 571 | |
AnnaBridge | 156:ff21514d8981 | 572 | #if defined(_LESENSE_PERCTRL_DACCH0CONV_MASK) |
AnnaBridge | 156:ff21514d8981 | 573 | /** Configure how LESENSE controls conversion on DAC channel 0. */ |
AnnaBridge | 156:ff21514d8981 | 574 | LESENSE_ControlDACConv_TypeDef dacCh0ConvMode; |
Anna Bridge |
160:5571c4ff569f | 575 | #endif |
AnnaBridge | 156:ff21514d8981 | 576 | |
Anna Bridge |
160:5571c4ff569f | 577 | #if defined(_LESENSE_PERCTRL_DACCH0OUT_MASK) |
AnnaBridge | 156:ff21514d8981 | 578 | /** Configure how LESENSE controls output on DAC channel 0. */ |
AnnaBridge | 156:ff21514d8981 | 579 | LESENSE_ControlDACOut_TypeDef dacCh0OutMode; |
AnnaBridge | 156:ff21514d8981 | 580 | #endif |
AnnaBridge | 156:ff21514d8981 | 581 | |
AnnaBridge | 156:ff21514d8981 | 582 | /** Configure DAC channel 1 data control. */ |
AnnaBridge | 156:ff21514d8981 | 583 | LESENSE_ControlDACData_TypeDef dacCh1Data; |
AnnaBridge | 156:ff21514d8981 | 584 | |
AnnaBridge | 156:ff21514d8981 | 585 | #if defined(_LESENSE_PERCTRL_DACCH1CONV_MASK) |
AnnaBridge | 156:ff21514d8981 | 586 | /** Configure how LESENSE controls conversion on DAC channel 1. */ |
AnnaBridge | 156:ff21514d8981 | 587 | LESENSE_ControlDACConv_TypeDef dacCh1ConvMode; |
Anna Bridge |
160:5571c4ff569f | 588 | #endif |
AnnaBridge | 156:ff21514d8981 | 589 | |
Anna Bridge |
160:5571c4ff569f | 590 | #if defined(_LESENSE_PERCTRL_DACCH1OUT_MASK) |
AnnaBridge | 156:ff21514d8981 | 591 | /** Configure how LESENSE controls output on DAC channel 1. */ |
AnnaBridge | 156:ff21514d8981 | 592 | LESENSE_ControlDACOut_TypeDef dacCh1OutMode; |
AnnaBridge | 156:ff21514d8981 | 593 | #endif |
AnnaBridge | 156:ff21514d8981 | 594 | |
AnnaBridge | 156:ff21514d8981 | 595 | #if defined(_LESENSE_PERCTRL_DACPRESC_MASK) |
AnnaBridge | 156:ff21514d8981 | 596 | /** Configure the prescaling factor for the LESENSE - DAC interface. |
AnnaBridge | 156:ff21514d8981 | 597 | * Valid range: 0-31 (5bit). */ |
AnnaBridge | 156:ff21514d8981 | 598 | uint8_t dacPresc; |
AnnaBridge | 156:ff21514d8981 | 599 | #endif |
AnnaBridge | 156:ff21514d8981 | 600 | |
AnnaBridge | 156:ff21514d8981 | 601 | #if defined(_LESENSE_PERCTRL_DACREF_MASK) |
AnnaBridge | 156:ff21514d8981 | 602 | /** Configure the DAC reference to be used. Set to #lesenseDACRefVdd to use |
AnnaBridge | 156:ff21514d8981 | 603 | * VDD and set to #lesenseDACRefBandGap to use bandgap as reference. */ |
AnnaBridge | 156:ff21514d8981 | 604 | LESENSE_DACRef_TypeDef dacRef; |
AnnaBridge | 156:ff21514d8981 | 605 | #endif |
AnnaBridge | 156:ff21514d8981 | 606 | |
AnnaBridge | 156:ff21514d8981 | 607 | /** Configure how LESENSE controls ACMP 0. */ |
AnnaBridge | 156:ff21514d8981 | 608 | LESENSE_ControlACMP_TypeDef acmp0Mode; |
AnnaBridge | 156:ff21514d8981 | 609 | |
AnnaBridge | 156:ff21514d8981 | 610 | /** Configure how LESENSE controls ACMP 1. */ |
AnnaBridge | 156:ff21514d8981 | 611 | LESENSE_ControlACMP_TypeDef acmp1Mode; |
AnnaBridge | 156:ff21514d8981 | 612 | |
AnnaBridge | 156:ff21514d8981 | 613 | /** Configure how LESENSE controls ACMPs and the DAC in idle mode. */ |
AnnaBridge | 156:ff21514d8981 | 614 | LESENSE_WarmupMode_TypeDef warmupMode; |
AnnaBridge | 156:ff21514d8981 | 615 | |
AnnaBridge | 156:ff21514d8981 | 616 | #if defined(_LESENSE_PERCTRL_DACCONVTRIG_MASK) |
AnnaBridge | 156:ff21514d8981 | 617 | /** When set to true the DAC is only enabled once for each scan. When |
AnnaBridge | 156:ff21514d8981 | 618 | * set to false the DAC is enabled before every channel measurement. */ |
AnnaBridge | 156:ff21514d8981 | 619 | bool dacScan; |
AnnaBridge | 156:ff21514d8981 | 620 | #endif |
Anna Bridge |
160:5571c4ff569f | 621 | |
Anna Bridge |
160:5571c4ff569f | 622 | #if defined(_LESENSE_PERCTRL_DACSTARTUP_MASK) |
Anna Bridge |
160:5571c4ff569f | 623 | /** When set to true the DAC is started a half clock cycle before sensor |
Anna Bridge |
160:5571c4ff569f | 624 | * interaction starts. When set to false, a full clock cycle is used. */ |
Anna Bridge |
160:5571c4ff569f | 625 | bool dacStartupHalf; |
Anna Bridge |
160:5571c4ff569f | 626 | #endif |
Anna Bridge |
160:5571c4ff569f | 627 | |
Anna Bridge |
160:5571c4ff569f | 628 | #if defined(_LESENSE_PERCTRL_DACCH0EN_MASK) |
Anna Bridge |
160:5571c4ff569f | 629 | /** When set to true, LESENSE controls DAC channel 0. */ |
Anna Bridge |
160:5571c4ff569f | 630 | bool dacCh0En; |
Anna Bridge |
160:5571c4ff569f | 631 | #endif |
Anna Bridge |
160:5571c4ff569f | 632 | |
Anna Bridge |
160:5571c4ff569f | 633 | #if defined(_LESENSE_PERCTRL_DACCH1EN_MASK) |
Anna Bridge |
160:5571c4ff569f | 634 | /** When set to true, LESENSE controls DAC channel 1. */ |
Anna Bridge |
160:5571c4ff569f | 635 | bool dacCh1En; |
Anna Bridge |
160:5571c4ff569f | 636 | #endif |
AnnaBridge | 156:ff21514d8981 | 637 | } LESENSE_PerCtrlDesc_TypeDef; |
AnnaBridge | 156:ff21514d8981 | 638 | |
AnnaBridge | 156:ff21514d8981 | 639 | /** Default configuration for LESENSE_PerCtrl_TypeDef structure. */ |
AnnaBridge | 156:ff21514d8981 | 640 | #if defined(_SILICON_LABS_32B_SERIES_0) |
Anna Bridge |
160:5571c4ff569f | 641 | #define LESENSE_PERCTRL_DESC_DEFAULT \ |
Anna Bridge |
160:5571c4ff569f | 642 | { \ |
Anna Bridge |
160:5571c4ff569f | 643 | lesenseDACIfData, /* DAC channel 0 data is defined by DAC_CH0DATA register */ \ |
Anna Bridge |
160:5571c4ff569f | 644 | lesenseDACConvModeDisable,/* LESENSE does not control DAC CH0. */ \ |
Anna Bridge |
160:5571c4ff569f | 645 | lesenseDACOutModeDisable, /* DAC channel 0 output to pin disabled. */ \ |
Anna Bridge |
160:5571c4ff569f | 646 | lesenseDACIfData, /* DAC channel 1 data is defined by DAC_CH1DATA register */ \ |
Anna Bridge |
160:5571c4ff569f | 647 | lesenseDACConvModeDisable,/* LESENSE does not control DAC CH1. */ \ |
Anna Bridge |
160:5571c4ff569f | 648 | lesenseDACOutModeDisable, /* DAC channel 1 output to pin disabled. */ \ |
Anna Bridge |
160:5571c4ff569f | 649 | 0U, /* DAC prescaling factor of 1 (0+1). */ \ |
Anna Bridge |
160:5571c4ff569f | 650 | lesenseDACRefVdd, /* DAC uses VDD reference. */ \ |
Anna Bridge |
160:5571c4ff569f | 651 | lesenseACMPModeMuxThres, /* LESENSE controls the input mux and the threshold value of ACMP0. */ \ |
Anna Bridge |
160:5571c4ff569f | 652 | lesenseACMPModeMuxThres, /* LESENSE controls the input mux and the threshold value of ACMP1. */ \ |
Anna Bridge |
160:5571c4ff569f | 653 | lesenseWarmupModeKeepWarm /* Keep both ACMPs and the DAC powered up when LESENSE is idle. */ \ |
Anna Bridge |
160:5571c4ff569f | 654 | } |
AnnaBridge | 156:ff21514d8981 | 655 | #else |
AnnaBridge | 156:ff21514d8981 | 656 | #define LESENSE_PERCTRL_DESC_DEFAULT \ |
Anna Bridge |
160:5571c4ff569f | 657 | { \ |
Anna Bridge |
160:5571c4ff569f | 658 | lesenseDACIfData, /* DAC channel 0 data is defined by DAC_CH0DATA register. */ \ |
Anna Bridge |
160:5571c4ff569f | 659 | lesenseDACIfData, /* DAC channel 1 data is defined by DAC_CH1DATA register. */ \ |
Anna Bridge |
160:5571c4ff569f | 660 | lesenseACMPModeMuxThres, /* LESENSE controls the input mux and the threshold value of ACMP0. */ \ |
Anna Bridge |
160:5571c4ff569f | 661 | lesenseACMPModeMuxThres, /* LESENSE controls the input mux and the threshold value of ACMP1. */ \ |
Anna Bridge |
160:5571c4ff569f | 662 | lesenseWarmupModeKeepWarm,/* Keep both ACMPs and the DAC powered up when LESENSE is idle. */ \ |
Anna Bridge |
160:5571c4ff569f | 663 | false, /* DAC is enabled for before every channel measurement. */ \ |
Anna Bridge |
160:5571c4ff569f | 664 | false, /* DAC is enabled a full clock cycle before sensor interaction */ \ |
Anna Bridge |
160:5571c4ff569f | 665 | false, /* LESENSE does not control DAC channel 0. */ \ |
Anna Bridge |
160:5571c4ff569f | 666 | false /* LESENSE does not control DAC channel 1. */ \ |
Anna Bridge |
160:5571c4ff569f | 667 | } |
AnnaBridge | 156:ff21514d8981 | 668 | #endif |
AnnaBridge | 156:ff21514d8981 | 669 | |
AnnaBridge | 156:ff21514d8981 | 670 | /** LESENSE decoder control descriptor structure. */ |
Anna Bridge |
160:5571c4ff569f | 671 | typedef struct { |
AnnaBridge | 156:ff21514d8981 | 672 | /** Select the input to the LESENSE decoder. */ |
AnnaBridge | 156:ff21514d8981 | 673 | LESENSE_DecInput_TypeDef decInput; |
AnnaBridge | 156:ff21514d8981 | 674 | |
AnnaBridge | 156:ff21514d8981 | 675 | /** Initial state of the LESENSE decoder. */ |
AnnaBridge | 156:ff21514d8981 | 676 | uint32_t initState; |
AnnaBridge | 156:ff21514d8981 | 677 | |
AnnaBridge | 156:ff21514d8981 | 678 | /** Set to enable the decoder to check the present state in addition |
AnnaBridge | 156:ff21514d8981 | 679 | * to the states defined in TCONF. */ |
AnnaBridge | 156:ff21514d8981 | 680 | bool chkState; |
AnnaBridge | 156:ff21514d8981 | 681 | |
AnnaBridge | 156:ff21514d8981 | 682 | /** When set, a transition from state x in the decoder will set interrupt flag |
AnnaBridge | 156:ff21514d8981 | 683 | * CHx. */ |
AnnaBridge | 156:ff21514d8981 | 684 | bool intMap; |
AnnaBridge | 156:ff21514d8981 | 685 | |
AnnaBridge | 156:ff21514d8981 | 686 | /** Set to enable hysteresis in the decoder for suppressing changes on PRS |
AnnaBridge | 156:ff21514d8981 | 687 | * channel 0. */ |
AnnaBridge | 156:ff21514d8981 | 688 | bool hystPRS0; |
AnnaBridge | 156:ff21514d8981 | 689 | |
AnnaBridge | 156:ff21514d8981 | 690 | /** Set to enable hysteresis in the decoder for suppressing changes on PRS |
AnnaBridge | 156:ff21514d8981 | 691 | * channel 1. */ |
AnnaBridge | 156:ff21514d8981 | 692 | bool hystPRS1; |
AnnaBridge | 156:ff21514d8981 | 693 | |
AnnaBridge | 156:ff21514d8981 | 694 | /** Set to enable hysteresis in the decoder for suppressing changes on PRS |
AnnaBridge | 156:ff21514d8981 | 695 | * channel 2. */ |
AnnaBridge | 156:ff21514d8981 | 696 | bool hystPRS2; |
AnnaBridge | 156:ff21514d8981 | 697 | |
AnnaBridge | 156:ff21514d8981 | 698 | /** Set to enable hysteresis in the decoder for suppressing interrupt |
AnnaBridge | 156:ff21514d8981 | 699 | * requests. */ |
AnnaBridge | 156:ff21514d8981 | 700 | bool hystIRQ; |
AnnaBridge | 156:ff21514d8981 | 701 | |
AnnaBridge | 156:ff21514d8981 | 702 | /** Set to enable count mode on decoder PRS channels 0 and 1 to produce |
AnnaBridge | 156:ff21514d8981 | 703 | * outputs which can be used by a PCNT to count up or down. */ |
AnnaBridge | 156:ff21514d8981 | 704 | bool prsCount; |
AnnaBridge | 156:ff21514d8981 | 705 | |
AnnaBridge | 156:ff21514d8981 | 706 | /** Select PRS channel input for bit 0 of the LESENSE decoder. */ |
AnnaBridge | 156:ff21514d8981 | 707 | LESENSE_PRSSel_TypeDef prsChSel0; |
AnnaBridge | 156:ff21514d8981 | 708 | |
AnnaBridge | 156:ff21514d8981 | 709 | /** Select PRS channel input for bit 1 of the LESENSE decoder. */ |
AnnaBridge | 156:ff21514d8981 | 710 | LESENSE_PRSSel_TypeDef prsChSel1; |
AnnaBridge | 156:ff21514d8981 | 711 | |
AnnaBridge | 156:ff21514d8981 | 712 | /** Select PRS channel input for bit 2 of the LESENSE decoder. */ |
AnnaBridge | 156:ff21514d8981 | 713 | LESENSE_PRSSel_TypeDef prsChSel2; |
AnnaBridge | 156:ff21514d8981 | 714 | |
AnnaBridge | 156:ff21514d8981 | 715 | /** Select PRS channel input for bit 3 of the LESENSE decoder. */ |
AnnaBridge | 156:ff21514d8981 | 716 | LESENSE_PRSSel_TypeDef prsChSel3; |
AnnaBridge | 156:ff21514d8981 | 717 | } LESENSE_DecCtrlDesc_TypeDef; |
AnnaBridge | 156:ff21514d8981 | 718 | |
AnnaBridge | 156:ff21514d8981 | 719 | /** Default configuration for LESENSE_PerCtrl_TypeDef structure. */ |
Anna Bridge |
160:5571c4ff569f | 720 | #define LESENSE_DECCTRL_DESC_DEFAULT \ |
Anna Bridge |
160:5571c4ff569f | 721 | { \ |
Anna Bridge |
160:5571c4ff569f | 722 | lesenseDecInputSensorSt, /* The SENSORSTATE register is used as input to the decoder. */ \ |
Anna Bridge |
160:5571c4ff569f | 723 | 0U, /* State 0 is the initial state of the decoder. */ \ |
Anna Bridge |
160:5571c4ff569f | 724 | false, /* Disable check of current state. */ \ |
Anna Bridge |
160:5571c4ff569f | 725 | true, /* Enable channel x % 16 interrupt on state x change. */ \ |
Anna Bridge |
160:5571c4ff569f | 726 | true, /* Enable decoder hysteresis on PRS0 output. */ \ |
Anna Bridge |
160:5571c4ff569f | 727 | true, /* Enable decoder hysteresis on PRS1 output. */ \ |
Anna Bridge |
160:5571c4ff569f | 728 | true, /* Enable decoder hysteresis on PRS2 output. */ \ |
Anna Bridge |
160:5571c4ff569f | 729 | true, /* Enable decoder hysteresis on PRS3 output. */ \ |
Anna Bridge |
160:5571c4ff569f | 730 | false, /* Disable count mode on decoder PRS channels 0 and 1*/ \ |
Anna Bridge |
160:5571c4ff569f | 731 | lesensePRSCh0, /* PRS Channel 0 as input for bit 0 of the LESENSE decoder. */ \ |
Anna Bridge |
160:5571c4ff569f | 732 | lesensePRSCh1, /* PRS Channel 1 as input for bit 1 of the LESENSE decoder. */ \ |
Anna Bridge |
160:5571c4ff569f | 733 | lesensePRSCh2, /* PRS Channel 2 as input for bit 2 of the LESENSE decoder. */ \ |
Anna Bridge |
160:5571c4ff569f | 734 | lesensePRSCh3, /* PRS Channel 3 as input for bit 3 of the LESENSE decoder. */ \ |
Anna Bridge |
160:5571c4ff569f | 735 | } |
AnnaBridge | 156:ff21514d8981 | 736 | |
AnnaBridge | 156:ff21514d8981 | 737 | /** LESENSE module initialization structure. */ |
Anna Bridge |
160:5571c4ff569f | 738 | typedef struct { |
AnnaBridge | 156:ff21514d8981 | 739 | /** LESENSE core configuration parameters. */ |
AnnaBridge | 156:ff21514d8981 | 740 | LESENSE_CoreCtrlDesc_TypeDef coreCtrl; |
AnnaBridge | 156:ff21514d8981 | 741 | |
AnnaBridge | 156:ff21514d8981 | 742 | /** LESENSE timing configuration parameters. */ |
AnnaBridge | 156:ff21514d8981 | 743 | LESENSE_TimeCtrlDesc_TypeDef timeCtrl; |
AnnaBridge | 156:ff21514d8981 | 744 | |
AnnaBridge | 156:ff21514d8981 | 745 | /** LESENSE peripheral configuration parameters. */ |
AnnaBridge | 156:ff21514d8981 | 746 | LESENSE_PerCtrlDesc_TypeDef perCtrl; |
AnnaBridge | 156:ff21514d8981 | 747 | |
AnnaBridge | 156:ff21514d8981 | 748 | /** LESENSE decoder configuration parameters. */ |
AnnaBridge | 156:ff21514d8981 | 749 | LESENSE_DecCtrlDesc_TypeDef decCtrl; |
AnnaBridge | 156:ff21514d8981 | 750 | } LESENSE_Init_TypeDef; |
AnnaBridge | 156:ff21514d8981 | 751 | |
AnnaBridge | 156:ff21514d8981 | 752 | /** Default configuration for LESENSE_Init_TypeDef structure. */ |
Anna Bridge |
160:5571c4ff569f | 753 | #define LESENSE_INIT_DEFAULT \ |
Anna Bridge |
160:5571c4ff569f | 754 | { \ |
Anna Bridge |
160:5571c4ff569f | 755 | .coreCtrl = LESENSE_CORECTRL_DESC_DEFAULT, /* Default core control parameters. */ \ |
Anna Bridge |
160:5571c4ff569f | 756 | .timeCtrl = LESENSE_TIMECTRL_DESC_DEFAULT, /* Default time control parameters. */ \ |
Anna Bridge |
160:5571c4ff569f | 757 | .perCtrl = LESENSE_PERCTRL_DESC_DEFAULT, /* Default peripheral control parameters. */ \ |
Anna Bridge |
160:5571c4ff569f | 758 | .decCtrl = LESENSE_DECCTRL_DESC_DEFAULT /* Default decoder control parameters. */ \ |
Anna Bridge |
160:5571c4ff569f | 759 | } |
AnnaBridge | 156:ff21514d8981 | 760 | |
AnnaBridge | 156:ff21514d8981 | 761 | /** Channel descriptor structure. */ |
Anna Bridge |
160:5571c4ff569f | 762 | typedef struct { |
AnnaBridge | 156:ff21514d8981 | 763 | /** Set to enable scan channel CHx. */ |
AnnaBridge | 156:ff21514d8981 | 764 | bool enaScanCh; |
AnnaBridge | 156:ff21514d8981 | 765 | |
AnnaBridge | 156:ff21514d8981 | 766 | /** Set to enable CHx pin. */ |
AnnaBridge | 156:ff21514d8981 | 767 | bool enaPin; |
AnnaBridge | 156:ff21514d8981 | 768 | |
AnnaBridge | 156:ff21514d8981 | 769 | /** Enable/disable channel interrupts after configuring all the sensor channel |
AnnaBridge | 156:ff21514d8981 | 770 | * parameters. */ |
AnnaBridge | 156:ff21514d8981 | 771 | bool enaInt; |
AnnaBridge | 156:ff21514d8981 | 772 | |
AnnaBridge | 156:ff21514d8981 | 773 | /** Configure channel pin mode for the excitation phase of the scan sequence. |
AnnaBridge | 156:ff21514d8981 | 774 | * Note: OPAOUT is only available on channels 2, 3, 4, and 5. */ |
AnnaBridge | 156:ff21514d8981 | 775 | LESENSE_ChPinExMode_TypeDef chPinExMode; |
AnnaBridge | 156:ff21514d8981 | 776 | |
AnnaBridge | 156:ff21514d8981 | 777 | /** Configure channel pin idle setup in LESENSE idle phase. */ |
AnnaBridge | 156:ff21514d8981 | 778 | LESENSE_ChPinIdleMode_TypeDef chPinIdleMode; |
AnnaBridge | 156:ff21514d8981 | 779 | |
AnnaBridge | 156:ff21514d8981 | 780 | /** Set to use alternate excite pin for excitation. */ |
AnnaBridge | 156:ff21514d8981 | 781 | bool useAltEx; |
AnnaBridge | 156:ff21514d8981 | 782 | |
AnnaBridge | 156:ff21514d8981 | 783 | /** Set to enable the result from this channel being shifted into the decoder |
AnnaBridge | 156:ff21514d8981 | 784 | * register. */ |
AnnaBridge | 156:ff21514d8981 | 785 | bool shiftRes; |
AnnaBridge | 156:ff21514d8981 | 786 | |
AnnaBridge | 156:ff21514d8981 | 787 | /** Set to invert the result bit stored in SCANRES register. */ |
AnnaBridge | 156:ff21514d8981 | 788 | bool invRes; |
AnnaBridge | 156:ff21514d8981 | 789 | |
AnnaBridge | 156:ff21514d8981 | 790 | /** Set to store the counter value in RAM (accessible via RESDATA) and make |
AnnaBridge | 156:ff21514d8981 | 791 | * the comparison result available in the SCANRES register. */ |
AnnaBridge | 156:ff21514d8981 | 792 | bool storeCntRes; |
AnnaBridge | 156:ff21514d8981 | 793 | |
AnnaBridge | 156:ff21514d8981 | 794 | /** Select clock used for excitation timing. */ |
AnnaBridge | 156:ff21514d8981 | 795 | LESENSE_ChClk_TypeDef exClk; |
AnnaBridge | 156:ff21514d8981 | 796 | |
AnnaBridge | 156:ff21514d8981 | 797 | /** Select clock used for sample delay timing. */ |
AnnaBridge | 156:ff21514d8981 | 798 | LESENSE_ChClk_TypeDef sampleClk; |
AnnaBridge | 156:ff21514d8981 | 799 | |
AnnaBridge | 156:ff21514d8981 | 800 | /** Configure excitation time. Excitation will last exTime+1 excitation clock |
AnnaBridge | 156:ff21514d8981 | 801 | * cycles. Valid range: 0-63 (6 bits). */ |
AnnaBridge | 156:ff21514d8981 | 802 | uint8_t exTime; |
AnnaBridge | 156:ff21514d8981 | 803 | |
AnnaBridge | 156:ff21514d8981 | 804 | /** Configure sample delay. Sampling will occur after sampleDelay+1 sample |
AnnaBridge | 156:ff21514d8981 | 805 | * clock cycles. Valid range: 0-127 (7 bits) or 0-255 (8 bits) depending on |
AnnaBridge | 156:ff21514d8981 | 806 | * device. */ |
AnnaBridge | 156:ff21514d8981 | 807 | uint8_t sampleDelay; |
AnnaBridge | 156:ff21514d8981 | 808 | |
AnnaBridge | 156:ff21514d8981 | 809 | /** Configure measure delay. Sensor measuring is delayed for measDelay |
AnnaBridge | 156:ff21514d8981 | 810 | * excitation clock cycles. Valid range: 0-127 (7 bits) or 0-1023 (10 bits) |
AnnaBridge | 156:ff21514d8981 | 811 | * depending on device. */ |
AnnaBridge | 156:ff21514d8981 | 812 | uint16_t measDelay; |
AnnaBridge | 156:ff21514d8981 | 813 | |
AnnaBridge | 156:ff21514d8981 | 814 | /** Configure ACMP threshold or DAC data. |
AnnaBridge | 156:ff21514d8981 | 815 | * If perCtrl.dacCh0Data or perCtrl.dacCh1Data is set to #lesenseDACIfData, |
AnnaBridge | 156:ff21514d8981 | 816 | * acmpThres defines the 12-bit DAC data in the corresponding data register |
AnnaBridge | 156:ff21514d8981 | 817 | * of the DAC interface (DACn_CH0DATA and DACn_CH1DATA). |
AnnaBridge | 156:ff21514d8981 | 818 | * In this case, the valid range is: 0-4095 (12 bits). |
AnnaBridge | 156:ff21514d8981 | 819 | * If perCtrl.dacCh0Data or perCtrl.dacCh1Data is set to #lesenseACMPThres, |
AnnaBridge | 156:ff21514d8981 | 820 | * acmpThres defines the 6-bit Vdd scaling factor of ACMP negative input |
AnnaBridge | 156:ff21514d8981 | 821 | * (VDDLEVEL in ACMP_INPUTSEL register). |
AnnaBridge | 156:ff21514d8981 | 822 | * In this case, the valid range is: 0-63 (6 bits). */ |
AnnaBridge | 156:ff21514d8981 | 823 | uint16_t acmpThres; |
AnnaBridge | 156:ff21514d8981 | 824 | |
AnnaBridge | 156:ff21514d8981 | 825 | /** Select if ACMP output, ADC output or counter output should be used in |
AnnaBridge | 156:ff21514d8981 | 826 | * comparison. */ |
AnnaBridge | 156:ff21514d8981 | 827 | LESENSE_ChSampleMode_TypeDef sampleMode; |
AnnaBridge | 156:ff21514d8981 | 828 | |
AnnaBridge | 156:ff21514d8981 | 829 | /** Configure interrupt generation mode for CHx interrupt flag. */ |
AnnaBridge | 156:ff21514d8981 | 830 | LESENSE_ChIntMode_TypeDef intMode; |
AnnaBridge | 156:ff21514d8981 | 831 | |
AnnaBridge | 156:ff21514d8981 | 832 | /** Configure decision threshold for sensor data comparison. |
AnnaBridge | 156:ff21514d8981 | 833 | * Valid range: 0-65535 (16 bits). */ |
AnnaBridge | 156:ff21514d8981 | 834 | uint16_t cntThres; |
AnnaBridge | 156:ff21514d8981 | 835 | |
AnnaBridge | 156:ff21514d8981 | 836 | /** Select mode for counter comparison. */ |
AnnaBridge | 156:ff21514d8981 | 837 | LESENSE_ChCompMode_TypeDef compMode; |
AnnaBridge | 156:ff21514d8981 | 838 | |
AnnaBridge | 156:ff21514d8981 | 839 | #if defined(_LESENSE_CH_EVAL_MODE_MASK) |
AnnaBridge | 156:ff21514d8981 | 840 | /** Select sensor evaluation mode. */ |
AnnaBridge | 156:ff21514d8981 | 841 | LESENSE_ChEvalMode_TypeDef evalMode; |
AnnaBridge | 156:ff21514d8981 | 842 | #endif |
AnnaBridge | 156:ff21514d8981 | 843 | } LESENSE_ChDesc_TypeDef; |
AnnaBridge | 156:ff21514d8981 | 844 | |
AnnaBridge | 156:ff21514d8981 | 845 | /** Configuration structure for all scan channels. */ |
Anna Bridge |
160:5571c4ff569f | 846 | typedef struct { |
AnnaBridge | 156:ff21514d8981 | 847 | /** Channel descriptor for all LESENSE channels. */ |
AnnaBridge | 156:ff21514d8981 | 848 | LESENSE_ChDesc_TypeDef Ch[LESENSE_NUM_CHANNELS]; |
AnnaBridge | 156:ff21514d8981 | 849 | } LESENSE_ChAll_TypeDef; |
AnnaBridge | 156:ff21514d8981 | 850 | |
AnnaBridge | 156:ff21514d8981 | 851 | /** Default configuration for scan channel. */ |
AnnaBridge | 156:ff21514d8981 | 852 | #if defined(_LESENSE_CH_EVAL_MODE_MASK) |
Anna Bridge |
160:5571c4ff569f | 853 | #define LESENSE_CH_CONF_DEFAULT \ |
Anna Bridge |
160:5571c4ff569f | 854 | { \ |
Anna Bridge |
160:5571c4ff569f | 855 | false, /* Disable scan channel. */ \ |
Anna Bridge |
160:5571c4ff569f | 856 | false, /* Disable the assigned pin on scan channel. */ \ |
Anna Bridge |
160:5571c4ff569f | 857 | false, /* Disable interrupts on channel. */ \ |
Anna Bridge |
160:5571c4ff569f | 858 | lesenseChPinExDis, /* Channel pin is disabled during the excitation period. */ \ |
Anna Bridge |
160:5571c4ff569f | 859 | lesenseChPinIdleDis, /* Channel pin is disabled during the idle period. */ \ |
Anna Bridge |
160:5571c4ff569f | 860 | false, /* Don't use alternate excitation pins for excitation. */ \ |
Anna Bridge |
160:5571c4ff569f | 861 | false, /* Disabled to shift results from this channel to the decoder register. */ \ |
Anna Bridge |
160:5571c4ff569f | 862 | false, /* Disabled to invert the scan result bit. */ \ |
Anna Bridge |
160:5571c4ff569f | 863 | false, /* Disabled to store counter value in the result buffer. */ \ |
Anna Bridge |
160:5571c4ff569f | 864 | lesenseClkLF, /* Use the LF clock for excitation timing. */ \ |
Anna Bridge |
160:5571c4ff569f | 865 | lesenseClkLF, /* Use the LF clock for sample timing. */ \ |
Anna Bridge |
160:5571c4ff569f | 866 | 0x00U, /* Excitation time is set to 0(+1) excitation clock cycles. */ \ |
Anna Bridge |
160:5571c4ff569f | 867 | 0x00U, /* Sample delay is set to 0(+1) sample clock cycles. */ \ |
Anna Bridge |
160:5571c4ff569f | 868 | 0x00U, /* Measure delay is set to 0 excitation clock cycles.*/ \ |
Anna Bridge |
160:5571c4ff569f | 869 | 0x00U, /* ACMP threshold has been set to 0. */ \ |
Anna Bridge |
160:5571c4ff569f | 870 | lesenseSampleModeACMP, /* ACMP output will be used in comparison. */ \ |
Anna Bridge |
160:5571c4ff569f | 871 | lesenseSetIntNone, /* No interrupt is generated by the channel. */ \ |
Anna Bridge |
160:5571c4ff569f | 872 | 0x00U, /* Counter threshold has bee set to 0x00. */ \ |
Anna Bridge |
160:5571c4ff569f | 873 | lesenseCompModeLess, /* Compare mode has been set to trigger interrupt on "less". */ \ |
Anna Bridge |
160:5571c4ff569f | 874 | lesenseEvalModeThreshold /* Eval mode has been set to trigger interrupt on threshold. */ \ |
Anna Bridge |
160:5571c4ff569f | 875 | } |
AnnaBridge | 156:ff21514d8981 | 876 | #else |
Anna Bridge |
160:5571c4ff569f | 877 | #define LESENSE_CH_CONF_DEFAULT \ |
Anna Bridge |
160:5571c4ff569f | 878 | { \ |
Anna Bridge |
160:5571c4ff569f | 879 | false, /* Disable scan channel. */ \ |
Anna Bridge |
160:5571c4ff569f | 880 | false, /* Disable the assigned pin on scan channel. */ \ |
Anna Bridge |
160:5571c4ff569f | 881 | false, /* Disable interrupts on channel. */ \ |
Anna Bridge |
160:5571c4ff569f | 882 | lesenseChPinExDis, /* Channel pin is disabled during the excitation period. */ \ |
Anna Bridge |
160:5571c4ff569f | 883 | lesenseChPinIdleDis, /* Channel pin is disabled during the idle period. */ \ |
Anna Bridge |
160:5571c4ff569f | 884 | false, /* Don't use alternate excitation pins for excitation. */ \ |
Anna Bridge |
160:5571c4ff569f | 885 | false, /* Disabled to shift results from this channel to the decoder register. */ \ |
Anna Bridge |
160:5571c4ff569f | 886 | false, /* Disabled to invert the scan result bit. */ \ |
Anna Bridge |
160:5571c4ff569f | 887 | false, /* Disabled to store counter value in the result buffer. */ \ |
Anna Bridge |
160:5571c4ff569f | 888 | lesenseClkLF, /* Use the LF clock for excitation timing. */ \ |
Anna Bridge |
160:5571c4ff569f | 889 | lesenseClkLF, /* Use the LF clock for sample timing. */ \ |
Anna Bridge |
160:5571c4ff569f | 890 | 0x00U, /* Excitation time is set to 0(+1) excitation clock cycles. */ \ |
Anna Bridge |
160:5571c4ff569f | 891 | 0x00U, /* Sample delay is set to 0(+1) sample clock cycles. */ \ |
Anna Bridge |
160:5571c4ff569f | 892 | 0x00U, /* Measure delay is set to 0 excitation clock cycles.*/ \ |
Anna Bridge |
160:5571c4ff569f | 893 | 0x00U, /* ACMP threshold has been set to 0. */ \ |
Anna Bridge |
160:5571c4ff569f | 894 | lesenseSampleModeACMP, /* ACMP output will be used in comparison. */ \ |
Anna Bridge |
160:5571c4ff569f | 895 | lesenseSetIntNone, /* No interrupt is generated by the channel. */ \ |
Anna Bridge |
160:5571c4ff569f | 896 | 0x00U, /* Counter threshold has bee set to 0x00. */ \ |
Anna Bridge |
160:5571c4ff569f | 897 | lesenseCompModeLess /* Compare mode has been set to trigger interrupt on "less". */ \ |
Anna Bridge |
160:5571c4ff569f | 898 | } |
AnnaBridge | 156:ff21514d8981 | 899 | #endif |
AnnaBridge | 156:ff21514d8981 | 900 | |
AnnaBridge | 156:ff21514d8981 | 901 | /** Default configuration for all sensor channels. */ |
Anna Bridge |
160:5571c4ff569f | 902 | #define LESENSE_SCAN_CONF_DEFAULT \ |
Anna Bridge |
160:5571c4ff569f | 903 | { \ |
Anna Bridge |
160:5571c4ff569f | 904 | { \ |
Anna Bridge |
160:5571c4ff569f | 905 | LESENSE_CH_CONF_DEFAULT, /* Scan channel 0. */ \ |
Anna Bridge |
160:5571c4ff569f | 906 | LESENSE_CH_CONF_DEFAULT, /* Scan channel 1. */ \ |
Anna Bridge |
160:5571c4ff569f | 907 | LESENSE_CH_CONF_DEFAULT, /* Scan channel 2. */ \ |
Anna Bridge |
160:5571c4ff569f | 908 | LESENSE_CH_CONF_DEFAULT, /* Scan channel 3. */ \ |
Anna Bridge |
160:5571c4ff569f | 909 | LESENSE_CH_CONF_DEFAULT, /* Scan channel 4. */ \ |
Anna Bridge |
160:5571c4ff569f | 910 | LESENSE_CH_CONF_DEFAULT, /* Scan channel 5. */ \ |
Anna Bridge |
160:5571c4ff569f | 911 | LESENSE_CH_CONF_DEFAULT, /* Scan channel 6. */ \ |
Anna Bridge |
160:5571c4ff569f | 912 | LESENSE_CH_CONF_DEFAULT, /* Scan channel 7. */ \ |
Anna Bridge |
160:5571c4ff569f | 913 | LESENSE_CH_CONF_DEFAULT, /* Scan channel 8. */ \ |
Anna Bridge |
160:5571c4ff569f | 914 | LESENSE_CH_CONF_DEFAULT, /* Scan channel 9. */ \ |
Anna Bridge |
160:5571c4ff569f | 915 | LESENSE_CH_CONF_DEFAULT, /* Scan channel 10. */ \ |
Anna Bridge |
160:5571c4ff569f | 916 | LESENSE_CH_CONF_DEFAULT, /* Scan channel 11. */ \ |
Anna Bridge |
160:5571c4ff569f | 917 | LESENSE_CH_CONF_DEFAULT, /* Scan channel 12. */ \ |
Anna Bridge |
160:5571c4ff569f | 918 | LESENSE_CH_CONF_DEFAULT, /* Scan channel 13. */ \ |
Anna Bridge |
160:5571c4ff569f | 919 | LESENSE_CH_CONF_DEFAULT, /* Scan channel 14. */ \ |
Anna Bridge |
160:5571c4ff569f | 920 | LESENSE_CH_CONF_DEFAULT, /* Scan channel 15. */ \ |
Anna Bridge |
160:5571c4ff569f | 921 | } \ |
Anna Bridge |
160:5571c4ff569f | 922 | } |
AnnaBridge | 156:ff21514d8981 | 923 | |
AnnaBridge | 156:ff21514d8981 | 924 | /** Alternate excitation descriptor structure. */ |
Anna Bridge |
160:5571c4ff569f | 925 | typedef struct { |
AnnaBridge | 156:ff21514d8981 | 926 | /** Configure alternate excitation pins. If set, the corresponding alternate |
AnnaBridge | 156:ff21514d8981 | 927 | * excitation pin/signal is enabled. */ |
AnnaBridge | 156:ff21514d8981 | 928 | bool enablePin; |
AnnaBridge | 156:ff21514d8981 | 929 | |
AnnaBridge | 156:ff21514d8981 | 930 | /** Configure idle phase setup of alternate excitation pins. |
Anna Bridge |
160:5571c4ff569f | 931 | The idleConf parameter is not valid when altExMap==lesenseAltExMapACMP. */ |
AnnaBridge | 156:ff21514d8981 | 932 | LESENSE_AltExPinIdle_TypeDef idleConf; |
AnnaBridge | 156:ff21514d8981 | 933 | |
AnnaBridge | 156:ff21514d8981 | 934 | /** Configure how to control the external alternate excitation pins. Only |
Anna Bridge |
160:5571c4ff569f | 935 | * applies if altExMap has been set to lesenseAltExMapALTEX. |
Anna Bridge |
160:5571c4ff569f | 936 | * If true, the excitation happens on the corresponding alternate excitation |
Anna Bridge |
160:5571c4ff569f | 937 | * pin during the excitation periods of all enabled channels. |
Anna Bridge |
160:5571c4ff569f | 938 | * If false, the excitation happens on the corresponding alternate excitation |
Anna Bridge |
160:5571c4ff569f | 939 | * pin ONLY during the excitation period of the corresponding channel. |
Anna Bridge |
160:5571c4ff569f | 940 | * The alwaysEx parameter is not valid when altExMap==lesenseAltExMapACMP. */ |
AnnaBridge | 156:ff21514d8981 | 941 | bool alwaysEx; |
AnnaBridge | 156:ff21514d8981 | 942 | } LESENSE_AltExDesc_TypeDef; |
AnnaBridge | 156:ff21514d8981 | 943 | |
AnnaBridge | 156:ff21514d8981 | 944 | /** Configuration structure for alternate excitation. */ |
Anna Bridge |
160:5571c4ff569f | 945 | typedef struct { |
AnnaBridge | 156:ff21514d8981 | 946 | /** Select alternate excitation mapping. */ |
AnnaBridge | 156:ff21514d8981 | 947 | LESENSE_AltExMap_TypeDef altExMap; |
AnnaBridge | 156:ff21514d8981 | 948 | |
AnnaBridge | 156:ff21514d8981 | 949 | /** Alternate excitation channel descriptors. |
AnnaBridge | 156:ff21514d8981 | 950 | * When altExMap==lesenseAltExMapALTEX only the 8 first descriptors are used. |
AnnaBridge | 156:ff21514d8981 | 951 | * In this mode they describe the configuration of the LES_ALTEX0-7 pins. |
AnnaBridge | 156:ff21514d8981 | 952 | * When altExMap==lesenseAltExMapACMP all 16 descriptors are used. In this |
AnnaBridge | 156:ff21514d8981 | 953 | * mode they describe the configuration of the 16 possible ACMP0-1 excitation |
AnnaBridge | 156:ff21514d8981 | 954 | * channels. Please refer to the user manual for a complete mapping of the |
AnnaBridge | 156:ff21514d8981 | 955 | * routing. |
AnnaBridge | 156:ff21514d8981 | 956 | * NOTE: |
AnnaBridge | 156:ff21514d8981 | 957 | * Some parameters in the descriptors are not valid when |
AnnaBridge | 156:ff21514d8981 | 958 | * altExMap==lesenseAltExMapACMP. Please refer to the definition of the |
AnnaBridge | 156:ff21514d8981 | 959 | * LESENSE_AltExDesc_TypeDef structure for details regarding which parameters |
AnnaBridge | 156:ff21514d8981 | 960 | * are valid. */ |
AnnaBridge | 156:ff21514d8981 | 961 | LESENSE_AltExDesc_TypeDef AltEx[16]; |
AnnaBridge | 156:ff21514d8981 | 962 | } LESENSE_ConfAltEx_TypeDef; |
AnnaBridge | 156:ff21514d8981 | 963 | |
AnnaBridge | 156:ff21514d8981 | 964 | /** Default configuration for alternate excitation channel. */ |
Anna Bridge |
160:5571c4ff569f | 965 | #define LESENSE_ALTEX_CH_CONF_DEFAULT \ |
Anna Bridge |
160:5571c4ff569f | 966 | { \ |
Anna Bridge |
160:5571c4ff569f | 967 | false, /* Alternate excitation disabled.*/ \ |
Anna Bridge |
160:5571c4ff569f | 968 | lesenseAltExPinIdleDis,/* Alternate excitation pin is disabled in idle. */ \ |
Anna Bridge |
160:5571c4ff569f | 969 | false /* Excite only for corresponding channel. */ \ |
Anna Bridge |
160:5571c4ff569f | 970 | } |
AnnaBridge | 156:ff21514d8981 | 971 | |
AnnaBridge | 156:ff21514d8981 | 972 | /** Default configuration for all alternate excitation channels. */ |
AnnaBridge | 156:ff21514d8981 | 973 | #if defined(_LESENSE_CTRL_ALTEXMAP_ACMP) |
Anna Bridge |
160:5571c4ff569f | 974 | #define LESENSE_ALTEX_CONF_DEFAULT \ |
Anna Bridge |
160:5571c4ff569f | 975 | { \ |
Anna Bridge |
160:5571c4ff569f | 976 | lesenseAltExMapACMP, \ |
Anna Bridge |
160:5571c4ff569f | 977 | { \ |
Anna Bridge |
160:5571c4ff569f | 978 | LESENSE_ALTEX_CH_CONF_DEFAULT, /* Alternate excitation channel 0. */ \ |
Anna Bridge |
160:5571c4ff569f | 979 | LESENSE_ALTEX_CH_CONF_DEFAULT, /* Alternate excitation channel 1. */ \ |
Anna Bridge |
160:5571c4ff569f | 980 | LESENSE_ALTEX_CH_CONF_DEFAULT, /* Alternate excitation channel 2. */ \ |
Anna Bridge |
160:5571c4ff569f | 981 | LESENSE_ALTEX_CH_CONF_DEFAULT, /* Alternate excitation channel 3. */ \ |
Anna Bridge |
160:5571c4ff569f | 982 | LESENSE_ALTEX_CH_CONF_DEFAULT, /* Alternate excitation channel 4. */ \ |
Anna Bridge |
160:5571c4ff569f | 983 | LESENSE_ALTEX_CH_CONF_DEFAULT, /* Alternate excitation channel 5. */ \ |
Anna Bridge |
160:5571c4ff569f | 984 | LESENSE_ALTEX_CH_CONF_DEFAULT, /* Alternate excitation channel 6. */ \ |
Anna Bridge |
160:5571c4ff569f | 985 | LESENSE_ALTEX_CH_CONF_DEFAULT, /* Alternate excitation channel 7. */ \ |
Anna Bridge |
160:5571c4ff569f | 986 | LESENSE_ALTEX_CH_CONF_DEFAULT, /* Alternate excitation channel 8. */ \ |
Anna Bridge |
160:5571c4ff569f | 987 | LESENSE_ALTEX_CH_CONF_DEFAULT, /* Alternate excitation channel 9. */ \ |
Anna Bridge |
160:5571c4ff569f | 988 | LESENSE_ALTEX_CH_CONF_DEFAULT, /* Alternate excitation channel 10. */ \ |
Anna Bridge |
160:5571c4ff569f | 989 | LESENSE_ALTEX_CH_CONF_DEFAULT, /* Alternate excitation channel 11. */ \ |
Anna Bridge |
160:5571c4ff569f | 990 | LESENSE_ALTEX_CH_CONF_DEFAULT, /* Alternate excitation channel 12. */ \ |
Anna Bridge |
160:5571c4ff569f | 991 | LESENSE_ALTEX_CH_CONF_DEFAULT, /* Alternate excitation channel 13. */ \ |
Anna Bridge |
160:5571c4ff569f | 992 | LESENSE_ALTEX_CH_CONF_DEFAULT, /* Alternate excitation channel 14. */ \ |
Anna Bridge |
160:5571c4ff569f | 993 | LESENSE_ALTEX_CH_CONF_DEFAULT /* Alternate excitation channel 15. */ \ |
Anna Bridge |
160:5571c4ff569f | 994 | } \ |
Anna Bridge |
160:5571c4ff569f | 995 | } |
AnnaBridge | 156:ff21514d8981 | 996 | #else |
Anna Bridge |
160:5571c4ff569f | 997 | #define LESENSE_ALTEX_CONF_DEFAULT \ |
Anna Bridge |
160:5571c4ff569f | 998 | { \ |
Anna Bridge |
160:5571c4ff569f | 999 | lesenseAltExMapCH, \ |
Anna Bridge |
160:5571c4ff569f | 1000 | { \ |
Anna Bridge |
160:5571c4ff569f | 1001 | LESENSE_ALTEX_CH_CONF_DEFAULT, /* Alternate excitation channel 0. */ \ |
Anna Bridge |
160:5571c4ff569f | 1002 | LESENSE_ALTEX_CH_CONF_DEFAULT, /* Alternate excitation channel 1. */ \ |
Anna Bridge |
160:5571c4ff569f | 1003 | LESENSE_ALTEX_CH_CONF_DEFAULT, /* Alternate excitation channel 2. */ \ |
Anna Bridge |
160:5571c4ff569f | 1004 | LESENSE_ALTEX_CH_CONF_DEFAULT, /* Alternate excitation channel 3. */ \ |
Anna Bridge |
160:5571c4ff569f | 1005 | LESENSE_ALTEX_CH_CONF_DEFAULT, /* Alternate excitation channel 4. */ \ |
Anna Bridge |
160:5571c4ff569f | 1006 | LESENSE_ALTEX_CH_CONF_DEFAULT, /* Alternate excitation channel 5. */ \ |
Anna Bridge |
160:5571c4ff569f | 1007 | LESENSE_ALTEX_CH_CONF_DEFAULT, /* Alternate excitation channel 6. */ \ |
Anna Bridge |
160:5571c4ff569f | 1008 | LESENSE_ALTEX_CH_CONF_DEFAULT, /* Alternate excitation channel 7. */ \ |
Anna Bridge |
160:5571c4ff569f | 1009 | LESENSE_ALTEX_CH_CONF_DEFAULT, /* Alternate excitation channel 8. */ \ |
Anna Bridge |
160:5571c4ff569f | 1010 | LESENSE_ALTEX_CH_CONF_DEFAULT, /* Alternate excitation channel 9. */ \ |
Anna Bridge |
160:5571c4ff569f | 1011 | LESENSE_ALTEX_CH_CONF_DEFAULT, /* Alternate excitation channel 10. */ \ |
Anna Bridge |
160:5571c4ff569f | 1012 | LESENSE_ALTEX_CH_CONF_DEFAULT, /* Alternate excitation channel 11. */ \ |
Anna Bridge |
160:5571c4ff569f | 1013 | LESENSE_ALTEX_CH_CONF_DEFAULT, /* Alternate excitation channel 12. */ \ |
Anna Bridge |
160:5571c4ff569f | 1014 | LESENSE_ALTEX_CH_CONF_DEFAULT, /* Alternate excitation channel 13. */ \ |
Anna Bridge |
160:5571c4ff569f | 1015 | LESENSE_ALTEX_CH_CONF_DEFAULT, /* Alternate excitation channel 14. */ \ |
Anna Bridge |
160:5571c4ff569f | 1016 | LESENSE_ALTEX_CH_CONF_DEFAULT /* Alternate excitation channel 15. */ \ |
Anna Bridge |
160:5571c4ff569f | 1017 | } \ |
Anna Bridge |
160:5571c4ff569f | 1018 | } |
AnnaBridge | 156:ff21514d8981 | 1019 | #endif |
AnnaBridge | 156:ff21514d8981 | 1020 | |
AnnaBridge | 156:ff21514d8981 | 1021 | /** Decoder state condition descriptor structure. */ |
Anna Bridge |
160:5571c4ff569f | 1022 | typedef struct { |
AnnaBridge | 156:ff21514d8981 | 1023 | /** Configure compare value. State transition is triggered when sensor state |
AnnaBridge | 156:ff21514d8981 | 1024 | * equals to this value. Valid range: 0-15 (4 bits). */ |
AnnaBridge | 156:ff21514d8981 | 1025 | uint8_t compVal; |
AnnaBridge | 156:ff21514d8981 | 1026 | |
AnnaBridge | 156:ff21514d8981 | 1027 | /** Configure compare mask. Set bit X to exclude sensor X from evaluation. |
AnnaBridge | 156:ff21514d8981 | 1028 | * Note: decoder can handle sensor inputs from up to 4 sensors, therefore |
AnnaBridge | 156:ff21514d8981 | 1029 | * this mask is 4 bit long. */ |
AnnaBridge | 156:ff21514d8981 | 1030 | uint8_t compMask; |
AnnaBridge | 156:ff21514d8981 | 1031 | |
AnnaBridge | 156:ff21514d8981 | 1032 | /** Configure index of state to be entered if the sensor state equals to |
AnnaBridge | 156:ff21514d8981 | 1033 | * compVal. Valid range: 0-15 (4 bits). */ |
AnnaBridge | 156:ff21514d8981 | 1034 | uint8_t nextState; |
AnnaBridge | 156:ff21514d8981 | 1035 | |
AnnaBridge | 156:ff21514d8981 | 1036 | /** Configure which PRS action to perform when sensor state equals to |
AnnaBridge | 156:ff21514d8981 | 1037 | * compVal. */ |
AnnaBridge | 156:ff21514d8981 | 1038 | LESENSE_StTransAct_TypeDef prsAct; |
AnnaBridge | 156:ff21514d8981 | 1039 | |
AnnaBridge | 156:ff21514d8981 | 1040 | /** If enabled, interrupt flag is set when sensor state equals to compVal. */ |
AnnaBridge | 156:ff21514d8981 | 1041 | bool setInt; |
AnnaBridge | 156:ff21514d8981 | 1042 | } LESENSE_DecStCond_TypeDef; |
AnnaBridge | 156:ff21514d8981 | 1043 | |
AnnaBridge | 156:ff21514d8981 | 1044 | /** Default configuration for decoder state condition. */ |
Anna Bridge |
160:5571c4ff569f | 1045 | #define LESENSE_ST_CONF_DEFAULT \ |
Anna Bridge |
160:5571c4ff569f | 1046 | { \ |
Anna Bridge |
160:5571c4ff569f | 1047 | 0x0FU, /* Compare value set to 0x0F. */ \ |
Anna Bridge |
160:5571c4ff569f | 1048 | 0x00U, /* All decoder inputs masked. */ \ |
Anna Bridge |
160:5571c4ff569f | 1049 | 0U, /* Next state is state 0. */ \ |
Anna Bridge |
160:5571c4ff569f | 1050 | lesenseTransActNone, /* No PRS action performed on compare match. */ \ |
Anna Bridge |
160:5571c4ff569f | 1051 | false /* No interrupt triggered on compare match. */ \ |
Anna Bridge |
160:5571c4ff569f | 1052 | } |
AnnaBridge | 156:ff21514d8981 | 1053 | |
AnnaBridge | 156:ff21514d8981 | 1054 | /** Decoder state x configuration structure. */ |
Anna Bridge |
160:5571c4ff569f | 1055 | typedef struct { |
AnnaBridge | 156:ff21514d8981 | 1056 | /** If enabled, the state descriptor pair in the next location will also be |
AnnaBridge | 156:ff21514d8981 | 1057 | * evaluated. */ |
AnnaBridge | 156:ff21514d8981 | 1058 | bool chainDesc; |
AnnaBridge | 156:ff21514d8981 | 1059 | |
AnnaBridge | 156:ff21514d8981 | 1060 | /** State condition descriptor A (high level descriptor of |
AnnaBridge | 156:ff21514d8981 | 1061 | * LESENSE_STx_DECCONFA). */ |
AnnaBridge | 156:ff21514d8981 | 1062 | LESENSE_DecStCond_TypeDef confA; |
AnnaBridge | 156:ff21514d8981 | 1063 | |
AnnaBridge | 156:ff21514d8981 | 1064 | /** State condition descriptor B (high level descriptor of |
AnnaBridge | 156:ff21514d8981 | 1065 | * LESENSE_STx_DECCONFB). */ |
AnnaBridge | 156:ff21514d8981 | 1066 | LESENSE_DecStCond_TypeDef confB; |
AnnaBridge | 156:ff21514d8981 | 1067 | } LESENSE_DecStDesc_TypeDef; |
AnnaBridge | 156:ff21514d8981 | 1068 | |
AnnaBridge | 156:ff21514d8981 | 1069 | /** Configuration structure for the decoder. */ |
Anna Bridge |
160:5571c4ff569f | 1070 | typedef struct { |
AnnaBridge | 156:ff21514d8981 | 1071 | /** Descriptor of the 16 or 32 decoder states depending on the device. */ |
AnnaBridge | 156:ff21514d8981 | 1072 | LESENSE_DecStDesc_TypeDef St[LESENSE_NUM_DECODER_STATES]; |
AnnaBridge | 156:ff21514d8981 | 1073 | } LESENSE_DecStAll_TypeDef; |
AnnaBridge | 156:ff21514d8981 | 1074 | |
AnnaBridge | 156:ff21514d8981 | 1075 | /** Default configuration for all decoder states. */ |
AnnaBridge | 156:ff21514d8981 | 1076 | #if defined(_SILICON_LABS_32B_SERIES_0) |
Anna Bridge |
160:5571c4ff569f | 1077 | #define LESENSE_DECODER_CONF_DEFAULT \ |
Anna Bridge |
160:5571c4ff569f | 1078 | { /* chain | Descriptor A | Descriptor B */ \ |
Anna Bridge |
160:5571c4ff569f | 1079 | { \ |
Anna Bridge |
160:5571c4ff569f | 1080 | { false, LESENSE_ST_CONF_DEFAULT, LESENSE_ST_CONF_DEFAULT }, /* Decoder state 0. */ \ |
Anna Bridge |
160:5571c4ff569f | 1081 | { false, LESENSE_ST_CONF_DEFAULT, LESENSE_ST_CONF_DEFAULT }, /* Decoder state 1. */ \ |
Anna Bridge |
160:5571c4ff569f | 1082 | { false, LESENSE_ST_CONF_DEFAULT, LESENSE_ST_CONF_DEFAULT }, /* Decoder state 2. */ \ |
Anna Bridge |
160:5571c4ff569f | 1083 | { false, LESENSE_ST_CONF_DEFAULT, LESENSE_ST_CONF_DEFAULT }, /* Decoder state 3. */ \ |
Anna Bridge |
160:5571c4ff569f | 1084 | { false, LESENSE_ST_CONF_DEFAULT, LESENSE_ST_CONF_DEFAULT }, /* Decoder state 4. */ \ |
Anna Bridge |
160:5571c4ff569f | 1085 | { false, LESENSE_ST_CONF_DEFAULT, LESENSE_ST_CONF_DEFAULT }, /* Decoder state 5. */ \ |
Anna Bridge |
160:5571c4ff569f | 1086 | { false, LESENSE_ST_CONF_DEFAULT, LESENSE_ST_CONF_DEFAULT }, /* Decoder state 6. */ \ |
Anna Bridge |
160:5571c4ff569f | 1087 | { false, LESENSE_ST_CONF_DEFAULT, LESENSE_ST_CONF_DEFAULT }, /* Decoder state 7. */ \ |
Anna Bridge |
160:5571c4ff569f | 1088 | { false, LESENSE_ST_CONF_DEFAULT, LESENSE_ST_CONF_DEFAULT }, /* Decoder state 8. */ \ |
Anna Bridge |
160:5571c4ff569f | 1089 | { false, LESENSE_ST_CONF_DEFAULT, LESENSE_ST_CONF_DEFAULT }, /* Decoder state 9. */ \ |
Anna Bridge |
160:5571c4ff569f | 1090 | { false, LESENSE_ST_CONF_DEFAULT, LESENSE_ST_CONF_DEFAULT }, /* Decoder state 10. */ \ |
Anna Bridge |
160:5571c4ff569f | 1091 | { false, LESENSE_ST_CONF_DEFAULT, LESENSE_ST_CONF_DEFAULT }, /* Decoder state 11. */ \ |
Anna Bridge |
160:5571c4ff569f | 1092 | { false, LESENSE_ST_CONF_DEFAULT, LESENSE_ST_CONF_DEFAULT }, /* Decoder state 12. */ \ |
Anna Bridge |
160:5571c4ff569f | 1093 | { false, LESENSE_ST_CONF_DEFAULT, LESENSE_ST_CONF_DEFAULT }, /* Decoder state 13. */ \ |
Anna Bridge |
160:5571c4ff569f | 1094 | { false, LESENSE_ST_CONF_DEFAULT, LESENSE_ST_CONF_DEFAULT }, /* Decoder state 14. */ \ |
Anna Bridge |
160:5571c4ff569f | 1095 | { false, LESENSE_ST_CONF_DEFAULT, LESENSE_ST_CONF_DEFAULT } /* Decoder state 15. */ \ |
Anna Bridge |
160:5571c4ff569f | 1096 | } \ |
Anna Bridge |
160:5571c4ff569f | 1097 | } |
AnnaBridge | 156:ff21514d8981 | 1098 | #else |
Anna Bridge |
160:5571c4ff569f | 1099 | #define LESENSE_DECODER_CONF_DEFAULT \ |
Anna Bridge |
160:5571c4ff569f | 1100 | { /* chain | Descriptor A | Descriptor B */ \ |
Anna Bridge |
160:5571c4ff569f | 1101 | { \ |
Anna Bridge |
160:5571c4ff569f | 1102 | { false, LESENSE_ST_CONF_DEFAULT, LESENSE_ST_CONF_DEFAULT }, /* Decoder state 0. */ \ |
Anna Bridge |
160:5571c4ff569f | 1103 | { false, LESENSE_ST_CONF_DEFAULT, LESENSE_ST_CONF_DEFAULT }, /* Decoder state 1. */ \ |
Anna Bridge |
160:5571c4ff569f | 1104 | { false, LESENSE_ST_CONF_DEFAULT, LESENSE_ST_CONF_DEFAULT }, /* Decoder state 2. */ \ |
Anna Bridge |
160:5571c4ff569f | 1105 | { false, LESENSE_ST_CONF_DEFAULT, LESENSE_ST_CONF_DEFAULT }, /* Decoder state 3. */ \ |
Anna Bridge |
160:5571c4ff569f | 1106 | { false, LESENSE_ST_CONF_DEFAULT, LESENSE_ST_CONF_DEFAULT }, /* Decoder state 4. */ \ |
Anna Bridge |
160:5571c4ff569f | 1107 | { false, LESENSE_ST_CONF_DEFAULT, LESENSE_ST_CONF_DEFAULT }, /* Decoder state 5. */ \ |
Anna Bridge |
160:5571c4ff569f | 1108 | { false, LESENSE_ST_CONF_DEFAULT, LESENSE_ST_CONF_DEFAULT }, /* Decoder state 6. */ \ |
Anna Bridge |
160:5571c4ff569f | 1109 | { false, LESENSE_ST_CONF_DEFAULT, LESENSE_ST_CONF_DEFAULT }, /* Decoder state 7. */ \ |
Anna Bridge |
160:5571c4ff569f | 1110 | { false, LESENSE_ST_CONF_DEFAULT, LESENSE_ST_CONF_DEFAULT }, /* Decoder state 8. */ \ |
Anna Bridge |
160:5571c4ff569f | 1111 | { false, LESENSE_ST_CONF_DEFAULT, LESENSE_ST_CONF_DEFAULT }, /* Decoder state 9. */ \ |
Anna Bridge |
160:5571c4ff569f | 1112 | { false, LESENSE_ST_CONF_DEFAULT, LESENSE_ST_CONF_DEFAULT }, /* Decoder state 10. */ \ |
Anna Bridge |
160:5571c4ff569f | 1113 | { false, LESENSE_ST_CONF_DEFAULT, LESENSE_ST_CONF_DEFAULT }, /* Decoder state 11. */ \ |
Anna Bridge |
160:5571c4ff569f | 1114 | { false, LESENSE_ST_CONF_DEFAULT, LESENSE_ST_CONF_DEFAULT }, /* Decoder state 12. */ \ |
Anna Bridge |
160:5571c4ff569f | 1115 | { false, LESENSE_ST_CONF_DEFAULT, LESENSE_ST_CONF_DEFAULT }, /* Decoder state 13. */ \ |
Anna Bridge |
160:5571c4ff569f | 1116 | { false, LESENSE_ST_CONF_DEFAULT, LESENSE_ST_CONF_DEFAULT }, /* Decoder state 14. */ \ |
Anna Bridge |
160:5571c4ff569f | 1117 | { false, LESENSE_ST_CONF_DEFAULT, LESENSE_ST_CONF_DEFAULT }, /* Decoder state 15. */ \ |
Anna Bridge |
160:5571c4ff569f | 1118 | { false, LESENSE_ST_CONF_DEFAULT, LESENSE_ST_CONF_DEFAULT }, /* Decoder state 16. */ \ |
Anna Bridge |
160:5571c4ff569f | 1119 | { false, LESENSE_ST_CONF_DEFAULT, LESENSE_ST_CONF_DEFAULT }, /* Decoder state 17. */ \ |
Anna Bridge |
160:5571c4ff569f | 1120 | { false, LESENSE_ST_CONF_DEFAULT, LESENSE_ST_CONF_DEFAULT }, /* Decoder state 18. */ \ |
Anna Bridge |
160:5571c4ff569f | 1121 | { false, LESENSE_ST_CONF_DEFAULT, LESENSE_ST_CONF_DEFAULT }, /* Decoder state 19. */ \ |
Anna Bridge |
160:5571c4ff569f | 1122 | { false, LESENSE_ST_CONF_DEFAULT, LESENSE_ST_CONF_DEFAULT }, /* Decoder state 20. */ \ |
Anna Bridge |
160:5571c4ff569f | 1123 | { false, LESENSE_ST_CONF_DEFAULT, LESENSE_ST_CONF_DEFAULT }, /* Decoder state 21. */ \ |
Anna Bridge |
160:5571c4ff569f | 1124 | { false, LESENSE_ST_CONF_DEFAULT, LESENSE_ST_CONF_DEFAULT }, /* Decoder state 22. */ \ |
Anna Bridge |
160:5571c4ff569f | 1125 | { false, LESENSE_ST_CONF_DEFAULT, LESENSE_ST_CONF_DEFAULT }, /* Decoder state 23. */ \ |
Anna Bridge |
160:5571c4ff569f | 1126 | { false, LESENSE_ST_CONF_DEFAULT, LESENSE_ST_CONF_DEFAULT }, /* Decoder state 24. */ \ |
Anna Bridge |
160:5571c4ff569f | 1127 | { false, LESENSE_ST_CONF_DEFAULT, LESENSE_ST_CONF_DEFAULT }, /* Decoder state 25. */ \ |
Anna Bridge |
160:5571c4ff569f | 1128 | { false, LESENSE_ST_CONF_DEFAULT, LESENSE_ST_CONF_DEFAULT }, /* Decoder state 26. */ \ |
Anna Bridge |
160:5571c4ff569f | 1129 | { false, LESENSE_ST_CONF_DEFAULT, LESENSE_ST_CONF_DEFAULT }, /* Decoder state 27. */ \ |
Anna Bridge |
160:5571c4ff569f | 1130 | { false, LESENSE_ST_CONF_DEFAULT, LESENSE_ST_CONF_DEFAULT }, /* Decoder state 28. */ \ |
Anna Bridge |
160:5571c4ff569f | 1131 | { false, LESENSE_ST_CONF_DEFAULT, LESENSE_ST_CONF_DEFAULT }, /* Decoder state 29. */ \ |
Anna Bridge |
160:5571c4ff569f | 1132 | { false, LESENSE_ST_CONF_DEFAULT, LESENSE_ST_CONF_DEFAULT }, /* Decoder state 30. */ \ |
Anna Bridge |
160:5571c4ff569f | 1133 | { false, LESENSE_ST_CONF_DEFAULT, LESENSE_ST_CONF_DEFAULT } /* Decoder state 31. */ \ |
Anna Bridge |
160:5571c4ff569f | 1134 | } \ |
Anna Bridge |
160:5571c4ff569f | 1135 | } |
AnnaBridge | 156:ff21514d8981 | 1136 | #endif |
AnnaBridge | 156:ff21514d8981 | 1137 | |
AnnaBridge | 156:ff21514d8981 | 1138 | /******************************************************************************* |
AnnaBridge | 156:ff21514d8981 | 1139 | ***************************** PROTOTYPES ********************************** |
AnnaBridge | 156:ff21514d8981 | 1140 | ******************************************************************************/ |
AnnaBridge | 156:ff21514d8981 | 1141 | void LESENSE_Init(const LESENSE_Init_TypeDef * init, bool reqReset); |
AnnaBridge | 156:ff21514d8981 | 1142 | void LESENSE_Reset(void); |
AnnaBridge | 156:ff21514d8981 | 1143 | |
AnnaBridge | 156:ff21514d8981 | 1144 | uint32_t LESENSE_ScanFreqSet(uint32_t refFreq, uint32_t scanFreq); |
AnnaBridge | 156:ff21514d8981 | 1145 | void LESENSE_ScanModeSet(LESENSE_ScanMode_TypeDef scanMode, bool start); |
AnnaBridge | 156:ff21514d8981 | 1146 | void LESENSE_StartDelaySet(uint8_t startDelay); |
AnnaBridge | 156:ff21514d8981 | 1147 | void LESENSE_ClkDivSet(LESENSE_ChClk_TypeDef clk, |
AnnaBridge | 156:ff21514d8981 | 1148 | LESENSE_ClkPresc_TypeDef clkDiv); |
AnnaBridge | 156:ff21514d8981 | 1149 | |
AnnaBridge | 156:ff21514d8981 | 1150 | void LESENSE_ChannelAllConfig(const LESENSE_ChAll_TypeDef * confChAll); |
AnnaBridge | 156:ff21514d8981 | 1151 | void LESENSE_ChannelConfig(const LESENSE_ChDesc_TypeDef * confCh, |
AnnaBridge | 156:ff21514d8981 | 1152 | uint32_t chIdx); |
AnnaBridge | 156:ff21514d8981 | 1153 | void LESENSE_ChannelEnable(uint8_t chIdx, |
AnnaBridge | 156:ff21514d8981 | 1154 | bool enaScanCh, |
AnnaBridge | 156:ff21514d8981 | 1155 | bool enaPin); |
AnnaBridge | 156:ff21514d8981 | 1156 | void LESENSE_ChannelEnableMask(uint16_t chMask, uint16_t pinMask); |
AnnaBridge | 156:ff21514d8981 | 1157 | void LESENSE_ChannelTimingSet(uint8_t chIdx, |
AnnaBridge | 156:ff21514d8981 | 1158 | uint8_t exTime, |
AnnaBridge | 156:ff21514d8981 | 1159 | uint8_t sampleDelay, |
AnnaBridge | 156:ff21514d8981 | 1160 | uint16_t measDelay); |
AnnaBridge | 156:ff21514d8981 | 1161 | void LESENSE_ChannelThresSet(uint8_t chIdx, |
AnnaBridge | 156:ff21514d8981 | 1162 | uint16_t acmpThres, |
AnnaBridge | 156:ff21514d8981 | 1163 | uint16_t cntThres); |
AnnaBridge | 156:ff21514d8981 | 1164 | #if defined(_LESENSE_CH_EVAL_MODE_MASK) |
AnnaBridge | 156:ff21514d8981 | 1165 | void LESENSE_ChannelSlidingWindow(uint8_t chIdx, |
AnnaBridge | 156:ff21514d8981 | 1166 | uint32_t windowSize, |
AnnaBridge | 156:ff21514d8981 | 1167 | uint32_t initValue); |
AnnaBridge | 156:ff21514d8981 | 1168 | void LESENSE_ChannelStepDetection(uint8_t chIdx, |
AnnaBridge | 156:ff21514d8981 | 1169 | uint32_t stepSize, |
AnnaBridge | 156:ff21514d8981 | 1170 | uint32_t initValue); |
AnnaBridge | 156:ff21514d8981 | 1171 | void LESENSE_WindowSizeSet(uint32_t windowSize); |
AnnaBridge | 156:ff21514d8981 | 1172 | void LESENSE_StepSizeSet(uint32_t stepSize); |
AnnaBridge | 156:ff21514d8981 | 1173 | #endif |
AnnaBridge | 156:ff21514d8981 | 1174 | |
AnnaBridge | 156:ff21514d8981 | 1175 | void LESENSE_AltExConfig(const LESENSE_ConfAltEx_TypeDef * confAltEx); |
AnnaBridge | 156:ff21514d8981 | 1176 | |
AnnaBridge | 156:ff21514d8981 | 1177 | void LESENSE_DecoderStateAllConfig(const LESENSE_DecStAll_TypeDef * confDecStAll); |
AnnaBridge | 156:ff21514d8981 | 1178 | void LESENSE_DecoderStateConfig(const LESENSE_DecStDesc_TypeDef * confDecSt, |
AnnaBridge | 156:ff21514d8981 | 1179 | uint32_t decSt); |
AnnaBridge | 156:ff21514d8981 | 1180 | void LESENSE_DecoderStateSet(uint32_t decSt); |
AnnaBridge | 156:ff21514d8981 | 1181 | uint32_t LESENSE_DecoderStateGet(void); |
AnnaBridge | 156:ff21514d8981 | 1182 | #if defined(_LESENSE_PRSCTRL_MASK) |
AnnaBridge | 156:ff21514d8981 | 1183 | void LESENSE_DecoderPrsOut(bool enable, uint32_t decMask, uint32_t decCmp); |
AnnaBridge | 156:ff21514d8981 | 1184 | #endif |
AnnaBridge | 156:ff21514d8981 | 1185 | |
AnnaBridge | 156:ff21514d8981 | 1186 | void LESENSE_ScanStart(void); |
AnnaBridge | 156:ff21514d8981 | 1187 | void LESENSE_ScanStop(void); |
AnnaBridge | 156:ff21514d8981 | 1188 | void LESENSE_DecoderStart(void); |
AnnaBridge | 156:ff21514d8981 | 1189 | void LESENSE_ResultBufferClear(void); |
AnnaBridge | 156:ff21514d8981 | 1190 | |
AnnaBridge | 156:ff21514d8981 | 1191 | /***************************************************************************//** |
AnnaBridge | 156:ff21514d8981 | 1192 | * @brief |
AnnaBridge | 156:ff21514d8981 | 1193 | * Stop LESENSE decoder. |
AnnaBridge | 156:ff21514d8981 | 1194 | * |
AnnaBridge | 156:ff21514d8981 | 1195 | * @details |
AnnaBridge | 156:ff21514d8981 | 1196 | * This function disables the LESENSE decoder by setting the command to the |
AnnaBridge | 156:ff21514d8981 | 1197 | * LESENSE_DECCTRL register. |
AnnaBridge | 156:ff21514d8981 | 1198 | ******************************************************************************/ |
AnnaBridge | 156:ff21514d8981 | 1199 | __STATIC_INLINE void LESENSE_DecoderStop(void) |
AnnaBridge | 156:ff21514d8981 | 1200 | { |
AnnaBridge | 156:ff21514d8981 | 1201 | /* Stop the decoder */ |
AnnaBridge | 156:ff21514d8981 | 1202 | LESENSE->DECCTRL |= LESENSE_DECCTRL_DISABLE; |
AnnaBridge | 156:ff21514d8981 | 1203 | } |
AnnaBridge | 156:ff21514d8981 | 1204 | |
AnnaBridge | 156:ff21514d8981 | 1205 | /***************************************************************************//** |
AnnaBridge | 156:ff21514d8981 | 1206 | * @brief |
AnnaBridge | 156:ff21514d8981 | 1207 | * Get the current status of LESENSE. |
AnnaBridge | 156:ff21514d8981 | 1208 | * |
AnnaBridge | 156:ff21514d8981 | 1209 | * @return |
AnnaBridge | 156:ff21514d8981 | 1210 | * This function returns the value of LESENSE_STATUS register that |
AnnaBridge | 156:ff21514d8981 | 1211 | * contains the OR combination of the following status bits: |
AnnaBridge | 156:ff21514d8981 | 1212 | * @li LESENSE_STATUS_RESV - Result data valid. Set when data is available |
AnnaBridge | 156:ff21514d8981 | 1213 | * in the result buffer. Cleared when the buffer is empty. |
AnnaBridge | 156:ff21514d8981 | 1214 | * @li LESENSE_STATUS_RESFULL - Result buffer full. Set when the result |
AnnaBridge | 156:ff21514d8981 | 1215 | * buffer is full. |
AnnaBridge | 156:ff21514d8981 | 1216 | * @li LESENSE_STATUS_RUNNING - LESENSE is active. |
AnnaBridge | 156:ff21514d8981 | 1217 | * @li LESENSE_STATUS_SCANACTIVE - LESENSE is currently interfacing sensors. |
AnnaBridge | 156:ff21514d8981 | 1218 | ******************************************************************************/ |
AnnaBridge | 156:ff21514d8981 | 1219 | __STATIC_INLINE uint32_t LESENSE_StatusGet(void) |
AnnaBridge | 156:ff21514d8981 | 1220 | { |
AnnaBridge | 156:ff21514d8981 | 1221 | return LESENSE->STATUS; |
AnnaBridge | 156:ff21514d8981 | 1222 | } |
AnnaBridge | 156:ff21514d8981 | 1223 | |
AnnaBridge | 156:ff21514d8981 | 1224 | /***************************************************************************//** |
AnnaBridge | 156:ff21514d8981 | 1225 | * @brief |
AnnaBridge | 156:ff21514d8981 | 1226 | * Wait until the status of LESENSE is equal to what requested. |
AnnaBridge | 156:ff21514d8981 | 1227 | * |
AnnaBridge | 156:ff21514d8981 | 1228 | * @details |
AnnaBridge | 156:ff21514d8981 | 1229 | * This function is polling the LESENSE_STATUS register and waits until the |
AnnaBridge | 156:ff21514d8981 | 1230 | * requested combination of flags are set. |
AnnaBridge | 156:ff21514d8981 | 1231 | * |
AnnaBridge | 156:ff21514d8981 | 1232 | * @param[in] flag |
AnnaBridge | 156:ff21514d8981 | 1233 | * The OR combination of the following status bits: |
AnnaBridge | 156:ff21514d8981 | 1234 | * @li LESENSE_STATUS_BUFDATAV - Result data valid. Set when data is available |
AnnaBridge | 156:ff21514d8981 | 1235 | * in the result buffer. Cleared when the buffer is empty. |
AnnaBridge | 156:ff21514d8981 | 1236 | * @li LESENSE_STATUS_BUFHALFFULL - Result buffer half full. Set when the |
AnnaBridge | 156:ff21514d8981 | 1237 | * result buffer is half full. |
AnnaBridge | 156:ff21514d8981 | 1238 | * @li LESENSE_STATUS_BUFFULL - Result buffer full. Set when the result |
AnnaBridge | 156:ff21514d8981 | 1239 | * buffer is full. |
AnnaBridge | 156:ff21514d8981 | 1240 | * @li LESENSE_STATUS_RUNNING - LESENSE is active. |
AnnaBridge | 156:ff21514d8981 | 1241 | * @li LESENSE_STATUS_SCANACTIVE - LESENSE is currently interfacing sensors. |
AnnaBridge | 156:ff21514d8981 | 1242 | * @li LESENSE_STATUS_DACACTIVE - The DAC interface is currently active. |
AnnaBridge | 156:ff21514d8981 | 1243 | ******************************************************************************/ |
AnnaBridge | 156:ff21514d8981 | 1244 | __STATIC_INLINE void LESENSE_StatusWait(uint32_t flag) |
AnnaBridge | 156:ff21514d8981 | 1245 | { |
AnnaBridge | 156:ff21514d8981 | 1246 | while (!(LESENSE->STATUS & flag)) |
AnnaBridge | 156:ff21514d8981 | 1247 | ; |
AnnaBridge | 156:ff21514d8981 | 1248 | } |
AnnaBridge | 156:ff21514d8981 | 1249 | |
AnnaBridge | 156:ff21514d8981 | 1250 | /***************************************************************************//** |
AnnaBridge | 156:ff21514d8981 | 1251 | * @brief |
AnnaBridge | 156:ff21514d8981 | 1252 | * Get the currently active channel index. |
AnnaBridge | 156:ff21514d8981 | 1253 | * |
AnnaBridge | 156:ff21514d8981 | 1254 | * @return |
AnnaBridge | 156:ff21514d8981 | 1255 | * This function returns the value of LESENSE_CHINDEX register that |
AnnaBridge | 156:ff21514d8981 | 1256 | * contains the index of the currently active channel (0-15). |
AnnaBridge | 156:ff21514d8981 | 1257 | ******************************************************************************/ |
AnnaBridge | 156:ff21514d8981 | 1258 | __STATIC_INLINE uint32_t LESENSE_ChannelActiveGet(void) |
AnnaBridge | 156:ff21514d8981 | 1259 | { |
AnnaBridge | 156:ff21514d8981 | 1260 | return LESENSE->CURCH; |
AnnaBridge | 156:ff21514d8981 | 1261 | } |
AnnaBridge | 156:ff21514d8981 | 1262 | |
AnnaBridge | 156:ff21514d8981 | 1263 | /***************************************************************************//** |
AnnaBridge | 156:ff21514d8981 | 1264 | * @brief |
AnnaBridge | 156:ff21514d8981 | 1265 | * Get the latest scan comparison result (1 bit / channel). |
AnnaBridge | 156:ff21514d8981 | 1266 | * |
AnnaBridge | 156:ff21514d8981 | 1267 | * @return |
AnnaBridge | 156:ff21514d8981 | 1268 | * This function returns the value of LESENSE_SCANRES register that |
AnnaBridge | 156:ff21514d8981 | 1269 | * contains the comparison result of the last scan on all channels. |
AnnaBridge | 156:ff21514d8981 | 1270 | * Bit x is set if a comparison triggered on channel x, which means that the |
AnnaBridge | 156:ff21514d8981 | 1271 | * LESENSE counter met the comparison criteria set in LESENSE_CHx_EVAL by |
AnnaBridge | 156:ff21514d8981 | 1272 | * COMPMODE and CNTTHRES. |
AnnaBridge | 156:ff21514d8981 | 1273 | ******************************************************************************/ |
AnnaBridge | 156:ff21514d8981 | 1274 | __STATIC_INLINE uint32_t LESENSE_ScanResultGet(void) |
AnnaBridge | 156:ff21514d8981 | 1275 | { |
AnnaBridge | 156:ff21514d8981 | 1276 | return LESENSE->SCANRES & _LESENSE_SCANRES_SCANRES_MASK; |
AnnaBridge | 156:ff21514d8981 | 1277 | } |
AnnaBridge | 156:ff21514d8981 | 1278 | |
AnnaBridge | 156:ff21514d8981 | 1279 | /***************************************************************************//** |
AnnaBridge | 156:ff21514d8981 | 1280 | * @brief |
AnnaBridge | 156:ff21514d8981 | 1281 | * Get the oldest unread data from the result buffer. |
AnnaBridge | 156:ff21514d8981 | 1282 | * |
AnnaBridge | 156:ff21514d8981 | 1283 | * @note |
AnnaBridge | 156:ff21514d8981 | 1284 | * Make sure that the STORERES bit is set in LESENSE_CHx_EVAL, or |
AnnaBridge | 156:ff21514d8981 | 1285 | * STRSCANRES bit is set in LESENSE_CTRL, otherwise this function will return |
AnnaBridge | 156:ff21514d8981 | 1286 | * undefined value. |
AnnaBridge | 156:ff21514d8981 | 1287 | * |
AnnaBridge | 156:ff21514d8981 | 1288 | * @return |
AnnaBridge | 156:ff21514d8981 | 1289 | * This function returns the value of LESENSE_RESDATA register that |
AnnaBridge | 156:ff21514d8981 | 1290 | * contains the oldest unread counter result from the result buffer. |
AnnaBridge | 156:ff21514d8981 | 1291 | ******************************************************************************/ |
AnnaBridge | 156:ff21514d8981 | 1292 | __STATIC_INLINE uint32_t LESENSE_ScanResultDataGet(void) |
AnnaBridge | 156:ff21514d8981 | 1293 | { |
AnnaBridge | 156:ff21514d8981 | 1294 | return LESENSE->BUFDATA; |
AnnaBridge | 156:ff21514d8981 | 1295 | } |
AnnaBridge | 156:ff21514d8981 | 1296 | |
AnnaBridge | 156:ff21514d8981 | 1297 | /***************************************************************************//** |
AnnaBridge | 156:ff21514d8981 | 1298 | * @brief |
AnnaBridge | 156:ff21514d8981 | 1299 | * Get data from the result data buffer. |
AnnaBridge | 156:ff21514d8981 | 1300 | * |
AnnaBridge | 156:ff21514d8981 | 1301 | * @note |
AnnaBridge | 156:ff21514d8981 | 1302 | * Make sure that the STORERES bit is set in LESENSE_CHx_EVAL, or |
AnnaBridge | 156:ff21514d8981 | 1303 | * STRSCANRES bit is set in LESENSE_CTRL, otherwise this function will return |
AnnaBridge | 156:ff21514d8981 | 1304 | * undefined value. |
AnnaBridge | 156:ff21514d8981 | 1305 | * |
AnnaBridge | 156:ff21514d8981 | 1306 | * @param[in] idx |
AnnaBridge | 156:ff21514d8981 | 1307 | * Result data buffer index. Valid range: 0-15. |
AnnaBridge | 156:ff21514d8981 | 1308 | * |
AnnaBridge | 156:ff21514d8981 | 1309 | * @return |
AnnaBridge | 156:ff21514d8981 | 1310 | * This function returns the selected word from the result data buffer. |
AnnaBridge | 156:ff21514d8981 | 1311 | ******************************************************************************/ |
AnnaBridge | 156:ff21514d8981 | 1312 | __STATIC_INLINE uint32_t LESENSE_ScanResultDataBufferGet(uint32_t idx) |
AnnaBridge | 156:ff21514d8981 | 1313 | { |
AnnaBridge | 156:ff21514d8981 | 1314 | /* Note: masking is needed to avoid over-indexing! */ |
AnnaBridge | 156:ff21514d8981 | 1315 | return LESENSE->BUF[idx & 0x0FU].DATA; |
AnnaBridge | 156:ff21514d8981 | 1316 | } |
AnnaBridge | 156:ff21514d8981 | 1317 | |
AnnaBridge | 156:ff21514d8981 | 1318 | /***************************************************************************//** |
AnnaBridge | 156:ff21514d8981 | 1319 | * @brief |
AnnaBridge | 156:ff21514d8981 | 1320 | * Get the current state of the LESENSE sensor. |
AnnaBridge | 156:ff21514d8981 | 1321 | * |
AnnaBridge | 156:ff21514d8981 | 1322 | * @return |
AnnaBridge | 156:ff21514d8981 | 1323 | * This function returns the value of LESENSE_SENSORSTATE register that |
AnnaBridge | 156:ff21514d8981 | 1324 | * represents the current state of the LESENSE sensor. |
AnnaBridge | 156:ff21514d8981 | 1325 | ******************************************************************************/ |
AnnaBridge | 156:ff21514d8981 | 1326 | __STATIC_INLINE uint32_t LESENSE_SensorStateGet(void) |
AnnaBridge | 156:ff21514d8981 | 1327 | { |
AnnaBridge | 156:ff21514d8981 | 1328 | return LESENSE->SENSORSTATE; |
AnnaBridge | 156:ff21514d8981 | 1329 | } |
AnnaBridge | 156:ff21514d8981 | 1330 | |
AnnaBridge | 156:ff21514d8981 | 1331 | #if defined(LESENSE_POWERDOWN_RAM) |
AnnaBridge | 156:ff21514d8981 | 1332 | /***************************************************************************//** |
AnnaBridge | 156:ff21514d8981 | 1333 | * @brief |
AnnaBridge | 156:ff21514d8981 | 1334 | * Shut off power to the LESENSE RAM, disables LESENSE. |
AnnaBridge | 156:ff21514d8981 | 1335 | * |
AnnaBridge | 156:ff21514d8981 | 1336 | * @details |
AnnaBridge | 156:ff21514d8981 | 1337 | * This function shuts off the LESENSE RAM in order to decrease the leakage |
AnnaBridge | 156:ff21514d8981 | 1338 | * current of the mcu if LESENSE is not used in your application. |
AnnaBridge | 156:ff21514d8981 | 1339 | * |
AnnaBridge | 156:ff21514d8981 | 1340 | * @note |
AnnaBridge | 156:ff21514d8981 | 1341 | * Warning! Once the LESENSE RAM is powered down, it cannot be powered up |
AnnaBridge | 156:ff21514d8981 | 1342 | * again. |
AnnaBridge | 156:ff21514d8981 | 1343 | ******************************************************************************/ |
AnnaBridge | 156:ff21514d8981 | 1344 | __STATIC_INLINE void LESENSE_RAMPowerDown(void) |
AnnaBridge | 156:ff21514d8981 | 1345 | { |
AnnaBridge | 156:ff21514d8981 | 1346 | /* Power down LESENSE RAM */ |
AnnaBridge | 156:ff21514d8981 | 1347 | LESENSE->POWERDOWN = LESENSE_POWERDOWN_RAM; |
AnnaBridge | 156:ff21514d8981 | 1348 | } |
AnnaBridge | 156:ff21514d8981 | 1349 | #endif |
AnnaBridge | 156:ff21514d8981 | 1350 | |
AnnaBridge | 156:ff21514d8981 | 1351 | /***************************************************************************//** |
AnnaBridge | 156:ff21514d8981 | 1352 | * @brief |
AnnaBridge | 156:ff21514d8981 | 1353 | * Clear one or more pending LESENSE interrupts. |
AnnaBridge | 156:ff21514d8981 | 1354 | * |
AnnaBridge | 156:ff21514d8981 | 1355 | * @param[in] flags |
AnnaBridge | 156:ff21514d8981 | 1356 | * Pending LESENSE interrupt sources to clear. Use a set of interrupt flags |
AnnaBridge | 156:ff21514d8981 | 1357 | * OR-ed together to clear multiple interrupt sources of the LESENSE module |
AnnaBridge | 156:ff21514d8981 | 1358 | * (LESENSE_IF_nnn). |
AnnaBridge | 156:ff21514d8981 | 1359 | ******************************************************************************/ |
AnnaBridge | 156:ff21514d8981 | 1360 | __STATIC_INLINE void LESENSE_IntClear(uint32_t flags) |
AnnaBridge | 156:ff21514d8981 | 1361 | { |
AnnaBridge | 156:ff21514d8981 | 1362 | LESENSE->IFC = flags; |
AnnaBridge | 156:ff21514d8981 | 1363 | } |
AnnaBridge | 156:ff21514d8981 | 1364 | |
AnnaBridge | 156:ff21514d8981 | 1365 | /***************************************************************************//** |
AnnaBridge | 156:ff21514d8981 | 1366 | * @brief |
AnnaBridge | 156:ff21514d8981 | 1367 | * Enable one or more LESENSE interrupts. |
AnnaBridge | 156:ff21514d8981 | 1368 | * |
AnnaBridge | 156:ff21514d8981 | 1369 | * @param[in] flags |
AnnaBridge | 156:ff21514d8981 | 1370 | * LESENSE interrupt sources to enable. Use a set of interrupt flags OR-ed |
AnnaBridge | 156:ff21514d8981 | 1371 | * together to enable multiple interrupt sources of the LESENSE module |
AnnaBridge | 156:ff21514d8981 | 1372 | * (LESENSE_IF_nnn). |
AnnaBridge | 156:ff21514d8981 | 1373 | ******************************************************************************/ |
AnnaBridge | 156:ff21514d8981 | 1374 | __STATIC_INLINE void LESENSE_IntEnable(uint32_t flags) |
AnnaBridge | 156:ff21514d8981 | 1375 | { |
AnnaBridge | 156:ff21514d8981 | 1376 | LESENSE->IEN |= flags; |
AnnaBridge | 156:ff21514d8981 | 1377 | } |
AnnaBridge | 156:ff21514d8981 | 1378 | |
AnnaBridge | 156:ff21514d8981 | 1379 | /***************************************************************************//** |
AnnaBridge | 156:ff21514d8981 | 1380 | * @brief |
AnnaBridge | 156:ff21514d8981 | 1381 | * Disable one or more LESENSE interrupts. |
AnnaBridge | 156:ff21514d8981 | 1382 | * |
AnnaBridge | 156:ff21514d8981 | 1383 | * @param[in] flags |
AnnaBridge | 156:ff21514d8981 | 1384 | * LESENSE interrupt sources to disable. Use a set of interrupt flags OR-ed |
AnnaBridge | 156:ff21514d8981 | 1385 | * together to disable multiple interrupt sources of the LESENSE module |
AnnaBridge | 156:ff21514d8981 | 1386 | * (LESENSE_IF_nnn). |
AnnaBridge | 156:ff21514d8981 | 1387 | ******************************************************************************/ |
AnnaBridge | 156:ff21514d8981 | 1388 | __STATIC_INLINE void LESENSE_IntDisable(uint32_t flags) |
AnnaBridge | 156:ff21514d8981 | 1389 | { |
AnnaBridge | 156:ff21514d8981 | 1390 | LESENSE->IEN &= ~flags; |
AnnaBridge | 156:ff21514d8981 | 1391 | } |
AnnaBridge | 156:ff21514d8981 | 1392 | |
AnnaBridge | 156:ff21514d8981 | 1393 | /***************************************************************************//** |
AnnaBridge | 156:ff21514d8981 | 1394 | * @brief |
AnnaBridge | 156:ff21514d8981 | 1395 | * Set one or more pending LESENSE interrupts from SW. |
AnnaBridge | 156:ff21514d8981 | 1396 | * |
AnnaBridge | 156:ff21514d8981 | 1397 | * @param[in] flags |
AnnaBridge | 156:ff21514d8981 | 1398 | * LESENSE interrupt sources to set to pending. Use a set of interrupt |
AnnaBridge | 156:ff21514d8981 | 1399 | * flags OR-ed together to set multiple interrupt sources of the LESENSE |
AnnaBridge | 156:ff21514d8981 | 1400 | * module (LESENSE_IFS_nnn). |
AnnaBridge | 156:ff21514d8981 | 1401 | ******************************************************************************/ |
AnnaBridge | 156:ff21514d8981 | 1402 | __STATIC_INLINE void LESENSE_IntSet(uint32_t flags) |
AnnaBridge | 156:ff21514d8981 | 1403 | { |
AnnaBridge | 156:ff21514d8981 | 1404 | LESENSE->IFS = flags; |
AnnaBridge | 156:ff21514d8981 | 1405 | } |
AnnaBridge | 156:ff21514d8981 | 1406 | |
AnnaBridge | 156:ff21514d8981 | 1407 | /***************************************************************************//** |
AnnaBridge | 156:ff21514d8981 | 1408 | * @brief |
AnnaBridge | 156:ff21514d8981 | 1409 | * Get pending LESENSE interrupt flags. |
AnnaBridge | 156:ff21514d8981 | 1410 | * |
AnnaBridge | 156:ff21514d8981 | 1411 | * @note |
AnnaBridge | 156:ff21514d8981 | 1412 | * The event bits are not cleared by the use of this function. |
AnnaBridge | 156:ff21514d8981 | 1413 | * |
AnnaBridge | 156:ff21514d8981 | 1414 | * @return |
AnnaBridge | 156:ff21514d8981 | 1415 | * Pending LESENSE interrupt sources. The OR combination of valid interrupt |
AnnaBridge | 156:ff21514d8981 | 1416 | * flags of the LESENSE module (LESENSE_IF_nnn). |
AnnaBridge | 156:ff21514d8981 | 1417 | ******************************************************************************/ |
AnnaBridge | 156:ff21514d8981 | 1418 | __STATIC_INLINE uint32_t LESENSE_IntGet(void) |
AnnaBridge | 156:ff21514d8981 | 1419 | { |
AnnaBridge | 156:ff21514d8981 | 1420 | return LESENSE->IF; |
AnnaBridge | 156:ff21514d8981 | 1421 | } |
AnnaBridge | 156:ff21514d8981 | 1422 | |
AnnaBridge | 156:ff21514d8981 | 1423 | /***************************************************************************//** |
AnnaBridge | 156:ff21514d8981 | 1424 | * @brief |
AnnaBridge | 156:ff21514d8981 | 1425 | * Get enabled and pending LESENSE interrupt flags. |
AnnaBridge | 156:ff21514d8981 | 1426 | * |
AnnaBridge | 156:ff21514d8981 | 1427 | * @details |
AnnaBridge | 156:ff21514d8981 | 1428 | * Useful for handling more interrupt sources in the same interrupt handler. |
AnnaBridge | 156:ff21514d8981 | 1429 | * |
AnnaBridge | 156:ff21514d8981 | 1430 | * @note |
AnnaBridge | 156:ff21514d8981 | 1431 | * The event bits are not cleared by the use of this function. |
AnnaBridge | 156:ff21514d8981 | 1432 | * |
AnnaBridge | 156:ff21514d8981 | 1433 | * @return |
AnnaBridge | 156:ff21514d8981 | 1434 | * Pending and enabled LESENSE interrupt sources. |
AnnaBridge | 156:ff21514d8981 | 1435 | * The return value is the bitwise AND combination of |
AnnaBridge | 156:ff21514d8981 | 1436 | * - the OR combination of enabled interrupt sources in LESENSE_IEN_nnn |
AnnaBridge | 156:ff21514d8981 | 1437 | * register (LESENSE_IEN_nnn) and |
AnnaBridge | 156:ff21514d8981 | 1438 | * - the OR combination of valid interrupt flags of the LESENSE module |
AnnaBridge | 156:ff21514d8981 | 1439 | * (LESENSE_IF_nnn). |
AnnaBridge | 156:ff21514d8981 | 1440 | ******************************************************************************/ |
AnnaBridge | 156:ff21514d8981 | 1441 | __STATIC_INLINE uint32_t LESENSE_IntGetEnabled(void) |
AnnaBridge | 156:ff21514d8981 | 1442 | { |
AnnaBridge | 156:ff21514d8981 | 1443 | uint32_t tmp; |
AnnaBridge | 156:ff21514d8981 | 1444 | |
AnnaBridge | 156:ff21514d8981 | 1445 | /* Store LESENSE->IEN in temporary variable in order to define explicit order |
AnnaBridge | 156:ff21514d8981 | 1446 | * of volatile accesses. */ |
AnnaBridge | 156:ff21514d8981 | 1447 | tmp = LESENSE->IEN; |
AnnaBridge | 156:ff21514d8981 | 1448 | |
AnnaBridge | 156:ff21514d8981 | 1449 | /* Bitwise AND of pending and enabled interrupts */ |
AnnaBridge | 156:ff21514d8981 | 1450 | return LESENSE->IF & tmp; |
AnnaBridge | 156:ff21514d8981 | 1451 | } |
AnnaBridge | 156:ff21514d8981 | 1452 | |
AnnaBridge | 156:ff21514d8981 | 1453 | /** @} (end addtogroup LESENSE) */ |
AnnaBridge | 156:ff21514d8981 | 1454 | /** @} (end addtogroup emlib) */ |
AnnaBridge | 156:ff21514d8981 | 1455 | |
AnnaBridge | 156:ff21514d8981 | 1456 | #ifdef __cplusplus |
AnnaBridge | 156:ff21514d8981 | 1457 | } |
AnnaBridge | 156:ff21514d8981 | 1458 | #endif |
AnnaBridge | 156:ff21514d8981 | 1459 | |
AnnaBridge | 156:ff21514d8981 | 1460 | #endif /* defined(LESENSE_COUNT) && (LESENSE_COUNT > 0) */ |
AnnaBridge | 156:ff21514d8981 | 1461 | |
AnnaBridge | 156:ff21514d8981 | 1462 | #endif /* EM_LESENSE_H */ |