1 //----------------------------------------------------------------------------- 2 // Copyright 2012 (c) Silicon Laboratories Inc. 3 // 4 // SPDX-License-Identifier: Zlib 5 // 6 // This siHAL software is provided 'as-is', without any express or implied 7 // warranty. In no event will the authors be held liable for any damages 8 // arising from the use of this software. 9 // 10 // Permission is granted to anyone to use this software for any purpose, 11 // including commercial applications, and to alter it and redistribute it 12 // freely, subject to the following restrictions: 13 // 14 // 1. The origin of this software must not be misrepresented; you must not 15 // claim that you wrote the original software. If you use this software 16 // in a product, an acknowledgment in the product documentation would be 17 // appreciated but is not required. 18 // 2. Altered source versions must be plainly marked as such, and must not be 19 // misrepresented as being the original software. 20 // 3. This notice may not be removed or altered from any source distribution. 21 //----------------------------------------------------------------------------- 22 // 23 // Script: 0.62 24 // Version: 1 25 26 #ifndef __SI32_ACCTR_A_REGISTERS_H__ 27 #define __SI32_ACCTR_A_REGISTERS_H__ 28 29 #include <stdint.h> 30 31 #ifdef __cplusplus 32 extern "C" { 33 #endif 34 35 struct SI32_ACCTR_A_CONFIG_Struct 36 { 37 union 38 { 39 struct 40 { 41 // Write Update Status Flag 42 volatile uint32_t UPDSTSF: 1; 43 uint32_t reserved0: 4; 44 // Debug Signal Select 45 volatile uint32_t DBGSEL: 3; 46 uint32_t reserved1: 16; 47 // Flutter Quadrature-to-Dual Switch Enable 48 volatile uint32_t FLQDEN: 1; 49 // Flutter Stop Enable 50 volatile uint32_t FLSTPEN: 1; 51 uint32_t reserved2: 3; 52 // Topology Mode 53 volatile uint32_t TOPMD: 1; 54 // Pulse Counter Mode 55 volatile uint32_t PCMD: 2; 56 }; 57 volatile uint32_t U32; 58 }; 59 }; 60 61 #define SI32_ACCTR_A_CONFIG_UPDSTSF_MASK 0x00000001 62 #define SI32_ACCTR_A_CONFIG_UPDSTSF_SHIFT 0 63 // An internal pulse counter register update is not in progress. 64 #define SI32_ACCTR_A_CONFIG_UPDSTSF_NOT_SET_VALUE 0 65 #define SI32_ACCTR_A_CONFIG_UPDSTSF_NOT_SET_U32 \ 66 (SI32_ACCTR_A_CONFIG_UPDSTSF_NOT_SET_VALUE << SI32_ACCTR_A_CONFIG_UPDSTSF_SHIFT) 67 // An internal pulse counter register update is in progress. 68 #define SI32_ACCTR_A_CONFIG_UPDSTSF_SET_VALUE 1 69 #define SI32_ACCTR_A_CONFIG_UPDSTSF_SET_U32 \ 70 (SI32_ACCTR_A_CONFIG_UPDSTSF_SET_VALUE << SI32_ACCTR_A_CONFIG_UPDSTSF_SHIFT) 71 72 #define SI32_ACCTR_A_CONFIG_DBGSEL_MASK 0x000000E0 73 #define SI32_ACCTR_A_CONFIG_DBGSEL_SHIFT 5 74 // No debug signals output. 75 #define SI32_ACCTR_A_CONFIG_DBGSEL_NONE_VALUE 0 76 #define SI32_ACCTR_A_CONFIG_DBGSEL_NONE_U32 \ 77 (SI32_ACCTR_A_CONFIG_DBGSEL_NONE_VALUE << SI32_ACCTR_A_CONFIG_DBGSEL_SHIFT) 78 // (LC Mode) DBG0 = CMP0OUT, DBG1 = CMP1OUT. 79 #define SI32_ACCTR_A_CONFIG_DBGSEL_LCC0_LCC1_VALUE 1 80 #define SI32_ACCTR_A_CONFIG_DBGSEL_LCC0_LCC1_U32 \ 81 (SI32_ACCTR_A_CONFIG_DBGSEL_LCC0_LCC1_VALUE << SI32_ACCTR_A_CONFIG_DBGSEL_SHIFT) 82 // (LC Mode) DBG0 = CMP0OUT, DBG1 = INTEG0. 83 #define SI32_ACCTR_A_CONFIG_DBGSEL_LCC0_INT0_VALUE 2 84 #define SI32_ACCTR_A_CONFIG_DBGSEL_LCC0_INT0_U32 \ 85 (SI32_ACCTR_A_CONFIG_DBGSEL_LCC0_INT0_VALUE << SI32_ACCTR_A_CONFIG_DBGSEL_SHIFT) 86 // (LC Mode) DBG0 = CMP1OUT, DBG1 = INTEG1. 87 #define SI32_ACCTR_A_CONFIG_DBGSEL_LCC1_INT1_VALUE 3 88 #define SI32_ACCTR_A_CONFIG_DBGSEL_LCC1_INT1_U32 \ 89 (SI32_ACCTR_A_CONFIG_DBGSEL_LCC1_INT1_VALUE << SI32_ACCTR_A_CONFIG_DBGSEL_SHIFT) 90 // (Any Mode) DBG0 = INTEG0 DBG1 = INTEG1. 91 #define SI32_ACCTR_A_CONFIG_DBGSEL_INT0_INT1_VALUE 4 92 #define SI32_ACCTR_A_CONFIG_DBGSEL_INT0_INT1_U32 \ 93 (SI32_ACCTR_A_CONFIG_DBGSEL_INT0_INT1_VALUE << SI32_ACCTR_A_CONFIG_DBGSEL_SHIFT) 94 // (Switch Mode) DBG0 = CMP0OUT, DBG1 = CMP1OUT. 95 #define SI32_ACCTR_A_CONFIG_DBGSEL_CMP0_CMP1_VALUE 5 96 #define SI32_ACCTR_A_CONFIG_DBGSEL_CMP0_CMP1_U32 \ 97 (SI32_ACCTR_A_CONFIG_DBGSEL_CMP0_CMP1_VALUE << SI32_ACCTR_A_CONFIG_DBGSEL_SHIFT) 98 // (Switch Mode) DBG0 = CMP0OUT, DBG1 = INTEG0. 99 #define SI32_ACCTR_A_CONFIG_DBGSEL_CMP0_INT0_VALUE 6 100 #define SI32_ACCTR_A_CONFIG_DBGSEL_CMP0_INT0_U32 \ 101 (SI32_ACCTR_A_CONFIG_DBGSEL_CMP0_INT0_VALUE << SI32_ACCTR_A_CONFIG_DBGSEL_SHIFT) 102 // (Switch Mode) DBG0= CMP1OUT, DBG1 = INTEG1. 103 #define SI32_ACCTR_A_CONFIG_DBGSEL_CMP1_INT1_VALUE 7 104 #define SI32_ACCTR_A_CONFIG_DBGSEL_CMP1_INT1_U32 \ 105 (SI32_ACCTR_A_CONFIG_DBGSEL_CMP1_INT1_VALUE << SI32_ACCTR_A_CONFIG_DBGSEL_SHIFT) 106 107 #define SI32_ACCTR_A_CONFIG_FLQDEN_MASK 0x01000000 108 #define SI32_ACCTR_A_CONFIG_FLQDEN_SHIFT 24 109 // The pulse counter remains in quadrature mode during a flutter event. 110 #define SI32_ACCTR_A_CONFIG_FLQDEN_DISABLED_VALUE 0 111 #define SI32_ACCTR_A_CONFIG_FLQDEN_DISABLED_U32 \ 112 (SI32_ACCTR_A_CONFIG_FLQDEN_DISABLED_VALUE << SI32_ACCTR_A_CONFIG_FLQDEN_SHIFT) 113 // The pulse counter switches from quadrature mode to dual mode during a flutter 114 // event. 115 #define SI32_ACCTR_A_CONFIG_FLQDEN_ENABLED_VALUE 1 116 #define SI32_ACCTR_A_CONFIG_FLQDEN_ENABLED_U32 \ 117 (SI32_ACCTR_A_CONFIG_FLQDEN_ENABLED_VALUE << SI32_ACCTR_A_CONFIG_FLQDEN_SHIFT) 118 119 #define SI32_ACCTR_A_CONFIG_FLSTPEN_MASK 0x02000000 120 #define SI32_ACCTR_A_CONFIG_FLSTPEN_SHIFT 25 121 // The pulse counter continues operating during a flutter event. 122 #define SI32_ACCTR_A_CONFIG_FLSTPEN_DISABLED_VALUE 0 123 #define SI32_ACCTR_A_CONFIG_FLSTPEN_DISABLED_U32 \ 124 (SI32_ACCTR_A_CONFIG_FLSTPEN_DISABLED_VALUE << SI32_ACCTR_A_CONFIG_FLSTPEN_SHIFT) 125 // The 24-bit counters stop counting during a flutter event. 126 #define SI32_ACCTR_A_CONFIG_FLSTPEN_ENABLED_VALUE 1 127 #define SI32_ACCTR_A_CONFIG_FLSTPEN_ENABLED_U32 \ 128 (SI32_ACCTR_A_CONFIG_FLSTPEN_ENABLED_VALUE << SI32_ACCTR_A_CONFIG_FLSTPEN_SHIFT) 129 130 #define SI32_ACCTR_A_CONFIG_TOPMD_MASK 0x20000000 131 #define SI32_ACCTR_A_CONFIG_TOPMD_SHIFT 29 132 // Select the switch closure topology. 133 #define SI32_ACCTR_A_CONFIG_TOPMD_SWITCH_VALUE 0 134 #define SI32_ACCTR_A_CONFIG_TOPMD_SWITCH_U32 \ 135 (SI32_ACCTR_A_CONFIG_TOPMD_SWITCH_VALUE << SI32_ACCTR_A_CONFIG_TOPMD_SHIFT) 136 // Select the LC resonant topology. 137 #define SI32_ACCTR_A_CONFIG_TOPMD_LC_VALUE 1 138 #define SI32_ACCTR_A_CONFIG_TOPMD_LC_U32 \ 139 (SI32_ACCTR_A_CONFIG_TOPMD_LC_VALUE << SI32_ACCTR_A_CONFIG_TOPMD_SHIFT) 140 141 #define SI32_ACCTR_A_CONFIG_PCMD_MASK 0xC0000000 142 #define SI32_ACCTR_A_CONFIG_PCMD_SHIFT 30 143 // Disable the pulse counter. 144 #define SI32_ACCTR_A_CONFIG_PCMD_DISABLED_VALUE 0U 145 #define SI32_ACCTR_A_CONFIG_PCMD_DISABLED_U32 \ 146 (SI32_ACCTR_A_CONFIG_PCMD_DISABLED_VALUE << SI32_ACCTR_A_CONFIG_PCMD_SHIFT) 147 // Select single channel mode. 148 #define SI32_ACCTR_A_CONFIG_PCMD_SINGLE_VALUE 1U 149 #define SI32_ACCTR_A_CONFIG_PCMD_SINGLE_U32 \ 150 (SI32_ACCTR_A_CONFIG_PCMD_SINGLE_VALUE << SI32_ACCTR_A_CONFIG_PCMD_SHIFT) 151 // Select dual channel mode. 152 #define SI32_ACCTR_A_CONFIG_PCMD_DUAL_VALUE 2U 153 #define SI32_ACCTR_A_CONFIG_PCMD_DUAL_U32 \ 154 (SI32_ACCTR_A_CONFIG_PCMD_DUAL_VALUE << SI32_ACCTR_A_CONFIG_PCMD_SHIFT) 155 // Select quadrature mode. 156 #define SI32_ACCTR_A_CONFIG_PCMD_QUADRATURE_VALUE 3U 157 #define SI32_ACCTR_A_CONFIG_PCMD_QUADRATURE_U32 \ 158 (SI32_ACCTR_A_CONFIG_PCMD_QUADRATURE_VALUE << SI32_ACCTR_A_CONFIG_PCMD_SHIFT) 159 160 161 162 struct SI32_ACCTR_A_CONTROL_Struct 163 { 164 union 165 { 166 struct 167 { 168 uint32_t reserved0: 15; 169 // Comparator Low Threshold 170 volatile uint32_t CMPLTH: 2; 171 // Comparator High Threshold 172 volatile uint32_t CMPHTH: 2; 173 // Automatic Calibration Mode 174 volatile uint32_t CALMD: 1; 175 // Automatic Calibration Pull-up Mode 176 volatile uint32_t CALPUMD: 2; 177 // Force Continuous Pull-up Enable 178 volatile uint32_t FPUPEN: 1; 179 // Force Ground Input Enable 180 volatile uint32_t FPDNEN: 1; 181 // Pull-up Value 182 volatile uint32_t PUVAL: 5; 183 // Automatic Calibration Input Select 184 volatile uint32_t CALSEL: 1; 185 // Calibration Result Flag 186 volatile uint32_t CALRF: 1; 187 // Calibration Busy Flag 188 volatile uint32_t CALBUSYF: 1; 189 }; 190 volatile uint32_t U32; 191 }; 192 }; 193 194 #define SI32_ACCTR_A_CONTROL_CMPLTH_MASK 0x00018000 195 #define SI32_ACCTR_A_CONTROL_CMPLTH_SHIFT 15 196 // Set the digital comparator low threshold to 32% of VIO. 197 #define SI32_ACCTR_A_CONTROL_CMPLTH_32_PERCENT_VALUE 0 198 #define SI32_ACCTR_A_CONTROL_CMPLTH_32_PERCENT_U32 \ 199 (SI32_ACCTR_A_CONTROL_CMPLTH_32_PERCENT_VALUE << SI32_ACCTR_A_CONTROL_CMPLTH_SHIFT) 200 // Set the digital comparator low threshold to 36% of VIO. 201 #define SI32_ACCTR_A_CONTROL_CMPLTH_36_PERCENT_VALUE 1 202 #define SI32_ACCTR_A_CONTROL_CMPLTH_36_PERCENT_U32 \ 203 (SI32_ACCTR_A_CONTROL_CMPLTH_36_PERCENT_VALUE << SI32_ACCTR_A_CONTROL_CMPLTH_SHIFT) 204 // Set the digital comparator low threshold to 40% of VIO. 205 #define SI32_ACCTR_A_CONTROL_CMPLTH_40_PERCENT_VALUE 2 206 #define SI32_ACCTR_A_CONTROL_CMPLTH_40_PERCENT_U32 \ 207 (SI32_ACCTR_A_CONTROL_CMPLTH_40_PERCENT_VALUE << SI32_ACCTR_A_CONTROL_CMPLTH_SHIFT) 208 // Set the digital comparator low threshold to 44% of VIO. 209 #define SI32_ACCTR_A_CONTROL_CMPLTH_44_PERCENT_VALUE 3 210 #define SI32_ACCTR_A_CONTROL_CMPLTH_44_PERCENT_U32 \ 211 (SI32_ACCTR_A_CONTROL_CMPLTH_44_PERCENT_VALUE << SI32_ACCTR_A_CONTROL_CMPLTH_SHIFT) 212 213 #define SI32_ACCTR_A_CONTROL_CMPHTH_MASK 0x00060000 214 #define SI32_ACCTR_A_CONTROL_CMPHTH_SHIFT 17 215 // Set the digital comparator high threshold to 48% of VIO. 216 #define SI32_ACCTR_A_CONTROL_CMPHTH_48_PERCENT_VALUE 0 217 #define SI32_ACCTR_A_CONTROL_CMPHTH_48_PERCENT_U32 \ 218 (SI32_ACCTR_A_CONTROL_CMPHTH_48_PERCENT_VALUE << SI32_ACCTR_A_CONTROL_CMPHTH_SHIFT) 219 // Set the digital comparator high threshold to 52% of VIO. 220 #define SI32_ACCTR_A_CONTROL_CMPHTH_52_PERCENT_VALUE 1 221 #define SI32_ACCTR_A_CONTROL_CMPHTH_52_PERCENT_U32 \ 222 (SI32_ACCTR_A_CONTROL_CMPHTH_52_PERCENT_VALUE << SI32_ACCTR_A_CONTROL_CMPHTH_SHIFT) 223 // Set the digital comparator high threshold to 56% of VIO. 224 #define SI32_ACCTR_A_CONTROL_CMPHTH_56_PERCENT_VALUE 2 225 #define SI32_ACCTR_A_CONTROL_CMPHTH_56_PERCENT_U32 \ 226 (SI32_ACCTR_A_CONTROL_CMPHTH_56_PERCENT_VALUE << SI32_ACCTR_A_CONTROL_CMPHTH_SHIFT) 227 // Set the digital comparator high threshold to 60% of VIO. 228 #define SI32_ACCTR_A_CONTROL_CMPHTH_60_PERCENT_VALUE 3 229 #define SI32_ACCTR_A_CONTROL_CMPHTH_60_PERCENT_U32 \ 230 (SI32_ACCTR_A_CONTROL_CMPHTH_60_PERCENT_VALUE << SI32_ACCTR_A_CONTROL_CMPHTH_SHIFT) 231 232 #define SI32_ACCTR_A_CONTROL_CALMD_MASK 0x00080000 233 #define SI32_ACCTR_A_CONTROL_CALMD_SHIFT 19 234 // Continue to calibrate until a passing condition occurs. 235 #define SI32_ACCTR_A_CONTROL_CALMD_UNTIL_PASS_VALUE 0 236 #define SI32_ACCTR_A_CONTROL_CALMD_UNTIL_PASS_U32 \ 237 (SI32_ACCTR_A_CONTROL_CALMD_UNTIL_PASS_VALUE << SI32_ACCTR_A_CONTROL_CALMD_SHIFT) 238 // Continue to calibrate until a failing condition occurs. 239 #define SI32_ACCTR_A_CONTROL_CALMD_UNTIL_FAIL_VALUE 1 240 #define SI32_ACCTR_A_CONTROL_CALMD_UNTIL_FAIL_U32 \ 241 (SI32_ACCTR_A_CONTROL_CALMD_UNTIL_FAIL_VALUE << SI32_ACCTR_A_CONTROL_CALMD_SHIFT) 242 243 #define SI32_ACCTR_A_CONTROL_CALPUMD_MASK 0x00300000 244 #define SI32_ACCTR_A_CONTROL_CALPUMD_SHIFT 20 245 // Use full pull-up mode. 246 #define SI32_ACCTR_A_CONTROL_CALPUMD_FULL_VALUE 0 247 #define SI32_ACCTR_A_CONTROL_CALPUMD_FULL_U32 \ 248 (SI32_ACCTR_A_CONTROL_CALPUMD_FULL_VALUE << SI32_ACCTR_A_CONTROL_CALPUMD_SHIFT) 249 // Use small pull-up mode. 250 #define SI32_ACCTR_A_CONTROL_CALPUMD_SMALL_VALUE 1 251 #define SI32_ACCTR_A_CONTROL_CALPUMD_SMALL_U32 \ 252 (SI32_ACCTR_A_CONTROL_CALPUMD_SMALL_VALUE << SI32_ACCTR_A_CONTROL_CALPUMD_SHIFT) 253 // Use medium pull-up mode. 254 #define SI32_ACCTR_A_CONTROL_CALPUMD_MEDIUM_VALUE 2 255 #define SI32_ACCTR_A_CONTROL_CALPUMD_MEDIUM_U32 \ 256 (SI32_ACCTR_A_CONTROL_CALPUMD_MEDIUM_VALUE << SI32_ACCTR_A_CONTROL_CALPUMD_SHIFT) 257 // Use large pull-up mode. 258 #define SI32_ACCTR_A_CONTROL_CALPUMD_LARGE_VALUE 3 259 #define SI32_ACCTR_A_CONTROL_CALPUMD_LARGE_U32 \ 260 (SI32_ACCTR_A_CONTROL_CALPUMD_LARGE_VALUE << SI32_ACCTR_A_CONTROL_CALPUMD_SHIFT) 261 262 #define SI32_ACCTR_A_CONTROL_FPUPEN_MASK 0x00400000 263 #define SI32_ACCTR_A_CONTROL_FPUPEN_SHIFT 22 264 // Pull-ups are enabled automatically by hardware. 265 #define SI32_ACCTR_A_CONTROL_FPUPEN_DISABLED_VALUE 0 266 #define SI32_ACCTR_A_CONTROL_FPUPEN_DISABLED_U32 \ 267 (SI32_ACCTR_A_CONTROL_FPUPEN_DISABLED_VALUE << SI32_ACCTR_A_CONTROL_FPUPEN_SHIFT) 268 // Always enable the pull-ups. 269 #define SI32_ACCTR_A_CONTROL_FPUPEN_ENABLED_VALUE 1 270 #define SI32_ACCTR_A_CONTROL_FPUPEN_ENABLED_U32 \ 271 (SI32_ACCTR_A_CONTROL_FPUPEN_ENABLED_VALUE << SI32_ACCTR_A_CONTROL_FPUPEN_SHIFT) 272 273 #define SI32_ACCTR_A_CONTROL_FPDNEN_MASK 0x00800000 274 #define SI32_ACCTR_A_CONTROL_FPDNEN_SHIFT 23 275 // Disable input grounding. 276 #define SI32_ACCTR_A_CONTROL_FPDNEN_DISABLED_VALUE 0 277 #define SI32_ACCTR_A_CONTROL_FPDNEN_DISABLED_U32 \ 278 (SI32_ACCTR_A_CONTROL_FPDNEN_DISABLED_VALUE << SI32_ACCTR_A_CONTROL_FPDNEN_SHIFT) 279 // Enable input grounding. The IN0 and IN1 inputs are grounded. 280 #define SI32_ACCTR_A_CONTROL_FPDNEN_ENABLED_VALUE 1 281 #define SI32_ACCTR_A_CONTROL_FPDNEN_ENABLED_U32 \ 282 (SI32_ACCTR_A_CONTROL_FPDNEN_ENABLED_VALUE << SI32_ACCTR_A_CONTROL_FPDNEN_SHIFT) 283 284 #define SI32_ACCTR_A_CONTROL_PUVAL_MASK 0x1F000000 285 #define SI32_ACCTR_A_CONTROL_PUVAL_SHIFT 24 286 287 #define SI32_ACCTR_A_CONTROL_CALSEL_MASK 0x20000000 288 #define SI32_ACCTR_A_CONTROL_CALSEL_SHIFT 29 289 // Calibrate the IN0 input. 290 #define SI32_ACCTR_A_CONTROL_CALSEL_IN0_VALUE 0 291 #define SI32_ACCTR_A_CONTROL_CALSEL_IN0_U32 \ 292 (SI32_ACCTR_A_CONTROL_CALSEL_IN0_VALUE << SI32_ACCTR_A_CONTROL_CALSEL_SHIFT) 293 // Calibrate the IN1 input. 294 #define SI32_ACCTR_A_CONTROL_CALSEL_IN1_VALUE 1 295 #define SI32_ACCTR_A_CONTROL_CALSEL_IN1_U32 \ 296 (SI32_ACCTR_A_CONTROL_CALSEL_IN1_VALUE << SI32_ACCTR_A_CONTROL_CALSEL_SHIFT) 297 298 #define SI32_ACCTR_A_CONTROL_CALRF_MASK 0x40000000 299 #define SI32_ACCTR_A_CONTROL_CALRF_SHIFT 30 300 // The automatic calibration operation did not succeed. 301 #define SI32_ACCTR_A_CONTROL_CALRF_NOT_SET_VALUE 0 302 #define SI32_ACCTR_A_CONTROL_CALRF_NOT_SET_U32 \ 303 (SI32_ACCTR_A_CONTROL_CALRF_NOT_SET_VALUE << SI32_ACCTR_A_CONTROL_CALRF_SHIFT) 304 // The automatic calibration operation succeeded. 305 #define SI32_ACCTR_A_CONTROL_CALRF_SET_VALUE 1 306 #define SI32_ACCTR_A_CONTROL_CALRF_SET_U32 \ 307 (SI32_ACCTR_A_CONTROL_CALRF_SET_VALUE << SI32_ACCTR_A_CONTROL_CALRF_SHIFT) 308 309 #define SI32_ACCTR_A_CONTROL_CALBUSYF_MASK 0x80000000 310 #define SI32_ACCTR_A_CONTROL_CALBUSYF_SHIFT 31 311 // A calibration operation is not in progress. 312 #define SI32_ACCTR_A_CONTROL_CALBUSYF_NOT_SET_VALUE 0U 313 #define SI32_ACCTR_A_CONTROL_CALBUSYF_NOT_SET_U32 \ 314 (SI32_ACCTR_A_CONTROL_CALBUSYF_NOT_SET_VALUE << SI32_ACCTR_A_CONTROL_CALBUSYF_SHIFT) 315 // A calibration operation is in progress. Hardware will clear this flag when the 316 // operation completes. 317 #define SI32_ACCTR_A_CONTROL_CALBUSYF_SET_VALUE 1U 318 #define SI32_ACCTR_A_CONTROL_CALBUSYF_SET_U32 \ 319 (SI32_ACCTR_A_CONTROL_CALBUSYF_SET_VALUE << SI32_ACCTR_A_CONTROL_CALBUSYF_SHIFT) 320 321 322 323 struct SI32_ACCTR_A_LCCONFIG_Struct 324 { 325 union 326 { 327 struct 328 { 329 // LC Pulse Extension Mode 330 volatile uint32_t PEMD: 2; 331 // LC Comparator 0 Fine Threshold 332 volatile uint32_t CMP0FTH: 3; 333 // LC Comparator 0 Coarse Threshold 334 volatile uint32_t CMP0CTH: 6; 335 // LC Comparator 0 Threshold Range 336 volatile uint32_t CMP0THR: 1; 337 // LC Comparator 1 Fine Threshold 338 volatile uint32_t CMP1FTH: 3; 339 // LC Comparator 1 Coarse Threshold 340 volatile uint32_t CMP1CTH: 6; 341 // LC Comparator 1 Threshold Range 342 volatile uint32_t CMP1THR: 1; 343 // LC Comparator Low-side Hysteresis 344 volatile uint32_t CMPLHYS: 2; 345 // LC Comparator High-side Hysteresis 346 volatile uint32_t CMPHHYS: 2; 347 // LC Comparator Mode 348 volatile uint32_t CMPMD: 2; 349 // LC Comparator 0 to Count 1 Enable 350 volatile uint32_t CMP0CNT1EN: 1; 351 // Force LC Comparator 0 On Enable 352 volatile uint32_t FCMP0EN: 1; 353 // Force LC Comparator 1 On Enable 354 volatile uint32_t FCMP1EN: 1; 355 uint32_t reserved0: 1; 356 }; 357 volatile uint32_t U32; 358 }; 359 }; 360 361 #define SI32_ACCTR_A_LCCONFIG_PEMD_MASK 0x00000003 362 #define SI32_ACCTR_A_LCCONFIG_PEMD_SHIFT 0 363 // Stretch the LC comparator output low pulses by approximately 20 ns. 364 #define SI32_ACCTR_A_LCCONFIG_PEMD_LOW_VALUE 0 365 #define SI32_ACCTR_A_LCCONFIG_PEMD_LOW_U32 \ 366 (SI32_ACCTR_A_LCCONFIG_PEMD_LOW_VALUE << SI32_ACCTR_A_LCCONFIG_PEMD_SHIFT) 367 // Stretch the LC comparator output high pulses by approximately 20 ns. 368 #define SI32_ACCTR_A_LCCONFIG_PEMD_HIGH_VALUE 1 369 #define SI32_ACCTR_A_LCCONFIG_PEMD_HIGH_U32 \ 370 (SI32_ACCTR_A_LCCONFIG_PEMD_HIGH_VALUE << SI32_ACCTR_A_LCCONFIG_PEMD_SHIFT) 371 // No pulse extension. 372 #define SI32_ACCTR_A_LCCONFIG_PEMD_NONE_VALUE 2 373 #define SI32_ACCTR_A_LCCONFIG_PEMD_NONE_U32 \ 374 (SI32_ACCTR_A_LCCONFIG_PEMD_NONE_VALUE << SI32_ACCTR_A_LCCONFIG_PEMD_SHIFT) 375 376 #define SI32_ACCTR_A_LCCONFIG_CMP0FTH_MASK 0x0000001C 377 #define SI32_ACCTR_A_LCCONFIG_CMP0FTH_SHIFT 2 378 379 #define SI32_ACCTR_A_LCCONFIG_CMP0CTH_MASK 0x000007E0 380 #define SI32_ACCTR_A_LCCONFIG_CMP0CTH_SHIFT 5 381 382 #define SI32_ACCTR_A_LCCONFIG_CMP0THR_MASK 0x00000800 383 #define SI32_ACCTR_A_LCCONFIG_CMP0THR_SHIFT 11 384 // Set the comparator 0 threshold to the low range (0 V to VIO/8 in 48 steps). 385 #define SI32_ACCTR_A_LCCONFIG_CMP0THR_LOW_VALUE 0 386 #define SI32_ACCTR_A_LCCONFIG_CMP0THR_LOW_U32 \ 387 (SI32_ACCTR_A_LCCONFIG_CMP0THR_LOW_VALUE << SI32_ACCTR_A_LCCONFIG_CMP0THR_SHIFT) 388 // Set the comparator 0 threshold to a full range (0 V to VIO in 64 steps). 389 #define SI32_ACCTR_A_LCCONFIG_CMP0THR_FULL_VALUE 1 390 #define SI32_ACCTR_A_LCCONFIG_CMP0THR_FULL_U32 \ 391 (SI32_ACCTR_A_LCCONFIG_CMP0THR_FULL_VALUE << SI32_ACCTR_A_LCCONFIG_CMP0THR_SHIFT) 392 393 #define SI32_ACCTR_A_LCCONFIG_CMP1FTH_MASK 0x00007000 394 #define SI32_ACCTR_A_LCCONFIG_CMP1FTH_SHIFT 12 395 396 #define SI32_ACCTR_A_LCCONFIG_CMP1CTH_MASK 0x001F8000 397 #define SI32_ACCTR_A_LCCONFIG_CMP1CTH_SHIFT 15 398 399 #define SI32_ACCTR_A_LCCONFIG_CMP1THR_MASK 0x00200000 400 #define SI32_ACCTR_A_LCCONFIG_CMP1THR_SHIFT 21 401 // Set the comparator 1 threshold to the low range (0 V to VIO/8 in 48 steps). 402 #define SI32_ACCTR_A_LCCONFIG_CMP1THR_LOW_VALUE 0 403 #define SI32_ACCTR_A_LCCONFIG_CMP1THR_LOW_U32 \ 404 (SI32_ACCTR_A_LCCONFIG_CMP1THR_LOW_VALUE << SI32_ACCTR_A_LCCONFIG_CMP1THR_SHIFT) 405 // Set the comparator 1 threshold to a full range (0 V to VIO in 64 steps). 406 #define SI32_ACCTR_A_LCCONFIG_CMP1THR_FULL_VALUE 1 407 #define SI32_ACCTR_A_LCCONFIG_CMP1THR_FULL_U32 \ 408 (SI32_ACCTR_A_LCCONFIG_CMP1THR_FULL_VALUE << SI32_ACCTR_A_LCCONFIG_CMP1THR_SHIFT) 409 410 #define SI32_ACCTR_A_LCCONFIG_CMPLHYS_MASK 0x00C00000 411 #define SI32_ACCTR_A_LCCONFIG_CMPLHYS_SHIFT 22 412 // Set both LC comparators to use 0 mV low-side hysteresis. 413 #define SI32_ACCTR_A_LCCONFIG_CMPLHYS_0_MV_VALUE 0 414 #define SI32_ACCTR_A_LCCONFIG_CMPLHYS_0_MV_U32 \ 415 (SI32_ACCTR_A_LCCONFIG_CMPLHYS_0_MV_VALUE << SI32_ACCTR_A_LCCONFIG_CMPLHYS_SHIFT) 416 // Set both LC comparators to use 5 mV low-side hysteresis. 417 #define SI32_ACCTR_A_LCCONFIG_CMPLHYS_5_MV_VALUE 1 418 #define SI32_ACCTR_A_LCCONFIG_CMPLHYS_5_MV_U32 \ 419 (SI32_ACCTR_A_LCCONFIG_CMPLHYS_5_MV_VALUE << SI32_ACCTR_A_LCCONFIG_CMPLHYS_SHIFT) 420 // Set both LC comparators to use 10 mV low-side hysteresis. 421 #define SI32_ACCTR_A_LCCONFIG_CMPLHYS_10_MV_VALUE 2 422 #define SI32_ACCTR_A_LCCONFIG_CMPLHYS_10_MV_U32 \ 423 (SI32_ACCTR_A_LCCONFIG_CMPLHYS_10_MV_VALUE << SI32_ACCTR_A_LCCONFIG_CMPLHYS_SHIFT) 424 // Set both LC comparators to use 20 mV low-side hysteresis. 425 #define SI32_ACCTR_A_LCCONFIG_CMPLHYS_20_MV_VALUE 3 426 #define SI32_ACCTR_A_LCCONFIG_CMPLHYS_20_MV_U32 \ 427 (SI32_ACCTR_A_LCCONFIG_CMPLHYS_20_MV_VALUE << SI32_ACCTR_A_LCCONFIG_CMPLHYS_SHIFT) 428 429 #define SI32_ACCTR_A_LCCONFIG_CMPHHYS_MASK 0x03000000 430 #define SI32_ACCTR_A_LCCONFIG_CMPHHYS_SHIFT 24 431 // Set both LC comparators to use 0 mV high-side hysteresis. 432 #define SI32_ACCTR_A_LCCONFIG_CMPHHYS_0_MV_VALUE 0 433 #define SI32_ACCTR_A_LCCONFIG_CMPHHYS_0_MV_U32 \ 434 (SI32_ACCTR_A_LCCONFIG_CMPHHYS_0_MV_VALUE << SI32_ACCTR_A_LCCONFIG_CMPHHYS_SHIFT) 435 // Set both LC comparators to use 5 mV high-side hysteresis. 436 #define SI32_ACCTR_A_LCCONFIG_CMPHHYS_5_MV_VALUE 1 437 #define SI32_ACCTR_A_LCCONFIG_CMPHHYS_5_MV_U32 \ 438 (SI32_ACCTR_A_LCCONFIG_CMPHHYS_5_MV_VALUE << SI32_ACCTR_A_LCCONFIG_CMPHHYS_SHIFT) 439 // Set both LC comparators to use 10 mV high-side hysteresis. 440 #define SI32_ACCTR_A_LCCONFIG_CMPHHYS_10_MV_VALUE 2 441 #define SI32_ACCTR_A_LCCONFIG_CMPHHYS_10_MV_U32 \ 442 (SI32_ACCTR_A_LCCONFIG_CMPHHYS_10_MV_VALUE << SI32_ACCTR_A_LCCONFIG_CMPHHYS_SHIFT) 443 // Set both LC comparators to use 20 mV high-side hysteresis. 444 #define SI32_ACCTR_A_LCCONFIG_CMPHHYS_20_MV_VALUE 3 445 #define SI32_ACCTR_A_LCCONFIG_CMPHHYS_20_MV_U32 \ 446 (SI32_ACCTR_A_LCCONFIG_CMPHHYS_20_MV_VALUE << SI32_ACCTR_A_LCCONFIG_CMPHHYS_SHIFT) 447 448 #define SI32_ACCTR_A_LCCONFIG_CMPMD_MASK 0x0C000000 449 #define SI32_ACCTR_A_LCCONFIG_CMPMD_SHIFT 26 450 // Mode 0 (slowest response time, lowest power consumption). 451 #define SI32_ACCTR_A_LCCONFIG_CMPMD_5_US_VALUE 0 452 #define SI32_ACCTR_A_LCCONFIG_CMPMD_5_US_U32 \ 453 (SI32_ACCTR_A_LCCONFIG_CMPMD_5_US_VALUE << SI32_ACCTR_A_LCCONFIG_CMPMD_SHIFT) 454 // Mode 1. 455 #define SI32_ACCTR_A_LCCONFIG_CMPMD_1_US_VALUE 1 456 #define SI32_ACCTR_A_LCCONFIG_CMPMD_1_US_U32 \ 457 (SI32_ACCTR_A_LCCONFIG_CMPMD_1_US_VALUE << SI32_ACCTR_A_LCCONFIG_CMPMD_SHIFT) 458 // Mode 2. 459 #define SI32_ACCTR_A_LCCONFIG_CMPMD_400_NS_VALUE 2 460 #define SI32_ACCTR_A_LCCONFIG_CMPMD_400_NS_U32 \ 461 (SI32_ACCTR_A_LCCONFIG_CMPMD_400_NS_VALUE << SI32_ACCTR_A_LCCONFIG_CMPMD_SHIFT) 462 // Mode 3 (fastest response time, highest power consumption). 463 #define SI32_ACCTR_A_LCCONFIG_CMPMD_200_NS_VALUE 3 464 #define SI32_ACCTR_A_LCCONFIG_CMPMD_200_NS_U32 \ 465 (SI32_ACCTR_A_LCCONFIG_CMPMD_200_NS_VALUE << SI32_ACCTR_A_LCCONFIG_CMPMD_SHIFT) 466 467 #define SI32_ACCTR_A_LCCONFIG_CMP0CNT1EN_MASK 0x10000000 468 #define SI32_ACCTR_A_LCCONFIG_CMP0CNT1EN_SHIFT 28 469 // Use LC comparator 0 as an input to counter 0 and LC comparator 1 as an input to 470 // counter 1. 471 #define SI32_ACCTR_A_LCCONFIG_CMP0CNT1EN_DISABLED_VALUE 0 472 #define SI32_ACCTR_A_LCCONFIG_CMP0CNT1EN_DISABLED_U32 \ 473 (SI32_ACCTR_A_LCCONFIG_CMP0CNT1EN_DISABLED_VALUE << SI32_ACCTR_A_LCCONFIG_CMP0CNT1EN_SHIFT) 474 // Use LC comparator 0 as an input to both counter 0 and counter 1. 475 #define SI32_ACCTR_A_LCCONFIG_CMP0CNT1EN_ENABLED_VALUE 1 476 #define SI32_ACCTR_A_LCCONFIG_CMP0CNT1EN_ENABLED_U32 \ 477 (SI32_ACCTR_A_LCCONFIG_CMP0CNT1EN_ENABLED_VALUE << SI32_ACCTR_A_LCCONFIG_CMP0CNT1EN_SHIFT) 478 479 #define SI32_ACCTR_A_LCCONFIG_FCMP0EN_MASK 0x20000000 480 #define SI32_ACCTR_A_LCCONFIG_FCMP0EN_SHIFT 29 481 // Hardware automatically turns LC comparator 0 on and off. 482 #define SI32_ACCTR_A_LCCONFIG_FCMP0EN_DISABLED_VALUE 0 483 #define SI32_ACCTR_A_LCCONFIG_FCMP0EN_DISABLED_U32 \ 484 (SI32_ACCTR_A_LCCONFIG_FCMP0EN_DISABLED_VALUE << SI32_ACCTR_A_LCCONFIG_FCMP0EN_SHIFT) 485 // Force LC comparator 0 always on. 486 #define SI32_ACCTR_A_LCCONFIG_FCMP0EN_ENABLED_VALUE 1 487 #define SI32_ACCTR_A_LCCONFIG_FCMP0EN_ENABLED_U32 \ 488 (SI32_ACCTR_A_LCCONFIG_FCMP0EN_ENABLED_VALUE << SI32_ACCTR_A_LCCONFIG_FCMP0EN_SHIFT) 489 490 #define SI32_ACCTR_A_LCCONFIG_FCMP1EN_MASK 0x40000000 491 #define SI32_ACCTR_A_LCCONFIG_FCMP1EN_SHIFT 30 492 // Hardware automatically turns LC comparator 1 on and off. 493 #define SI32_ACCTR_A_LCCONFIG_FCMP1EN_DISABLED_VALUE 0 494 #define SI32_ACCTR_A_LCCONFIG_FCMP1EN_DISABLED_U32 \ 495 (SI32_ACCTR_A_LCCONFIG_FCMP1EN_DISABLED_VALUE << SI32_ACCTR_A_LCCONFIG_FCMP1EN_SHIFT) 496 // Force LC comparator 1 always on. 497 #define SI32_ACCTR_A_LCCONFIG_FCMP1EN_ENABLED_VALUE 1 498 #define SI32_ACCTR_A_LCCONFIG_FCMP1EN_ENABLED_U32 \ 499 (SI32_ACCTR_A_LCCONFIG_FCMP1EN_ENABLED_VALUE << SI32_ACCTR_A_LCCONFIG_FCMP1EN_SHIFT) 500 501 502 503 struct SI32_ACCTR_A_TIMING_Struct 504 { 505 union 506 { 507 struct 508 { 509 // Timing State 510 volatile uint32_t STATE: 3; 511 // Bias 0 Offset Enable 512 volatile uint32_t B0OEN: 1; 513 // Bias 1 Offset Enable 514 volatile uint32_t B1OEN: 1; 515 uint32_t reserved0: 4; 516 // Zone D Count 517 volatile uint32_t ZONED: 3; 518 // Zone C Count 519 volatile uint32_t ZONEC: 3; 520 // Zone B Count 521 volatile uint32_t ZONEB: 3; 522 // Zone A Count 523 volatile uint32_t ZONEA: 3; 524 // Zone P Count 525 volatile uint32_t ZONEP: 3; 526 // LC Wake Mode 527 volatile uint32_t WAKEMD: 3; 528 // Sequencer Start 529 volatile uint32_t START: 1; 530 // Pulse Counter Period 531 volatile uint32_t PERIOD: 4; 532 }; 533 volatile uint32_t U32; 534 }; 535 }; 536 537 #define SI32_ACCTR_A_TIMING_STATE_MASK 0x00000007 538 #define SI32_ACCTR_A_TIMING_STATE_SHIFT 0 539 540 #define SI32_ACCTR_A_TIMING_B0OEN_MASK 0x00000008 541 #define SI32_ACCTR_A_TIMING_B0OEN_SHIFT 3 542 // The bias 0 pulse is a full width (minimum 2 RTC cycles). 543 #define SI32_ACCTR_A_TIMING_B0OEN_DISABLED_VALUE 0 544 #define SI32_ACCTR_A_TIMING_B0OEN_DISABLED_U32 \ 545 (SI32_ACCTR_A_TIMING_B0OEN_DISABLED_VALUE << SI32_ACCTR_A_TIMING_B0OEN_SHIFT) 546 // The bias 0 pulse is delayed 1/2 an RTC cycle and de-asserts 1/2 an RTC cycle 547 // early (minimum 3 RTC cycles). 548 #define SI32_ACCTR_A_TIMING_B0OEN_ENABLED_VALUE 1 549 #define SI32_ACCTR_A_TIMING_B0OEN_ENABLED_U32 \ 550 (SI32_ACCTR_A_TIMING_B0OEN_ENABLED_VALUE << SI32_ACCTR_A_TIMING_B0OEN_SHIFT) 551 552 #define SI32_ACCTR_A_TIMING_B1OEN_MASK 0x00000010 553 #define SI32_ACCTR_A_TIMING_B1OEN_SHIFT 4 554 // The bias 1 pulse is a full width (minimum 2 RTC cycles). 555 #define SI32_ACCTR_A_TIMING_B1OEN_DISABLED_VALUE 0 556 #define SI32_ACCTR_A_TIMING_B1OEN_DISABLED_U32 \ 557 (SI32_ACCTR_A_TIMING_B1OEN_DISABLED_VALUE << SI32_ACCTR_A_TIMING_B1OEN_SHIFT) 558 // The bias 1 pulse is delayed 1/2 an RTC cycle and de-asserts 1/2 an RTC cycle 559 // early (minimum 3 RTC cycles). 560 #define SI32_ACCTR_A_TIMING_B1OEN_ENABLED_VALUE 1 561 #define SI32_ACCTR_A_TIMING_B1OEN_ENABLED_U32 \ 562 (SI32_ACCTR_A_TIMING_B1OEN_ENABLED_VALUE << SI32_ACCTR_A_TIMING_B1OEN_SHIFT) 563 564 #define SI32_ACCTR_A_TIMING_ZONED_MASK 0x00000E00 565 #define SI32_ACCTR_A_TIMING_ZONED_SHIFT 9 566 567 #define SI32_ACCTR_A_TIMING_ZONEC_MASK 0x00007000 568 #define SI32_ACCTR_A_TIMING_ZONEC_SHIFT 12 569 570 #define SI32_ACCTR_A_TIMING_ZONEB_MASK 0x00038000 571 #define SI32_ACCTR_A_TIMING_ZONEB_SHIFT 15 572 573 #define SI32_ACCTR_A_TIMING_ZONEA_MASK 0x001C0000 574 #define SI32_ACCTR_A_TIMING_ZONEA_SHIFT 18 575 576 #define SI32_ACCTR_A_TIMING_ZONEP_MASK 0x00E00000 577 #define SI32_ACCTR_A_TIMING_ZONEP_SHIFT 21 578 579 #define SI32_ACCTR_A_TIMING_WAKEMD_MASK 0x07000000 580 #define SI32_ACCTR_A_TIMING_WAKEMD_SHIFT 24 581 // Disable wake up events. 582 #define SI32_ACCTR_A_TIMING_WAKEMD_DISABLED_VALUE 0 583 #define SI32_ACCTR_A_TIMING_WAKEMD_DISABLED_U32 \ 584 (SI32_ACCTR_A_TIMING_WAKEMD_DISABLED_VALUE << SI32_ACCTR_A_TIMING_WAKEMD_SHIFT) 585 // Wake or interrupt at the start of zone P. 586 #define SI32_ACCTR_A_TIMING_WAKEMD_WZONEP_VALUE 1 587 #define SI32_ACCTR_A_TIMING_WAKEMD_WZONEP_U32 \ 588 (SI32_ACCTR_A_TIMING_WAKEMD_WZONEP_VALUE << SI32_ACCTR_A_TIMING_WAKEMD_SHIFT) 589 // Wake or interrupt at the start of zone A. 590 #define SI32_ACCTR_A_TIMING_WAKEMD_WZONEA_VALUE 2 591 #define SI32_ACCTR_A_TIMING_WAKEMD_WZONEA_U32 \ 592 (SI32_ACCTR_A_TIMING_WAKEMD_WZONEA_VALUE << SI32_ACCTR_A_TIMING_WAKEMD_SHIFT) 593 // Wake or interrupt at the start of zone B. 594 #define SI32_ACCTR_A_TIMING_WAKEMD_WZONEB_VALUE 3 595 #define SI32_ACCTR_A_TIMING_WAKEMD_WZONEB_U32 \ 596 (SI32_ACCTR_A_TIMING_WAKEMD_WZONEB_VALUE << SI32_ACCTR_A_TIMING_WAKEMD_SHIFT) 597 // Wake or interrupt at the start of zone C. 598 #define SI32_ACCTR_A_TIMING_WAKEMD_WZONEC_VALUE 4 599 #define SI32_ACCTR_A_TIMING_WAKEMD_WZONEC_U32 \ 600 (SI32_ACCTR_A_TIMING_WAKEMD_WZONEC_VALUE << SI32_ACCTR_A_TIMING_WAKEMD_SHIFT) 601 // Wake or interrupt at the start of zone D. 602 #define SI32_ACCTR_A_TIMING_WAKEMD_WZONED_VALUE 5 603 #define SI32_ACCTR_A_TIMING_WAKEMD_WZONED_U32 \ 604 (SI32_ACCTR_A_TIMING_WAKEMD_WZONED_VALUE << SI32_ACCTR_A_TIMING_WAKEMD_SHIFT) 605 // Wake or interrupt at the end of the LC sequence. 606 #define SI32_ACCTR_A_TIMING_WAKEMD_WEND_VALUE 6 607 #define SI32_ACCTR_A_TIMING_WAKEMD_WEND_U32 \ 608 (SI32_ACCTR_A_TIMING_WAKEMD_WEND_VALUE << SI32_ACCTR_A_TIMING_WAKEMD_SHIFT) 609 // Wake or interrupt at the end of the LC sequence and stop the sequencer when this 610 // event occurs. 611 #define SI32_ACCTR_A_TIMING_WAKEMD_WKSTOP_VALUE 7 612 #define SI32_ACCTR_A_TIMING_WAKEMD_WKSTOP_U32 \ 613 (SI32_ACCTR_A_TIMING_WAKEMD_WKSTOP_VALUE << SI32_ACCTR_A_TIMING_WAKEMD_SHIFT) 614 615 #define SI32_ACCTR_A_TIMING_START_MASK 0x08000000 616 #define SI32_ACCTR_A_TIMING_START_SHIFT 27 617 // Do not start the sequencer. 618 #define SI32_ACCTR_A_TIMING_START_DISABLED_VALUE 0 619 #define SI32_ACCTR_A_TIMING_START_DISABLED_U32 \ 620 (SI32_ACCTR_A_TIMING_START_DISABLED_VALUE << SI32_ACCTR_A_TIMING_START_SHIFT) 621 // Start the sequencer. 622 #define SI32_ACCTR_A_TIMING_START_ENABLED_VALUE 1 623 #define SI32_ACCTR_A_TIMING_START_ENABLED_U32 \ 624 (SI32_ACCTR_A_TIMING_START_ENABLED_VALUE << SI32_ACCTR_A_TIMING_START_SHIFT) 625 626 #define SI32_ACCTR_A_TIMING_PERIOD_MASK 0xF0000000 627 #define SI32_ACCTR_A_TIMING_PERIOD_SHIFT 28 628 // Set the period to 4 RTC cycles. 629 #define SI32_ACCTR_A_TIMING_PERIOD_4_CYCLES_VALUE 0U 630 #define SI32_ACCTR_A_TIMING_PERIOD_4_CYCLES_U32 \ 631 (SI32_ACCTR_A_TIMING_PERIOD_4_CYCLES_VALUE << SI32_ACCTR_A_TIMING_PERIOD_SHIFT) 632 // Set the period to 8 RTC cycles. 633 #define SI32_ACCTR_A_TIMING_PERIOD_8_CYCLES_VALUE 1U 634 #define SI32_ACCTR_A_TIMING_PERIOD_8_CYCLES_U32 \ 635 (SI32_ACCTR_A_TIMING_PERIOD_8_CYCLES_VALUE << SI32_ACCTR_A_TIMING_PERIOD_SHIFT) 636 // Set the period to 16 RTC cycles. 637 #define SI32_ACCTR_A_TIMING_PERIOD_16_CYCLES_VALUE 2U 638 #define SI32_ACCTR_A_TIMING_PERIOD_16_CYCLES_U32 \ 639 (SI32_ACCTR_A_TIMING_PERIOD_16_CYCLES_VALUE << SI32_ACCTR_A_TIMING_PERIOD_SHIFT) 640 // Set the period to 32 RTC cycles. 641 #define SI32_ACCTR_A_TIMING_PERIOD_32_CYCLES_VALUE 3U 642 #define SI32_ACCTR_A_TIMING_PERIOD_32_CYCLES_U32 \ 643 (SI32_ACCTR_A_TIMING_PERIOD_32_CYCLES_VALUE << SI32_ACCTR_A_TIMING_PERIOD_SHIFT) 644 // Set the period to 64 RTC cycles. 645 #define SI32_ACCTR_A_TIMING_PERIOD_64_CYCLES_VALUE 4U 646 #define SI32_ACCTR_A_TIMING_PERIOD_64_CYCLES_U32 \ 647 (SI32_ACCTR_A_TIMING_PERIOD_64_CYCLES_VALUE << SI32_ACCTR_A_TIMING_PERIOD_SHIFT) 648 // Set the period to 128 RTC cycles. 649 #define SI32_ACCTR_A_TIMING_PERIOD_128_CYCLES_VALUE 5U 650 #define SI32_ACCTR_A_TIMING_PERIOD_128_CYCLES_U32 \ 651 (SI32_ACCTR_A_TIMING_PERIOD_128_CYCLES_VALUE << SI32_ACCTR_A_TIMING_PERIOD_SHIFT) 652 // Set the period to 256 RTC cycles. 653 #define SI32_ACCTR_A_TIMING_PERIOD_256_CYCLES_VALUE 6U 654 #define SI32_ACCTR_A_TIMING_PERIOD_256_CYCLES_U32 \ 655 (SI32_ACCTR_A_TIMING_PERIOD_256_CYCLES_VALUE << SI32_ACCTR_A_TIMING_PERIOD_SHIFT) 656 // Set the period to 512 RTC cycles. 657 #define SI32_ACCTR_A_TIMING_PERIOD_512_CYCLES_VALUE 7U 658 #define SI32_ACCTR_A_TIMING_PERIOD_512_CYCLES_U32 \ 659 (SI32_ACCTR_A_TIMING_PERIOD_512_CYCLES_VALUE << SI32_ACCTR_A_TIMING_PERIOD_SHIFT) 660 // Set the period to 1024 RTC cycles. 661 #define SI32_ACCTR_A_TIMING_PERIOD_1024_CYCLES_VALUE 8U 662 #define SI32_ACCTR_A_TIMING_PERIOD_1024_CYCLES_U32 \ 663 (SI32_ACCTR_A_TIMING_PERIOD_1024_CYCLES_VALUE << SI32_ACCTR_A_TIMING_PERIOD_SHIFT) 664 // Set the period to 2048 RTC cycles. 665 #define SI32_ACCTR_A_TIMING_PERIOD_2048_CYCLES_VALUE 9U 666 #define SI32_ACCTR_A_TIMING_PERIOD_2048_CYCLES_U32 \ 667 (SI32_ACCTR_A_TIMING_PERIOD_2048_CYCLES_VALUE << SI32_ACCTR_A_TIMING_PERIOD_SHIFT) 668 // Set the period to 4096 RTC cycles. 669 #define SI32_ACCTR_A_TIMING_PERIOD_4096_CYCLES_VALUE 10U 670 #define SI32_ACCTR_A_TIMING_PERIOD_4096_CYCLES_U32 \ 671 (SI32_ACCTR_A_TIMING_PERIOD_4096_CYCLES_VALUE << SI32_ACCTR_A_TIMING_PERIOD_SHIFT) 672 // Set the module to single sample mode and disable the period counter after the 673 // next completion of the sequencer. In this mode, firmware must start each sample 674 // by setting FLCSEN to 1. 675 #define SI32_ACCTR_A_TIMING_PERIOD_SINGLE_SAMPLE_VALUE 14U 676 #define SI32_ACCTR_A_TIMING_PERIOD_SINGLE_SAMPLE_U32 \ 677 (SI32_ACCTR_A_TIMING_PERIOD_SINGLE_SAMPLE_VALUE << SI32_ACCTR_A_TIMING_PERIOD_SHIFT) 678 // Set the module to consecutive sample mode and disable the period counter. After 679 // completing zone D, the timing engine will jump directly to zone A, skipping both 680 // the W and P zones. 681 #define SI32_ACCTR_A_TIMING_PERIOD_CONSECUTIVE_SAMPLE_VALUE 15U 682 #define SI32_ACCTR_A_TIMING_PERIOD_CONSECUTIVE_SAMPLE_U32 \ 683 (SI32_ACCTR_A_TIMING_PERIOD_CONSECUTIVE_SAMPLE_VALUE << SI32_ACCTR_A_TIMING_PERIOD_SHIFT) 684 685 686 687 struct SI32_ACCTR_A_LCMODE_Struct 688 { 689 union 690 { 691 struct 692 { 693 // Automatic Tracking Enable 694 volatile uint32_t ATRKEN: 1; 695 // Automatic Center Discriminator Enable 696 volatile uint32_t ACDEN: 1; 697 // LC Discriminator 0 Digital Hysterisis 698 volatile uint32_t LCD0HYS: 2; 699 // LC Discriminator 1 Digital Hysterisis 700 volatile uint32_t LCD1HYS: 2; 701 // Counter 0 Active Zone Select 702 volatile uint32_t C0ZONE: 2; 703 // Counter 1 Active Zone Select 704 volatile uint32_t C1ZONE: 2; 705 // Pulse 0 Active Zone Select 706 volatile uint32_t P0ZONE: 2; 707 // Pulse 1 Active Zone Select 708 volatile uint32_t P1ZONE: 2; 709 // LC Pulse Mode 710 volatile uint32_t PMD: 2; 711 // Bias 0 Zone C Enable 712 volatile uint32_t B0ZONECEN: 1; 713 // Bias 0 Zone B Enable 714 volatile uint32_t B0ZONEBEN: 1; 715 // Bias 0 Zone A Enable 716 volatile uint32_t B0ZONEAEN: 1; 717 // Bias 0 Zone P Enable 718 volatile uint32_t B0ZONEPEN: 1; 719 // Bias 0 Polarity 720 volatile uint32_t B0POL: 1; 721 // Bias 1 Zone C Enable 722 volatile uint32_t B1ZONECEN: 1; 723 // Bias 1 Zone B Enable 724 volatile uint32_t B1ZONEBEN: 1; 725 // Bias 1 Zone A Enable 726 volatile uint32_t B1ZONEAEN: 1; 727 // Bias 1 Zone P Enable 728 volatile uint32_t B1ZONEPEN: 1; 729 // Bias 1 Polarity 730 volatile uint32_t B1POL: 1; 731 // Bias Mode 732 volatile uint32_t BMD: 2; 733 // LC Mode 734 volatile uint32_t LCMD: 4; 735 }; 736 volatile uint32_t U32; 737 }; 738 }; 739 740 #define SI32_ACCTR_A_LCMODE_ATRKEN_MASK 0x00000001 741 #define SI32_ACCTR_A_LCMODE_ATRKEN_SHIFT 0 742 // Disable automatic tracking. 743 #define SI32_ACCTR_A_LCMODE_ATRKEN_DISABLED_VALUE 0 744 #define SI32_ACCTR_A_LCMODE_ATRKEN_DISABLED_U32 \ 745 (SI32_ACCTR_A_LCMODE_ATRKEN_DISABLED_VALUE << SI32_ACCTR_A_LCMODE_ATRKEN_SHIFT) 746 // Enable automatic tracking. A new MAX value of any size will increase both the 747 // MAX and MIN by 1, and a new MIN value of any size will decrease both the MAX and 748 // MIN by 1. 749 #define SI32_ACCTR_A_LCMODE_ATRKEN_ENABLED_VALUE 1 750 #define SI32_ACCTR_A_LCMODE_ATRKEN_ENABLED_U32 \ 751 (SI32_ACCTR_A_LCMODE_ATRKEN_ENABLED_VALUE << SI32_ACCTR_A_LCMODE_ATRKEN_SHIFT) 752 753 #define SI32_ACCTR_A_LCMODE_ACDEN_MASK 0x00000002 754 #define SI32_ACCTR_A_LCMODE_ACDEN_SHIFT 1 755 // Disable automatic center discriminator mode. Firmware must set the CD0 and CD1 756 // fields. 757 #define SI32_ACCTR_A_LCMODE_ACDEN_DISABLED_VALUE 0 758 #define SI32_ACCTR_A_LCMODE_ACDEN_DISABLED_U32 \ 759 (SI32_ACCTR_A_LCMODE_ACDEN_DISABLED_VALUE << SI32_ACCTR_A_LCMODE_ACDEN_SHIFT) 760 // Enable automatic center discriminator mode. Hardware will keep the CD0 and CD1 761 // fields centered between MAX and MIN. 762 #define SI32_ACCTR_A_LCMODE_ACDEN_ENABLED_VALUE 1 763 #define SI32_ACCTR_A_LCMODE_ACDEN_ENABLED_U32 \ 764 (SI32_ACCTR_A_LCMODE_ACDEN_ENABLED_VALUE << SI32_ACCTR_A_LCMODE_ACDEN_SHIFT) 765 766 #define SI32_ACCTR_A_LCMODE_LCD0HYS_MASK 0x0000000C 767 #define SI32_ACCTR_A_LCMODE_LCD0HYS_SHIFT 2 768 // A high-to-low transition occurs if LCCOUNT0 is less than CD0. 769 #define SI32_ACCTR_A_LCMODE_LCD0HYS_ZERO_VALUE 0 770 #define SI32_ACCTR_A_LCMODE_LCD0HYS_ZERO_U32 \ 771 (SI32_ACCTR_A_LCMODE_LCD0HYS_ZERO_VALUE << SI32_ACCTR_A_LCMODE_LCD0HYS_SHIFT) 772 // A high-to-low transition occurs if LCCOUNT0 is less than CD0 - 1. 773 #define SI32_ACCTR_A_LCMODE_LCD0HYS_MINUS1_VALUE 1 774 #define SI32_ACCTR_A_LCMODE_LCD0HYS_MINUS1_U32 \ 775 (SI32_ACCTR_A_LCMODE_LCD0HYS_MINUS1_VALUE << SI32_ACCTR_A_LCMODE_LCD0HYS_SHIFT) 776 // A high-to-low transition occurs if LCCOUNT0 is less than CD0 - 2. 777 #define SI32_ACCTR_A_LCMODE_LCD0HYS_MINUS2_VALUE 2 778 #define SI32_ACCTR_A_LCMODE_LCD0HYS_MINUS2_U32 \ 779 (SI32_ACCTR_A_LCMODE_LCD0HYS_MINUS2_VALUE << SI32_ACCTR_A_LCMODE_LCD0HYS_SHIFT) 780 // A high-to-low transition occurs if LCCOUNT0 is less than CD0 - 3. 781 #define SI32_ACCTR_A_LCMODE_LCD0HYS_MINUS3_VALUE 3 782 #define SI32_ACCTR_A_LCMODE_LCD0HYS_MINUS3_U32 \ 783 (SI32_ACCTR_A_LCMODE_LCD0HYS_MINUS3_VALUE << SI32_ACCTR_A_LCMODE_LCD0HYS_SHIFT) 784 785 #define SI32_ACCTR_A_LCMODE_LCD1HYS_MASK 0x00000030 786 #define SI32_ACCTR_A_LCMODE_LCD1HYS_SHIFT 4 787 // A high-to-low transition occurs if LCCOUNT1 is less than CD1. 788 #define SI32_ACCTR_A_LCMODE_LCD1HYS_ZERO_VALUE 0 789 #define SI32_ACCTR_A_LCMODE_LCD1HYS_ZERO_U32 \ 790 (SI32_ACCTR_A_LCMODE_LCD1HYS_ZERO_VALUE << SI32_ACCTR_A_LCMODE_LCD1HYS_SHIFT) 791 // A high-to-low transition occurs if LCCOUNT1 is less than CD1 - 1. 792 #define SI32_ACCTR_A_LCMODE_LCD1HYS_MINUS1_VALUE 1 793 #define SI32_ACCTR_A_LCMODE_LCD1HYS_MINUS1_U32 \ 794 (SI32_ACCTR_A_LCMODE_LCD1HYS_MINUS1_VALUE << SI32_ACCTR_A_LCMODE_LCD1HYS_SHIFT) 795 // A high-to-low transition occurs if LCCOUNT1 is less than CD1 - 2. 796 #define SI32_ACCTR_A_LCMODE_LCD1HYS_MINUS2_VALUE 2 797 #define SI32_ACCTR_A_LCMODE_LCD1HYS_MINUS2_U32 \ 798 (SI32_ACCTR_A_LCMODE_LCD1HYS_MINUS2_VALUE << SI32_ACCTR_A_LCMODE_LCD1HYS_SHIFT) 799 // A high-to-low transition occurs if LCCOUNT1 is less than CD1 - 3. 800 #define SI32_ACCTR_A_LCMODE_LCD1HYS_MINUS3_VALUE 3 801 #define SI32_ACCTR_A_LCMODE_LCD1HYS_MINUS3_U32 \ 802 (SI32_ACCTR_A_LCMODE_LCD1HYS_MINUS3_VALUE << SI32_ACCTR_A_LCMODE_LCD1HYS_SHIFT) 803 804 #define SI32_ACCTR_A_LCMODE_C0ZONE_MASK 0x000000C0 805 #define SI32_ACCTR_A_LCMODE_C0ZONE_SHIFT 6 806 // Select zone A as the active zone for counter 0 (LCIN0 input). 807 #define SI32_ACCTR_A_LCMODE_C0ZONE_ZONEA_VALUE 0 808 #define SI32_ACCTR_A_LCMODE_C0ZONE_ZONEA_U32 \ 809 (SI32_ACCTR_A_LCMODE_C0ZONE_ZONEA_VALUE << SI32_ACCTR_A_LCMODE_C0ZONE_SHIFT) 810 // Select zone B as the active zone for counter 0 (LCIN0 input). 811 #define SI32_ACCTR_A_LCMODE_C0ZONE_ZONEB_VALUE 1 812 #define SI32_ACCTR_A_LCMODE_C0ZONE_ZONEB_U32 \ 813 (SI32_ACCTR_A_LCMODE_C0ZONE_ZONEB_VALUE << SI32_ACCTR_A_LCMODE_C0ZONE_SHIFT) 814 // Select zone C as the active zone for counter 0 (LCIN0 input). 815 #define SI32_ACCTR_A_LCMODE_C0ZONE_ZONEC_VALUE 2 816 #define SI32_ACCTR_A_LCMODE_C0ZONE_ZONEC_U32 \ 817 (SI32_ACCTR_A_LCMODE_C0ZONE_ZONEC_VALUE << SI32_ACCTR_A_LCMODE_C0ZONE_SHIFT) 818 // Select zone D as the active zone for counter 0 (LCIN0 input). 819 #define SI32_ACCTR_A_LCMODE_C0ZONE_ZONED_VALUE 3 820 #define SI32_ACCTR_A_LCMODE_C0ZONE_ZONED_U32 \ 821 (SI32_ACCTR_A_LCMODE_C0ZONE_ZONED_VALUE << SI32_ACCTR_A_LCMODE_C0ZONE_SHIFT) 822 823 #define SI32_ACCTR_A_LCMODE_C1ZONE_MASK 0x00000300 824 #define SI32_ACCTR_A_LCMODE_C1ZONE_SHIFT 8 825 // Select zone A as the active zone for counter 1 (LCIN1 input). 826 #define SI32_ACCTR_A_LCMODE_C1ZONE_ZONEA_VALUE 0 827 #define SI32_ACCTR_A_LCMODE_C1ZONE_ZONEA_U32 \ 828 (SI32_ACCTR_A_LCMODE_C1ZONE_ZONEA_VALUE << SI32_ACCTR_A_LCMODE_C1ZONE_SHIFT) 829 // Select zone B as the active zone for counter 1 (LCIN1 input). 830 #define SI32_ACCTR_A_LCMODE_C1ZONE_ZONEB_VALUE 1 831 #define SI32_ACCTR_A_LCMODE_C1ZONE_ZONEB_U32 \ 832 (SI32_ACCTR_A_LCMODE_C1ZONE_ZONEB_VALUE << SI32_ACCTR_A_LCMODE_C1ZONE_SHIFT) 833 // Select zone C as the active zone for counter 1 (LCIN1 input). 834 #define SI32_ACCTR_A_LCMODE_C1ZONE_ZONEC_VALUE 2 835 #define SI32_ACCTR_A_LCMODE_C1ZONE_ZONEC_U32 \ 836 (SI32_ACCTR_A_LCMODE_C1ZONE_ZONEC_VALUE << SI32_ACCTR_A_LCMODE_C1ZONE_SHIFT) 837 // Select zone D as the active zone for counter 1 (LCIN1 input). 838 #define SI32_ACCTR_A_LCMODE_C1ZONE_ZONED_VALUE 3 839 #define SI32_ACCTR_A_LCMODE_C1ZONE_ZONED_U32 \ 840 (SI32_ACCTR_A_LCMODE_C1ZONE_ZONED_VALUE << SI32_ACCTR_A_LCMODE_C1ZONE_SHIFT) 841 842 #define SI32_ACCTR_A_LCMODE_P0ZONE_MASK 0x00000C00 843 #define SI32_ACCTR_A_LCMODE_P0ZONE_SHIFT 10 844 // Disable the pulse 0 output (LCPUL0). 845 #define SI32_ACCTR_A_LCMODE_P0ZONE_DISABLED_VALUE 0 846 #define SI32_ACCTR_A_LCMODE_P0ZONE_DISABLED_U32 \ 847 (SI32_ACCTR_A_LCMODE_P0ZONE_DISABLED_VALUE << SI32_ACCTR_A_LCMODE_P0ZONE_SHIFT) 848 // Select zone C only as the active zone for the pulse 0 output (LCPUL0). 849 #define SI32_ACCTR_A_LCMODE_P0ZONE_C_ONLY_VALUE 1 850 #define SI32_ACCTR_A_LCMODE_P0ZONE_C_ONLY_U32 \ 851 (SI32_ACCTR_A_LCMODE_P0ZONE_C_ONLY_VALUE << SI32_ACCTR_A_LCMODE_P0ZONE_SHIFT) 852 // Select zone A only as the active zone for the pulse 0 output (LCPUL0). 853 #define SI32_ACCTR_A_LCMODE_P0ZONE_A_ONLY_VALUE 2 854 #define SI32_ACCTR_A_LCMODE_P0ZONE_A_ONLY_U32 \ 855 (SI32_ACCTR_A_LCMODE_P0ZONE_A_ONLY_VALUE << SI32_ACCTR_A_LCMODE_P0ZONE_SHIFT) 856 // Select zones A and C as the active zones for the pulse 0 output (LCPUL0). 857 #define SI32_ACCTR_A_LCMODE_P0ZONE_A_AND_C_VALUE 3 858 #define SI32_ACCTR_A_LCMODE_P0ZONE_A_AND_C_U32 \ 859 (SI32_ACCTR_A_LCMODE_P0ZONE_A_AND_C_VALUE << SI32_ACCTR_A_LCMODE_P0ZONE_SHIFT) 860 861 #define SI32_ACCTR_A_LCMODE_P1ZONE_MASK 0x00003000 862 #define SI32_ACCTR_A_LCMODE_P1ZONE_SHIFT 12 863 // Disable the pulse 1 output (LCPUL1). 864 #define SI32_ACCTR_A_LCMODE_P1ZONE_DISABLED_VALUE 0 865 #define SI32_ACCTR_A_LCMODE_P1ZONE_DISABLED_U32 \ 866 (SI32_ACCTR_A_LCMODE_P1ZONE_DISABLED_VALUE << SI32_ACCTR_A_LCMODE_P1ZONE_SHIFT) 867 // Select zone C only as the active zone for the pulse 1 output (LCPUL1). 868 #define SI32_ACCTR_A_LCMODE_P1ZONE_C_ONLY_VALUE 1 869 #define SI32_ACCTR_A_LCMODE_P1ZONE_C_ONLY_U32 \ 870 (SI32_ACCTR_A_LCMODE_P1ZONE_C_ONLY_VALUE << SI32_ACCTR_A_LCMODE_P1ZONE_SHIFT) 871 // Select zone A only as the active zone for the pulse 1 output (LCPUL1). 872 #define SI32_ACCTR_A_LCMODE_P1ZONE_A_ONLY_VALUE 2 873 #define SI32_ACCTR_A_LCMODE_P1ZONE_A_ONLY_U32 \ 874 (SI32_ACCTR_A_LCMODE_P1ZONE_A_ONLY_VALUE << SI32_ACCTR_A_LCMODE_P1ZONE_SHIFT) 875 // Select zones A and C as the active zones for the pulse 1 output (LCPUL1). 876 #define SI32_ACCTR_A_LCMODE_P1ZONE_A_AND_C_VALUE 3 877 #define SI32_ACCTR_A_LCMODE_P1ZONE_A_AND_C_U32 \ 878 (SI32_ACCTR_A_LCMODE_P1ZONE_A_AND_C_VALUE << SI32_ACCTR_A_LCMODE_P1ZONE_SHIFT) 879 880 #define SI32_ACCTR_A_LCMODE_PMD_MASK 0x0000C000 881 #define SI32_ACCTR_A_LCMODE_PMD_SHIFT 14 882 // Disable pulse mode. 883 #define SI32_ACCTR_A_LCMODE_PMD_DISABLED_VALUE 0 884 #define SI32_ACCTR_A_LCMODE_PMD_DISABLED_U32 \ 885 (SI32_ACCTR_A_LCMODE_PMD_DISABLED_VALUE << SI32_ACCTR_A_LCMODE_PMD_SHIFT) 886 // Toggle at the start of zone A or zone C. 887 #define SI32_ACCTR_A_LCMODE_PMD_TOGGLE_VALUE 1 888 #define SI32_ACCTR_A_LCMODE_PMD_TOGGLE_U32 \ 889 (SI32_ACCTR_A_LCMODE_PMD_TOGGLE_VALUE << SI32_ACCTR_A_LCMODE_PMD_SHIFT) 890 // Set the pulse mode to idle high, pulse low. 891 #define SI32_ACCTR_A_LCMODE_PMD_PULSE_LOW_VALUE 2 892 #define SI32_ACCTR_A_LCMODE_PMD_PULSE_LOW_U32 \ 893 (SI32_ACCTR_A_LCMODE_PMD_PULSE_LOW_VALUE << SI32_ACCTR_A_LCMODE_PMD_SHIFT) 894 // Set the pulse mode to idle low, pulse high. 895 #define SI32_ACCTR_A_LCMODE_PMD_PULSE_HIGH_VALUE 3 896 #define SI32_ACCTR_A_LCMODE_PMD_PULSE_HIGH_U32 \ 897 (SI32_ACCTR_A_LCMODE_PMD_PULSE_HIGH_VALUE << SI32_ACCTR_A_LCMODE_PMD_SHIFT) 898 899 #define SI32_ACCTR_A_LCMODE_B0ZONECEN_MASK 0x00010000 900 #define SI32_ACCTR_A_LCMODE_B0ZONECEN_SHIFT 16 901 // Disable bias 0 during zone C. 902 #define SI32_ACCTR_A_LCMODE_B0ZONECEN_DISABLED_VALUE 0 903 #define SI32_ACCTR_A_LCMODE_B0ZONECEN_DISABLED_U32 \ 904 (SI32_ACCTR_A_LCMODE_B0ZONECEN_DISABLED_VALUE << SI32_ACCTR_A_LCMODE_B0ZONECEN_SHIFT) 905 // Enable bias 0 during zone C. 906 #define SI32_ACCTR_A_LCMODE_B0ZONECEN_ENABLED_VALUE 1 907 #define SI32_ACCTR_A_LCMODE_B0ZONECEN_ENABLED_U32 \ 908 (SI32_ACCTR_A_LCMODE_B0ZONECEN_ENABLED_VALUE << SI32_ACCTR_A_LCMODE_B0ZONECEN_SHIFT) 909 910 #define SI32_ACCTR_A_LCMODE_B0ZONEBEN_MASK 0x00020000 911 #define SI32_ACCTR_A_LCMODE_B0ZONEBEN_SHIFT 17 912 // Disable bias 0 during zone B. 913 #define SI32_ACCTR_A_LCMODE_B0ZONEBEN_DISABLED_VALUE 0 914 #define SI32_ACCTR_A_LCMODE_B0ZONEBEN_DISABLED_U32 \ 915 (SI32_ACCTR_A_LCMODE_B0ZONEBEN_DISABLED_VALUE << SI32_ACCTR_A_LCMODE_B0ZONEBEN_SHIFT) 916 // Enable bias 0 during zone B. 917 #define SI32_ACCTR_A_LCMODE_B0ZONEBEN_ENABLED_VALUE 1 918 #define SI32_ACCTR_A_LCMODE_B0ZONEBEN_ENABLED_U32 \ 919 (SI32_ACCTR_A_LCMODE_B0ZONEBEN_ENABLED_VALUE << SI32_ACCTR_A_LCMODE_B0ZONEBEN_SHIFT) 920 921 #define SI32_ACCTR_A_LCMODE_B0ZONEAEN_MASK 0x00040000 922 #define SI32_ACCTR_A_LCMODE_B0ZONEAEN_SHIFT 18 923 // Disable bias 0 during zone A. 924 #define SI32_ACCTR_A_LCMODE_B0ZONEAEN_DISABLED_VALUE 0 925 #define SI32_ACCTR_A_LCMODE_B0ZONEAEN_DISABLED_U32 \ 926 (SI32_ACCTR_A_LCMODE_B0ZONEAEN_DISABLED_VALUE << SI32_ACCTR_A_LCMODE_B0ZONEAEN_SHIFT) 927 // Enable bias 0 during zone A. 928 #define SI32_ACCTR_A_LCMODE_B0ZONEAEN_ENABLED_VALUE 1 929 #define SI32_ACCTR_A_LCMODE_B0ZONEAEN_ENABLED_U32 \ 930 (SI32_ACCTR_A_LCMODE_B0ZONEAEN_ENABLED_VALUE << SI32_ACCTR_A_LCMODE_B0ZONEAEN_SHIFT) 931 932 #define SI32_ACCTR_A_LCMODE_B0ZONEPEN_MASK 0x00080000 933 #define SI32_ACCTR_A_LCMODE_B0ZONEPEN_SHIFT 19 934 // Disable bias 0 during zone P. 935 #define SI32_ACCTR_A_LCMODE_B0ZONEPEN_DISABLED_VALUE 0 936 #define SI32_ACCTR_A_LCMODE_B0ZONEPEN_DISABLED_U32 \ 937 (SI32_ACCTR_A_LCMODE_B0ZONEPEN_DISABLED_VALUE << SI32_ACCTR_A_LCMODE_B0ZONEPEN_SHIFT) 938 // Enable bias 0 during zone P. 939 #define SI32_ACCTR_A_LCMODE_B0ZONEPEN_ENABLED_VALUE 1 940 #define SI32_ACCTR_A_LCMODE_B0ZONEPEN_ENABLED_U32 \ 941 (SI32_ACCTR_A_LCMODE_B0ZONEPEN_ENABLED_VALUE << SI32_ACCTR_A_LCMODE_B0ZONEPEN_SHIFT) 942 943 #define SI32_ACCTR_A_LCMODE_B0POL_MASK 0x00100000 944 #define SI32_ACCTR_A_LCMODE_B0POL_SHIFT 20 945 // Set bias 0 to idle high, pulse low. 946 #define SI32_ACCTR_A_LCMODE_B0POL_PULSE_LOW_VALUE 0 947 #define SI32_ACCTR_A_LCMODE_B0POL_PULSE_LOW_U32 \ 948 (SI32_ACCTR_A_LCMODE_B0POL_PULSE_LOW_VALUE << SI32_ACCTR_A_LCMODE_B0POL_SHIFT) 949 // Set bias 0 to idle low, pulse high. 950 #define SI32_ACCTR_A_LCMODE_B0POL_PULSE_HIGH_VALUE 1 951 #define SI32_ACCTR_A_LCMODE_B0POL_PULSE_HIGH_U32 \ 952 (SI32_ACCTR_A_LCMODE_B0POL_PULSE_HIGH_VALUE << SI32_ACCTR_A_LCMODE_B0POL_SHIFT) 953 954 #define SI32_ACCTR_A_LCMODE_B1ZONECEN_MASK 0x00200000 955 #define SI32_ACCTR_A_LCMODE_B1ZONECEN_SHIFT 21 956 // Disable bias 1 during zone C. 957 #define SI32_ACCTR_A_LCMODE_B1ZONECEN_DISABLED_VALUE 0 958 #define SI32_ACCTR_A_LCMODE_B1ZONECEN_DISABLED_U32 \ 959 (SI32_ACCTR_A_LCMODE_B1ZONECEN_DISABLED_VALUE << SI32_ACCTR_A_LCMODE_B1ZONECEN_SHIFT) 960 // Enable bias 1 during zone C. 961 #define SI32_ACCTR_A_LCMODE_B1ZONECEN_ENABLED_VALUE 1 962 #define SI32_ACCTR_A_LCMODE_B1ZONECEN_ENABLED_U32 \ 963 (SI32_ACCTR_A_LCMODE_B1ZONECEN_ENABLED_VALUE << SI32_ACCTR_A_LCMODE_B1ZONECEN_SHIFT) 964 965 #define SI32_ACCTR_A_LCMODE_B1ZONEBEN_MASK 0x00400000 966 #define SI32_ACCTR_A_LCMODE_B1ZONEBEN_SHIFT 22 967 // Disable bias 1 during zone B. 968 #define SI32_ACCTR_A_LCMODE_B1ZONEBEN_DISABLED_VALUE 0 969 #define SI32_ACCTR_A_LCMODE_B1ZONEBEN_DISABLED_U32 \ 970 (SI32_ACCTR_A_LCMODE_B1ZONEBEN_DISABLED_VALUE << SI32_ACCTR_A_LCMODE_B1ZONEBEN_SHIFT) 971 // Enable bias 1 during zone B. 972 #define SI32_ACCTR_A_LCMODE_B1ZONEBEN_ENABLED_VALUE 1 973 #define SI32_ACCTR_A_LCMODE_B1ZONEBEN_ENABLED_U32 \ 974 (SI32_ACCTR_A_LCMODE_B1ZONEBEN_ENABLED_VALUE << SI32_ACCTR_A_LCMODE_B1ZONEBEN_SHIFT) 975 976 #define SI32_ACCTR_A_LCMODE_B1ZONEAEN_MASK 0x00800000 977 #define SI32_ACCTR_A_LCMODE_B1ZONEAEN_SHIFT 23 978 // Disable bias 1 during zone A. 979 #define SI32_ACCTR_A_LCMODE_B1ZONEAEN_DISABLED_VALUE 0 980 #define SI32_ACCTR_A_LCMODE_B1ZONEAEN_DISABLED_U32 \ 981 (SI32_ACCTR_A_LCMODE_B1ZONEAEN_DISABLED_VALUE << SI32_ACCTR_A_LCMODE_B1ZONEAEN_SHIFT) 982 // Enable bias 1 during zone A. 983 #define SI32_ACCTR_A_LCMODE_B1ZONEAEN_ENABLED_VALUE 1 984 #define SI32_ACCTR_A_LCMODE_B1ZONEAEN_ENABLED_U32 \ 985 (SI32_ACCTR_A_LCMODE_B1ZONEAEN_ENABLED_VALUE << SI32_ACCTR_A_LCMODE_B1ZONEAEN_SHIFT) 986 987 #define SI32_ACCTR_A_LCMODE_B1ZONEPEN_MASK 0x01000000 988 #define SI32_ACCTR_A_LCMODE_B1ZONEPEN_SHIFT 24 989 // Disable bias 1 during zone P. 990 #define SI32_ACCTR_A_LCMODE_B1ZONEPEN_DISABLED_VALUE 0 991 #define SI32_ACCTR_A_LCMODE_B1ZONEPEN_DISABLED_U32 \ 992 (SI32_ACCTR_A_LCMODE_B1ZONEPEN_DISABLED_VALUE << SI32_ACCTR_A_LCMODE_B1ZONEPEN_SHIFT) 993 // Enable bias 1 during zone P. 994 #define SI32_ACCTR_A_LCMODE_B1ZONEPEN_ENABLED_VALUE 1 995 #define SI32_ACCTR_A_LCMODE_B1ZONEPEN_ENABLED_U32 \ 996 (SI32_ACCTR_A_LCMODE_B1ZONEPEN_ENABLED_VALUE << SI32_ACCTR_A_LCMODE_B1ZONEPEN_SHIFT) 997 998 #define SI32_ACCTR_A_LCMODE_B1POL_MASK 0x02000000 999 #define SI32_ACCTR_A_LCMODE_B1POL_SHIFT 25 1000 // Set bias 1 to idle high, pulse low. 1001 #define SI32_ACCTR_A_LCMODE_B1POL_PULSE_LOW_VALUE 0 1002 #define SI32_ACCTR_A_LCMODE_B1POL_PULSE_LOW_U32 \ 1003 (SI32_ACCTR_A_LCMODE_B1POL_PULSE_LOW_VALUE << SI32_ACCTR_A_LCMODE_B1POL_SHIFT) 1004 // Set bias 1 to idle low, pulse high. 1005 #define SI32_ACCTR_A_LCMODE_B1POL_PULSE_HIGH_VALUE 1 1006 #define SI32_ACCTR_A_LCMODE_B1POL_PULSE_HIGH_U32 \ 1007 (SI32_ACCTR_A_LCMODE_B1POL_PULSE_HIGH_VALUE << SI32_ACCTR_A_LCMODE_B1POL_SHIFT) 1008 1009 #define SI32_ACCTR_A_LCMODE_BMD_MASK 0x0C000000 1010 #define SI32_ACCTR_A_LCMODE_BMD_SHIFT 26 1011 // Disable the bias signals. 1012 #define SI32_ACCTR_A_LCMODE_BMD_MODE0_VALUE 0 1013 #define SI32_ACCTR_A_LCMODE_BMD_MODE0_U32 \ 1014 (SI32_ACCTR_A_LCMODE_BMD_MODE0_VALUE << SI32_ACCTR_A_LCMODE_BMD_SHIFT) 1015 // Use the bias signals externally only (LCBIAS0 and LCBIAS1 outputs). 1016 #define SI32_ACCTR_A_LCMODE_BMD_MODE1_VALUE 1 1017 #define SI32_ACCTR_A_LCMODE_BMD_MODE1_U32 \ 1018 (SI32_ACCTR_A_LCMODE_BMD_MODE1_VALUE << SI32_ACCTR_A_LCMODE_BMD_SHIFT) 1019 // Use the bias signals internally only. 1020 #define SI32_ACCTR_A_LCMODE_BMD_MODE2_VALUE 2 1021 #define SI32_ACCTR_A_LCMODE_BMD_MODE2_U32 \ 1022 (SI32_ACCTR_A_LCMODE_BMD_MODE2_VALUE << SI32_ACCTR_A_LCMODE_BMD_SHIFT) 1023 // Use the bias signals externally (LCBIAS0 and LCBIAS1 outputs) and internally. 1024 #define SI32_ACCTR_A_LCMODE_BMD_MODE3_VALUE 3 1025 #define SI32_ACCTR_A_LCMODE_BMD_MODE3_U32 \ 1026 (SI32_ACCTR_A_LCMODE_BMD_MODE3_VALUE << SI32_ACCTR_A_LCMODE_BMD_SHIFT) 1027 1028 #define SI32_ACCTR_A_LCMODE_LCMD_MASK 0xF0000000 1029 #define SI32_ACCTR_A_LCMODE_LCMD_SHIFT 28 1030 // The LC pulse asserts throughout zone A or zone C with a single-ended comparator 1031 // using the counter and discriminator. 1032 #define SI32_ACCTR_A_LCMODE_LCMD_MODE0_VALUE 0U 1033 #define SI32_ACCTR_A_LCMODE_LCMD_MODE0_U32 \ 1034 (SI32_ACCTR_A_LCMODE_LCMD_MODE0_VALUE << SI32_ACCTR_A_LCMODE_LCMD_SHIFT) 1035 // The LC pulse asserts throughout zone A or zone C with differential comparators 1036 // using the counter and discriminator. 1037 #define SI32_ACCTR_A_LCMODE_LCMD_MODE1_VALUE 1U 1038 #define SI32_ACCTR_A_LCMODE_LCMD_MODE1_U32 \ 1039 (SI32_ACCTR_A_LCMODE_LCMD_MODE1_VALUE << SI32_ACCTR_A_LCMODE_LCMD_SHIFT) 1040 // The LC pulse asserts throughout zone A or zone C with a single-ended comparator 1041 // sampling and holding at the end of the LC pulse. 1042 #define SI32_ACCTR_A_LCMODE_LCMD_MODE2_VALUE 2U 1043 #define SI32_ACCTR_A_LCMODE_LCMD_MODE2_U32 \ 1044 (SI32_ACCTR_A_LCMODE_LCMD_MODE2_VALUE << SI32_ACCTR_A_LCMODE_LCMD_SHIFT) 1045 // The LC pulse asserts throughout zone A or zone C with differential comparators 1046 // sampling and holding at the end of the LC pulse. 1047 #define SI32_ACCTR_A_LCMODE_LCMD_MODE3_VALUE 3U 1048 #define SI32_ACCTR_A_LCMODE_LCMD_MODE3_U32 \ 1049 (SI32_ACCTR_A_LCMODE_LCMD_MODE3_VALUE << SI32_ACCTR_A_LCMODE_LCMD_SHIFT) 1050 // The LC pulse starts at the beginning of zone A or C and stops with the timer 1051 // with a single-ended comparator using the counter and discriminator. 1052 #define SI32_ACCTR_A_LCMODE_LCMD_MODE4_VALUE 4U 1053 #define SI32_ACCTR_A_LCMODE_LCMD_MODE4_U32 \ 1054 (SI32_ACCTR_A_LCMODE_LCMD_MODE4_VALUE << SI32_ACCTR_A_LCMODE_LCMD_SHIFT) 1055 // The LC pulse starts at the beginning of zone A or C and stops with the timer 1056 // with differential comparators using the counter and discriminator. 1057 #define SI32_ACCTR_A_LCMODE_LCMD_MODE5_VALUE 5U 1058 #define SI32_ACCTR_A_LCMODE_LCMD_MODE5_U32 \ 1059 (SI32_ACCTR_A_LCMODE_LCMD_MODE5_VALUE << SI32_ACCTR_A_LCMODE_LCMD_SHIFT) 1060 // The LC pulse starts at the beginning of zone A or C and stops with the timer 1061 // with a single-ended comparator sampling and holding at the end of the LC pulse. 1062 #define SI32_ACCTR_A_LCMODE_LCMD_MODE6_VALUE 6U 1063 #define SI32_ACCTR_A_LCMODE_LCMD_MODE6_U32 \ 1064 (SI32_ACCTR_A_LCMODE_LCMD_MODE6_VALUE << SI32_ACCTR_A_LCMODE_LCMD_SHIFT) 1065 // The LC pulse starts at the beginning of zone A or C and stops with the timer 1066 // with differential comparators sampling and holding at the end of the LC pulse. 1067 #define SI32_ACCTR_A_LCMODE_LCMD_MODE7_VALUE 7U 1068 #define SI32_ACCTR_A_LCMODE_LCMD_MODE7_U32 \ 1069 (SI32_ACCTR_A_LCMODE_LCMD_MODE7_VALUE << SI32_ACCTR_A_LCMODE_LCMD_SHIFT) 1070 // The LC pulse starts at beginning of zone A or C and stops with the rising edge 1071 // of the external stop input (STOPx) with a single-ended comparator using the 1072 // counter and discriminator. 1073 #define SI32_ACCTR_A_LCMODE_LCMD_MODE8_VALUE 8U 1074 #define SI32_ACCTR_A_LCMODE_LCMD_MODE8_U32 \ 1075 (SI32_ACCTR_A_LCMODE_LCMD_MODE8_VALUE << SI32_ACCTR_A_LCMODE_LCMD_SHIFT) 1076 // The LC pulse starts at beginning of zone A or C and stops with the falling edge 1077 // of the external stop input (STOPx) with single-ended comparators using the 1078 // counter and discriminator. 1079 #define SI32_ACCTR_A_LCMODE_LCMD_MODE9_VALUE 9U 1080 #define SI32_ACCTR_A_LCMODE_LCMD_MODE9_U32 \ 1081 (SI32_ACCTR_A_LCMODE_LCMD_MODE9_VALUE << SI32_ACCTR_A_LCMODE_LCMD_SHIFT) 1082 // The LC pulse starts at beginning of zone A or C and stops with the rising edge 1083 // of the external stop input (STOPx) with a single-ended comparator sampling and 1084 // holding at the end of the LC pulse. 1085 #define SI32_ACCTR_A_LCMODE_LCMD_MODE10_VALUE 10U 1086 #define SI32_ACCTR_A_LCMODE_LCMD_MODE10_U32 \ 1087 (SI32_ACCTR_A_LCMODE_LCMD_MODE10_VALUE << SI32_ACCTR_A_LCMODE_LCMD_SHIFT) 1088 // The LC pulse starts at beginning of zone A or C and stops with the falling edge 1089 // of the external stop input (STOPx) with single-ended comparators sampling and 1090 // holding at the end of the LC pulse. 1091 #define SI32_ACCTR_A_LCMODE_LCMD_MODE11_VALUE 11U 1092 #define SI32_ACCTR_A_LCMODE_LCMD_MODE11_U32 \ 1093 (SI32_ACCTR_A_LCMODE_LCMD_MODE11_VALUE << SI32_ACCTR_A_LCMODE_LCMD_SHIFT) 1094 // Do not generate a pulse with a single-ended comparator using the timer and 1095 // discrimintor. 1096 #define SI32_ACCTR_A_LCMODE_LCMD_MODE12_VALUE 12U 1097 #define SI32_ACCTR_A_LCMODE_LCMD_MODE12_U32 \ 1098 (SI32_ACCTR_A_LCMODE_LCMD_MODE12_VALUE << SI32_ACCTR_A_LCMODE_LCMD_SHIFT) 1099 // Do not generate a pulse with differential comparators using the timer and 1100 // discrimintor. 1101 #define SI32_ACCTR_A_LCMODE_LCMD_MODE13_VALUE 13U 1102 #define SI32_ACCTR_A_LCMODE_LCMD_MODE13_U32 \ 1103 (SI32_ACCTR_A_LCMODE_LCMD_MODE13_VALUE << SI32_ACCTR_A_LCMODE_LCMD_SHIFT) 1104 // Do not generate a pulse with a single-ended comparator sampling and holding at 1105 // the end of the zone. 1106 #define SI32_ACCTR_A_LCMODE_LCMD_MODE14_VALUE 14U 1107 #define SI32_ACCTR_A_LCMODE_LCMD_MODE14_U32 \ 1108 (SI32_ACCTR_A_LCMODE_LCMD_MODE14_VALUE << SI32_ACCTR_A_LCMODE_LCMD_SHIFT) 1109 // Do not genreate a pulse with differential comparators sampling and holding at 1110 // the end of the zone. 1111 #define SI32_ACCTR_A_LCMODE_LCMD_MODE15_VALUE 15U 1112 #define SI32_ACCTR_A_LCMODE_LCMD_MODE15_U32 \ 1113 (SI32_ACCTR_A_LCMODE_LCMD_MODE15_VALUE << SI32_ACCTR_A_LCMODE_LCMD_SHIFT) 1114 1115 1116 1117 struct SI32_ACCTR_A_LCCLKCONTROL_Struct 1118 { 1119 union 1120 { 1121 struct 1122 { 1123 // LC Oscillator Clock Cycles 1124 volatile uint32_t CLKCYCLES: 12; 1125 // LC Oscillator Calibration Start 1126 volatile uint32_t CLKCAL: 1; 1127 uint32_t reserved0: 3; 1128 // LC Oscillator Reload Value 1129 volatile uint32_t RELOAD: 12; 1130 uint32_t reserved1: 4; 1131 }; 1132 volatile uint32_t U32; 1133 }; 1134 }; 1135 1136 #define SI32_ACCTR_A_LCCLKCONTROL_CLKCYCLES_MASK 0x00000FFF 1137 #define SI32_ACCTR_A_LCCLKCONTROL_CLKCYCLES_SHIFT 0 1138 1139 #define SI32_ACCTR_A_LCCLKCONTROL_CLKCAL_MASK 0x00001000 1140 #define SI32_ACCTR_A_LCCLKCONTROL_CLKCAL_SHIFT 12 1141 // A calibration operation is not in progress. 1142 #define SI32_ACCTR_A_LCCLKCONTROL_CLKCAL_NOT_IN_PROGRESS_VALUE 0 1143 #define SI32_ACCTR_A_LCCLKCONTROL_CLKCAL_NOT_IN_PROGRESS_U32 \ 1144 (SI32_ACCTR_A_LCCLKCONTROL_CLKCAL_NOT_IN_PROGRESS_VALUE << SI32_ACCTR_A_LCCLKCONTROL_CLKCAL_SHIFT) 1145 // Start an oscillator calibration or a calibration operation is in progress. 1146 #define SI32_ACCTR_A_LCCLKCONTROL_CLKCAL_START_VALUE 1 1147 #define SI32_ACCTR_A_LCCLKCONTROL_CLKCAL_START_U32 \ 1148 (SI32_ACCTR_A_LCCLKCONTROL_CLKCAL_START_VALUE << SI32_ACCTR_A_LCCLKCONTROL_CLKCAL_SHIFT) 1149 1150 #define SI32_ACCTR_A_LCCLKCONTROL_RELOAD_MASK 0x0FFF0000 1151 #define SI32_ACCTR_A_LCCLKCONTROL_RELOAD_SHIFT 16 1152 1153 1154 1155 struct SI32_ACCTR_A_LCLIMITS_Struct 1156 { 1157 union 1158 { 1159 struct 1160 { 1161 // LC Counter 0 Minimum Value 1162 volatile uint8_t MIN0; 1163 // LC Counter 0 Maximum Value 1164 volatile uint8_t MAX0; 1165 // LC Counter 1 Minimum Value 1166 volatile uint8_t MIN1; 1167 // LC Counter 1 Maximum Value 1168 volatile uint8_t MAX1; 1169 }; 1170 volatile uint32_t U32; 1171 }; 1172 }; 1173 1174 #define SI32_ACCTR_A_LCLIMITS_MIN0_MASK 0x000000FF 1175 #define SI32_ACCTR_A_LCLIMITS_MIN0_SHIFT 0 1176 1177 #define SI32_ACCTR_A_LCLIMITS_MAX0_MASK 0x0000FF00 1178 #define SI32_ACCTR_A_LCLIMITS_MAX0_SHIFT 8 1179 1180 #define SI32_ACCTR_A_LCLIMITS_MIN1_MASK 0x00FF0000 1181 #define SI32_ACCTR_A_LCLIMITS_MIN1_SHIFT 16 1182 1183 #define SI32_ACCTR_A_LCLIMITS_MAX1_MASK 0xFF000000 1184 #define SI32_ACCTR_A_LCLIMITS_MAX1_SHIFT 24 1185 1186 1187 1188 struct SI32_ACCTR_A_LCCOUNT_Struct 1189 { 1190 union 1191 { 1192 struct 1193 { 1194 // LC Counter 0 1195 volatile uint8_t LCCOUNT0; 1196 // LC Counter 0 Discriminator 1197 volatile uint8_t CD0; 1198 // LC Counter 1 1199 volatile uint8_t LCCOUNT1; 1200 // LC Counter 1 Discriminator 1201 volatile uint8_t CD1; 1202 }; 1203 volatile uint32_t U32; 1204 }; 1205 }; 1206 1207 #define SI32_ACCTR_A_LCCOUNT_LCCOUNT0_MASK 0x000000FF 1208 #define SI32_ACCTR_A_LCCOUNT_LCCOUNT0_SHIFT 0 1209 1210 #define SI32_ACCTR_A_LCCOUNT_CD0_MASK 0x0000FF00 1211 #define SI32_ACCTR_A_LCCOUNT_CD0_SHIFT 8 1212 1213 #define SI32_ACCTR_A_LCCOUNT_LCCOUNT1_MASK 0x00FF0000 1214 #define SI32_ACCTR_A_LCCOUNT_LCCOUNT1_SHIFT 16 1215 1216 #define SI32_ACCTR_A_LCCOUNT_CD1_MASK 0xFF000000 1217 #define SI32_ACCTR_A_LCCOUNT_CD1_SHIFT 24 1218 1219 1220 1221 struct SI32_ACCTR_A_DBCONFIG_Struct 1222 { 1223 union 1224 { 1225 struct 1226 { 1227 // Integrator Low Debounce 1228 volatile uint8_t LDBTH; 1229 // Integrator High Debounce 1230 volatile uint8_t HDBTH; 1231 // PC Integrator Disconnect Enable 1232 volatile uint32_t INTEGDCEN: 1; 1233 // PC Integrator 0 Output 1234 volatile uint32_t INTEG0: 1; 1235 // PC Integrator 1 Output 1236 volatile uint32_t INTEG1: 1; 1237 uint32_t reserved0: 13; 1238 }; 1239 volatile uint32_t U32; 1240 }; 1241 }; 1242 1243 #define SI32_ACCTR_A_DBCONFIG_LDBTH_MASK 0x000000FF 1244 #define SI32_ACCTR_A_DBCONFIG_LDBTH_SHIFT 0 1245 1246 #define SI32_ACCTR_A_DBCONFIG_HDBTH_MASK 0x0000FF00 1247 #define SI32_ACCTR_A_DBCONFIG_HDBTH_SHIFT 8 1248 1249 #define SI32_ACCTR_A_DBCONFIG_INTEGDCEN_MASK 0x00010000 1250 #define SI32_ACCTR_A_DBCONFIG_INTEGDCEN_SHIFT 16 1251 // Connect integrator to 24 bit counter state machine logic. 1252 #define SI32_ACCTR_A_DBCONFIG_INTEGDCEN_DISABLED_VALUE 0 1253 #define SI32_ACCTR_A_DBCONFIG_INTEGDCEN_DISABLED_U32 \ 1254 (SI32_ACCTR_A_DBCONFIG_INTEGDCEN_DISABLED_VALUE << SI32_ACCTR_A_DBCONFIG_INTEGDCEN_SHIFT) 1255 // Disconnect the integrators from the IN0 and IN1 inputs. 1256 #define SI32_ACCTR_A_DBCONFIG_INTEGDCEN_ENABLED_VALUE 1 1257 #define SI32_ACCTR_A_DBCONFIG_INTEGDCEN_ENABLED_U32 \ 1258 (SI32_ACCTR_A_DBCONFIG_INTEGDCEN_ENABLED_VALUE << SI32_ACCTR_A_DBCONFIG_INTEGDCEN_SHIFT) 1259 1260 #define SI32_ACCTR_A_DBCONFIG_INTEG0_MASK 0x00020000 1261 #define SI32_ACCTR_A_DBCONFIG_INTEG0_SHIFT 17 1262 // The integrator 0 output is low. 1263 #define SI32_ACCTR_A_DBCONFIG_INTEG0_LOW_VALUE 0 1264 #define SI32_ACCTR_A_DBCONFIG_INTEG0_LOW_U32 \ 1265 (SI32_ACCTR_A_DBCONFIG_INTEG0_LOW_VALUE << SI32_ACCTR_A_DBCONFIG_INTEG0_SHIFT) 1266 // The integrator 0 output is high. 1267 #define SI32_ACCTR_A_DBCONFIG_INTEG0_HIGH_VALUE 1 1268 #define SI32_ACCTR_A_DBCONFIG_INTEG0_HIGH_U32 \ 1269 (SI32_ACCTR_A_DBCONFIG_INTEG0_HIGH_VALUE << SI32_ACCTR_A_DBCONFIG_INTEG0_SHIFT) 1270 1271 #define SI32_ACCTR_A_DBCONFIG_INTEG1_MASK 0x00040000 1272 #define SI32_ACCTR_A_DBCONFIG_INTEG1_SHIFT 18 1273 // The integrator 1 output is low. 1274 #define SI32_ACCTR_A_DBCONFIG_INTEG1_LOW_VALUE 0 1275 #define SI32_ACCTR_A_DBCONFIG_INTEG1_LOW_U32 \ 1276 (SI32_ACCTR_A_DBCONFIG_INTEG1_LOW_VALUE << SI32_ACCTR_A_DBCONFIG_INTEG1_SHIFT) 1277 // The integrator 1 output is high. 1278 #define SI32_ACCTR_A_DBCONFIG_INTEG1_HIGH_VALUE 1 1279 #define SI32_ACCTR_A_DBCONFIG_INTEG1_HIGH_U32 \ 1280 (SI32_ACCTR_A_DBCONFIG_INTEG1_HIGH_VALUE << SI32_ACCTR_A_DBCONFIG_INTEG1_SHIFT) 1281 1282 1283 1284 struct SI32_ACCTR_A_COUNT0_Struct 1285 { 1286 union 1287 { 1288 struct 1289 { 1290 // Pulse Counter 0 1291 volatile uint32_t COUNT0_BITS: 24; 1292 uint32_t reserved0: 8; 1293 }; 1294 volatile uint32_t U32; 1295 }; 1296 }; 1297 1298 #define SI32_ACCTR_A_COUNT0_COUNT0_MASK 0x00FFFFFF 1299 #define SI32_ACCTR_A_COUNT0_COUNT0_SHIFT 0 1300 1301 1302 1303 struct SI32_ACCTR_A_COUNT1_Struct 1304 { 1305 union 1306 { 1307 struct 1308 { 1309 // Pulse Counter 1 1310 volatile uint32_t COUNT1_BITS: 24; 1311 uint32_t reserved0: 8; 1312 }; 1313 volatile uint32_t U32; 1314 }; 1315 }; 1316 1317 #define SI32_ACCTR_A_COUNT1_COUNT1_MASK 0x00FFFFFF 1318 #define SI32_ACCTR_A_COUNT1_COUNT1_SHIFT 0 1319 1320 1321 1322 struct SI32_ACCTR_A_COMP0_Struct 1323 { 1324 union 1325 { 1326 struct 1327 { 1328 // Pulse Counter Comparator 0 Threshold 1329 volatile uint32_t COMP0_BITS: 24; 1330 uint32_t reserved0: 8; 1331 }; 1332 volatile uint32_t U32; 1333 }; 1334 }; 1335 1336 #define SI32_ACCTR_A_COMP0_COMP0_MASK 0x00FFFFFF 1337 #define SI32_ACCTR_A_COMP0_COMP0_SHIFT 0 1338 1339 1340 1341 struct SI32_ACCTR_A_COMP1_Struct 1342 { 1343 union 1344 { 1345 struct 1346 { 1347 // Pulse Counter Comparator 1 Threshold 1348 volatile uint32_t COMP1_BITS: 24; 1349 uint32_t reserved0: 8; 1350 }; 1351 volatile uint32_t U32; 1352 }; 1353 }; 1354 1355 #define SI32_ACCTR_A_COMP1_COMP1_MASK 0x00FFFFFF 1356 #define SI32_ACCTR_A_COMP1_COMP1_SHIFT 0 1357 1358 1359 1360 struct SI32_ACCTR_A_STATUS_Struct 1361 { 1362 union 1363 { 1364 struct 1365 { 1366 // Direction Change Interrupt Flag 1367 volatile uint32_t DIRCHGI: 1; 1368 // Counter Overflow Interrupt Flag 1369 volatile uint32_t OVFI: 1; 1370 // Digital Comparator 0 Interrupt Flag 1371 volatile uint32_t CMP0I: 1; 1372 // Digital Comparator 1 Interrupt Flag 1373 volatile uint32_t CMP1I: 1; 1374 // Integrator Transition Interrupt Flag 1375 volatile uint32_t TRANSI: 1; 1376 // Quadrature Error Interrupt Flag 1377 volatile uint32_t QERRI: 1; 1378 // Flutter Stop Interrupt Flag 1379 volatile uint32_t FLSTOPI: 1; 1380 // Flutter Start Interrupt Flag 1381 volatile uint32_t FLSTARTI: 1; 1382 // Direction Change Interrupt Enable 1383 volatile uint32_t DIRCHGIEN: 1; 1384 // Counter Overflow Interrupt Enable 1385 volatile uint32_t OVFIEN: 1; 1386 // Digital Comparator 0 Interrupt Enable 1387 volatile uint32_t CMP0IEN: 1; 1388 // Digital Comparator 1 Interrupt Enable 1389 volatile uint32_t CMP1IEN: 1; 1390 // Integrator Transition Interrupt Enable 1391 volatile uint32_t TRANSIEN: 1; 1392 // Quadrature Error Interrupt Enable 1393 volatile uint32_t QERRIEN: 1; 1394 // Flutter Stop Interrupt Enable 1395 volatile uint32_t FLSTOPIEN: 1; 1396 // Flutter Start Interrupt Enable 1397 volatile uint32_t FLSTARTIEN: 1; 1398 // Integrator 0 Output 1399 volatile uint32_t IN0: 1; 1400 // Integrator 1 Output 1401 volatile uint32_t IN1: 1; 1402 // Previous Integrator 0 Output 1403 volatile uint32_t IN0PREV: 1; 1404 // Previous Integrator 1 Output 1405 volatile uint32_t IN1PREV: 1; 1406 // Pulse Counter State 1407 volatile uint32_t STATE: 2; 1408 // Direction Flag 1409 volatile uint32_t DIRF: 1; 1410 // Flutter Detected Flag 1411 volatile uint32_t FLF: 1; 1412 // Direction History 1413 volatile uint32_t DIRHIST: 4; 1414 // Comparator 0 Output 1415 volatile uint32_t CMP0OUT: 1; 1416 // Comparator 1 Output 1417 volatile uint32_t CMP1OUT: 1; 1418 uint32_t reserved0: 2; 1419 }; 1420 volatile uint32_t U32; 1421 }; 1422 }; 1423 1424 #define SI32_ACCTR_A_STATUS_DIRCHGI_MASK 0x00000001 1425 #define SI32_ACCTR_A_STATUS_DIRCHGI_SHIFT 0 1426 // A direction change did not occur. 1427 #define SI32_ACCTR_A_STATUS_DIRCHGI_NOT_SET_VALUE 0 1428 #define SI32_ACCTR_A_STATUS_DIRCHGI_NOT_SET_U32 \ 1429 (SI32_ACCTR_A_STATUS_DIRCHGI_NOT_SET_VALUE << SI32_ACCTR_A_STATUS_DIRCHGI_SHIFT) 1430 // A direction change occurred. 1431 #define SI32_ACCTR_A_STATUS_DIRCHGI_SET_VALUE 1 1432 #define SI32_ACCTR_A_STATUS_DIRCHGI_SET_U32 \ 1433 (SI32_ACCTR_A_STATUS_DIRCHGI_SET_VALUE << SI32_ACCTR_A_STATUS_DIRCHGI_SHIFT) 1434 1435 #define SI32_ACCTR_A_STATUS_OVFI_MASK 0x00000002 1436 #define SI32_ACCTR_A_STATUS_OVFI_SHIFT 1 1437 // Neither of the counters overflowed. 1438 #define SI32_ACCTR_A_STATUS_OVFI_NOT_SET_VALUE 0 1439 #define SI32_ACCTR_A_STATUS_OVFI_NOT_SET_U32 \ 1440 (SI32_ACCTR_A_STATUS_OVFI_NOT_SET_VALUE << SI32_ACCTR_A_STATUS_OVFI_SHIFT) 1441 // One of the counters overflowed. 1442 #define SI32_ACCTR_A_STATUS_OVFI_SET_VALUE 1 1443 #define SI32_ACCTR_A_STATUS_OVFI_SET_U32 \ 1444 (SI32_ACCTR_A_STATUS_OVFI_SET_VALUE << SI32_ACCTR_A_STATUS_OVFI_SHIFT) 1445 1446 #define SI32_ACCTR_A_STATUS_CMP0I_MASK 0x00000004 1447 #define SI32_ACCTR_A_STATUS_CMP0I_SHIFT 2 1448 // A digital comparator 0 and counter 0 match did not occur. 1449 #define SI32_ACCTR_A_STATUS_CMP0I_NOT_SET_VALUE 0 1450 #define SI32_ACCTR_A_STATUS_CMP0I_NOT_SET_U32 \ 1451 (SI32_ACCTR_A_STATUS_CMP0I_NOT_SET_VALUE << SI32_ACCTR_A_STATUS_CMP0I_SHIFT) 1452 // A digital comparator 0 and counter 0 match occurred. 1453 #define SI32_ACCTR_A_STATUS_CMP0I_SET_VALUE 1 1454 #define SI32_ACCTR_A_STATUS_CMP0I_SET_U32 \ 1455 (SI32_ACCTR_A_STATUS_CMP0I_SET_VALUE << SI32_ACCTR_A_STATUS_CMP0I_SHIFT) 1456 1457 #define SI32_ACCTR_A_STATUS_CMP1I_MASK 0x00000008 1458 #define SI32_ACCTR_A_STATUS_CMP1I_SHIFT 3 1459 // A digital comparator 1 and counter 1 match did not occur. 1460 #define SI32_ACCTR_A_STATUS_CMP1I_NOT_SET_VALUE 0 1461 #define SI32_ACCTR_A_STATUS_CMP1I_NOT_SET_U32 \ 1462 (SI32_ACCTR_A_STATUS_CMP1I_NOT_SET_VALUE << SI32_ACCTR_A_STATUS_CMP1I_SHIFT) 1463 // A digital comparator 1 and counter 1 match occurred. 1464 #define SI32_ACCTR_A_STATUS_CMP1I_SET_VALUE 1 1465 #define SI32_ACCTR_A_STATUS_CMP1I_SET_U32 \ 1466 (SI32_ACCTR_A_STATUS_CMP1I_SET_VALUE << SI32_ACCTR_A_STATUS_CMP1I_SHIFT) 1467 1468 #define SI32_ACCTR_A_STATUS_TRANSI_MASK 0x00000010 1469 #define SI32_ACCTR_A_STATUS_TRANSI_SHIFT 4 1470 // An integrator output transition did not occur. 1471 #define SI32_ACCTR_A_STATUS_TRANSI_NOT_SET_VALUE 0 1472 #define SI32_ACCTR_A_STATUS_TRANSI_NOT_SET_U32 \ 1473 (SI32_ACCTR_A_STATUS_TRANSI_NOT_SET_VALUE << SI32_ACCTR_A_STATUS_TRANSI_SHIFT) 1474 // An integrator output transition occurred. 1475 #define SI32_ACCTR_A_STATUS_TRANSI_SET_VALUE 1 1476 #define SI32_ACCTR_A_STATUS_TRANSI_SET_U32 \ 1477 (SI32_ACCTR_A_STATUS_TRANSI_SET_VALUE << SI32_ACCTR_A_STATUS_TRANSI_SHIFT) 1478 1479 #define SI32_ACCTR_A_STATUS_QERRI_MASK 0x00000020 1480 #define SI32_ACCTR_A_STATUS_QERRI_SHIFT 5 1481 // A quadrature error did not occur. 1482 #define SI32_ACCTR_A_STATUS_QERRI_NOT_SET_VALUE 0 1483 #define SI32_ACCTR_A_STATUS_QERRI_NOT_SET_U32 \ 1484 (SI32_ACCTR_A_STATUS_QERRI_NOT_SET_VALUE << SI32_ACCTR_A_STATUS_QERRI_SHIFT) 1485 // A quadrature error occurred. 1486 #define SI32_ACCTR_A_STATUS_QERRI_SET_VALUE 1 1487 #define SI32_ACCTR_A_STATUS_QERRI_SET_U32 \ 1488 (SI32_ACCTR_A_STATUS_QERRI_SET_VALUE << SI32_ACCTR_A_STATUS_QERRI_SHIFT) 1489 1490 #define SI32_ACCTR_A_STATUS_FLSTOPI_MASK 0x00000040 1491 #define SI32_ACCTR_A_STATUS_FLSTOPI_SHIFT 6 1492 // A flutter detection end event did not occur. 1493 #define SI32_ACCTR_A_STATUS_FLSTOPI_NOT_SET_VALUE 0 1494 #define SI32_ACCTR_A_STATUS_FLSTOPI_NOT_SET_U32 \ 1495 (SI32_ACCTR_A_STATUS_FLSTOPI_NOT_SET_VALUE << SI32_ACCTR_A_STATUS_FLSTOPI_SHIFT) 1496 // A flutter detection end event occurred. 1497 #define SI32_ACCTR_A_STATUS_FLSTOPI_SET_VALUE 1 1498 #define SI32_ACCTR_A_STATUS_FLSTOPI_SET_U32 \ 1499 (SI32_ACCTR_A_STATUS_FLSTOPI_SET_VALUE << SI32_ACCTR_A_STATUS_FLSTOPI_SHIFT) 1500 1501 #define SI32_ACCTR_A_STATUS_FLSTARTI_MASK 0x00000080 1502 #define SI32_ACCTR_A_STATUS_FLSTARTI_SHIFT 7 1503 // A flutter detection start event did not occur. 1504 #define SI32_ACCTR_A_STATUS_FLSTARTI_NOT_SET_VALUE 0 1505 #define SI32_ACCTR_A_STATUS_FLSTARTI_NOT_SET_U32 \ 1506 (SI32_ACCTR_A_STATUS_FLSTARTI_NOT_SET_VALUE << SI32_ACCTR_A_STATUS_FLSTARTI_SHIFT) 1507 // A flutter detection start event occurred. 1508 #define SI32_ACCTR_A_STATUS_FLSTARTI_SET_VALUE 1 1509 #define SI32_ACCTR_A_STATUS_FLSTARTI_SET_U32 \ 1510 (SI32_ACCTR_A_STATUS_FLSTARTI_SET_VALUE << SI32_ACCTR_A_STATUS_FLSTARTI_SHIFT) 1511 1512 #define SI32_ACCTR_A_STATUS_DIRCHGIEN_MASK 0x00000100 1513 #define SI32_ACCTR_A_STATUS_DIRCHGIEN_SHIFT 8 1514 // Disable direction change as an interrupt or wake up source. 1515 #define SI32_ACCTR_A_STATUS_DIRCHGIEN_DISABLED_VALUE 0 1516 #define SI32_ACCTR_A_STATUS_DIRCHGIEN_DISABLED_U32 \ 1517 (SI32_ACCTR_A_STATUS_DIRCHGIEN_DISABLED_VALUE << SI32_ACCTR_A_STATUS_DIRCHGIEN_SHIFT) 1518 // Enable direction change as an interrupt or wake up source. 1519 #define SI32_ACCTR_A_STATUS_DIRCHGIEN_ENABLED_VALUE 1 1520 #define SI32_ACCTR_A_STATUS_DIRCHGIEN_ENABLED_U32 \ 1521 (SI32_ACCTR_A_STATUS_DIRCHGIEN_ENABLED_VALUE << SI32_ACCTR_A_STATUS_DIRCHGIEN_SHIFT) 1522 1523 #define SI32_ACCTR_A_STATUS_OVFIEN_MASK 0x00000200 1524 #define SI32_ACCTR_A_STATUS_OVFIEN_SHIFT 9 1525 // Disable counter overflows as an interrupt or wake up source. 1526 #define SI32_ACCTR_A_STATUS_OVFIEN_DISABLED_VALUE 0 1527 #define SI32_ACCTR_A_STATUS_OVFIEN_DISABLED_U32 \ 1528 (SI32_ACCTR_A_STATUS_OVFIEN_DISABLED_VALUE << SI32_ACCTR_A_STATUS_OVFIEN_SHIFT) 1529 // Enable counter overflows as an interrupt or wake up source. 1530 #define SI32_ACCTR_A_STATUS_OVFIEN_ENABLED_VALUE 1 1531 #define SI32_ACCTR_A_STATUS_OVFIEN_ENABLED_U32 \ 1532 (SI32_ACCTR_A_STATUS_OVFIEN_ENABLED_VALUE << SI32_ACCTR_A_STATUS_OVFIEN_SHIFT) 1533 1534 #define SI32_ACCTR_A_STATUS_CMP0IEN_MASK 0x00000400 1535 #define SI32_ACCTR_A_STATUS_CMP0IEN_SHIFT 10 1536 // Disable comparator 0 as an interrupt or wake up source. 1537 #define SI32_ACCTR_A_STATUS_CMP0IEN_DISABLED_VALUE 0 1538 #define SI32_ACCTR_A_STATUS_CMP0IEN_DISABLED_U32 \ 1539 (SI32_ACCTR_A_STATUS_CMP0IEN_DISABLED_VALUE << SI32_ACCTR_A_STATUS_CMP0IEN_SHIFT) 1540 // Enable comparator 0 as an interrupt or wake up source. 1541 #define SI32_ACCTR_A_STATUS_CMP0IEN_ENABLED_VALUE 1 1542 #define SI32_ACCTR_A_STATUS_CMP0IEN_ENABLED_U32 \ 1543 (SI32_ACCTR_A_STATUS_CMP0IEN_ENABLED_VALUE << SI32_ACCTR_A_STATUS_CMP0IEN_SHIFT) 1544 1545 #define SI32_ACCTR_A_STATUS_CMP1IEN_MASK 0x00000800 1546 #define SI32_ACCTR_A_STATUS_CMP1IEN_SHIFT 11 1547 // Disable comparator 1 as an interrupt or wake up source. 1548 #define SI32_ACCTR_A_STATUS_CMP1IEN_DISABLED_VALUE 0 1549 #define SI32_ACCTR_A_STATUS_CMP1IEN_DISABLED_U32 \ 1550 (SI32_ACCTR_A_STATUS_CMP1IEN_DISABLED_VALUE << SI32_ACCTR_A_STATUS_CMP1IEN_SHIFT) 1551 // Enable comparator 1 as an interrupt or wake up source. 1552 #define SI32_ACCTR_A_STATUS_CMP1IEN_ENABLED_VALUE 1 1553 #define SI32_ACCTR_A_STATUS_CMP1IEN_ENABLED_U32 \ 1554 (SI32_ACCTR_A_STATUS_CMP1IEN_ENABLED_VALUE << SI32_ACCTR_A_STATUS_CMP1IEN_SHIFT) 1555 1556 #define SI32_ACCTR_A_STATUS_TRANSIEN_MASK 0x00001000 1557 #define SI32_ACCTR_A_STATUS_TRANSIEN_SHIFT 12 1558 // Disable integrator transitions as an interrupt or wake up source. 1559 #define SI32_ACCTR_A_STATUS_TRANSIEN_DISABLED_VALUE 0 1560 #define SI32_ACCTR_A_STATUS_TRANSIEN_DISABLED_U32 \ 1561 (SI32_ACCTR_A_STATUS_TRANSIEN_DISABLED_VALUE << SI32_ACCTR_A_STATUS_TRANSIEN_SHIFT) 1562 // Enable integrator transitions as an interrupt or wake up source. 1563 #define SI32_ACCTR_A_STATUS_TRANSIEN_ENABLED_VALUE 1 1564 #define SI32_ACCTR_A_STATUS_TRANSIEN_ENABLED_U32 \ 1565 (SI32_ACCTR_A_STATUS_TRANSIEN_ENABLED_VALUE << SI32_ACCTR_A_STATUS_TRANSIEN_SHIFT) 1566 1567 #define SI32_ACCTR_A_STATUS_QERRIEN_MASK 0x00002000 1568 #define SI32_ACCTR_A_STATUS_QERRIEN_SHIFT 13 1569 // Disable quadrature error as an interrupt or wake up source. 1570 #define SI32_ACCTR_A_STATUS_QERRIEN_DISABLED_VALUE 0 1571 #define SI32_ACCTR_A_STATUS_QERRIEN_DISABLED_U32 \ 1572 (SI32_ACCTR_A_STATUS_QERRIEN_DISABLED_VALUE << SI32_ACCTR_A_STATUS_QERRIEN_SHIFT) 1573 // Enable quadrature error as an interrupt or wake up source. 1574 #define SI32_ACCTR_A_STATUS_QERRIEN_ENABLED_VALUE 1 1575 #define SI32_ACCTR_A_STATUS_QERRIEN_ENABLED_U32 \ 1576 (SI32_ACCTR_A_STATUS_QERRIEN_ENABLED_VALUE << SI32_ACCTR_A_STATUS_QERRIEN_SHIFT) 1577 1578 #define SI32_ACCTR_A_STATUS_FLSTOPIEN_MASK 0x00004000 1579 #define SI32_ACCTR_A_STATUS_FLSTOPIEN_SHIFT 14 1580 // Disable flutter detection end events as an interrupt or wake up source. 1581 #define SI32_ACCTR_A_STATUS_FLSTOPIEN_DISABLED_VALUE 0 1582 #define SI32_ACCTR_A_STATUS_FLSTOPIEN_DISABLED_U32 \ 1583 (SI32_ACCTR_A_STATUS_FLSTOPIEN_DISABLED_VALUE << SI32_ACCTR_A_STATUS_FLSTOPIEN_SHIFT) 1584 // Enable flutter detection end events as an interrupt or wake up source. 1585 #define SI32_ACCTR_A_STATUS_FLSTOPIEN_ENABLED_VALUE 1 1586 #define SI32_ACCTR_A_STATUS_FLSTOPIEN_ENABLED_U32 \ 1587 (SI32_ACCTR_A_STATUS_FLSTOPIEN_ENABLED_VALUE << SI32_ACCTR_A_STATUS_FLSTOPIEN_SHIFT) 1588 1589 #define SI32_ACCTR_A_STATUS_FLSTARTIEN_MASK 0x00008000 1590 #define SI32_ACCTR_A_STATUS_FLSTARTIEN_SHIFT 15 1591 // Disable flutter detection start events as an interrupt or wake up source. 1592 #define SI32_ACCTR_A_STATUS_FLSTARTIEN_DISABLED_VALUE 0 1593 #define SI32_ACCTR_A_STATUS_FLSTARTIEN_DISABLED_U32 \ 1594 (SI32_ACCTR_A_STATUS_FLSTARTIEN_DISABLED_VALUE << SI32_ACCTR_A_STATUS_FLSTARTIEN_SHIFT) 1595 // Enable flutter detection start events as an interrupt or wake up source. 1596 #define SI32_ACCTR_A_STATUS_FLSTARTIEN_ENABLED_VALUE 1 1597 #define SI32_ACCTR_A_STATUS_FLSTARTIEN_ENABLED_U32 \ 1598 (SI32_ACCTR_A_STATUS_FLSTARTIEN_ENABLED_VALUE << SI32_ACCTR_A_STATUS_FLSTARTIEN_SHIFT) 1599 1600 #define SI32_ACCTR_A_STATUS_IN0_MASK 0x00010000 1601 #define SI32_ACCTR_A_STATUS_IN0_SHIFT 16 1602 // The integrator 0 output is low. 1603 #define SI32_ACCTR_A_STATUS_IN0_LOW_VALUE 0 1604 #define SI32_ACCTR_A_STATUS_IN0_LOW_U32 \ 1605 (SI32_ACCTR_A_STATUS_IN0_LOW_VALUE << SI32_ACCTR_A_STATUS_IN0_SHIFT) 1606 // The integrator 0 output is high. 1607 #define SI32_ACCTR_A_STATUS_IN0_HIGH_VALUE 1 1608 #define SI32_ACCTR_A_STATUS_IN0_HIGH_U32 \ 1609 (SI32_ACCTR_A_STATUS_IN0_HIGH_VALUE << SI32_ACCTR_A_STATUS_IN0_SHIFT) 1610 1611 #define SI32_ACCTR_A_STATUS_IN1_MASK 0x00020000 1612 #define SI32_ACCTR_A_STATUS_IN1_SHIFT 17 1613 // The integrator 1 output is low. 1614 #define SI32_ACCTR_A_STATUS_IN1_LOW_VALUE 0 1615 #define SI32_ACCTR_A_STATUS_IN1_LOW_U32 \ 1616 (SI32_ACCTR_A_STATUS_IN1_LOW_VALUE << SI32_ACCTR_A_STATUS_IN1_SHIFT) 1617 // The integrator 1 output is high. 1618 #define SI32_ACCTR_A_STATUS_IN1_HIGH_VALUE 1 1619 #define SI32_ACCTR_A_STATUS_IN1_HIGH_U32 \ 1620 (SI32_ACCTR_A_STATUS_IN1_HIGH_VALUE << SI32_ACCTR_A_STATUS_IN1_SHIFT) 1621 1622 #define SI32_ACCTR_A_STATUS_IN0PREV_MASK 0x00040000 1623 #define SI32_ACCTR_A_STATUS_IN0PREV_SHIFT 18 1624 // The previous integrator 0 output was low. 1625 #define SI32_ACCTR_A_STATUS_IN0PREV_LOW_VALUE 0 1626 #define SI32_ACCTR_A_STATUS_IN0PREV_LOW_U32 \ 1627 (SI32_ACCTR_A_STATUS_IN0PREV_LOW_VALUE << SI32_ACCTR_A_STATUS_IN0PREV_SHIFT) 1628 // The previous integrator 0 output was high. 1629 #define SI32_ACCTR_A_STATUS_IN0PREV_HIGH_VALUE 1 1630 #define SI32_ACCTR_A_STATUS_IN0PREV_HIGH_U32 \ 1631 (SI32_ACCTR_A_STATUS_IN0PREV_HIGH_VALUE << SI32_ACCTR_A_STATUS_IN0PREV_SHIFT) 1632 1633 #define SI32_ACCTR_A_STATUS_IN1PREV_MASK 0x00080000 1634 #define SI32_ACCTR_A_STATUS_IN1PREV_SHIFT 19 1635 // The previous integrator 1 output was low. 1636 #define SI32_ACCTR_A_STATUS_IN1PREV_LOW_VALUE 0 1637 #define SI32_ACCTR_A_STATUS_IN1PREV_LOW_U32 \ 1638 (SI32_ACCTR_A_STATUS_IN1PREV_LOW_VALUE << SI32_ACCTR_A_STATUS_IN1PREV_SHIFT) 1639 // The previous integrator 1 output was high. 1640 #define SI32_ACCTR_A_STATUS_IN1PREV_HIGH_VALUE 1 1641 #define SI32_ACCTR_A_STATUS_IN1PREV_HIGH_U32 \ 1642 (SI32_ACCTR_A_STATUS_IN1PREV_HIGH_VALUE << SI32_ACCTR_A_STATUS_IN1PREV_SHIFT) 1643 1644 #define SI32_ACCTR_A_STATUS_STATE_MASK 0x00300000 1645 #define SI32_ACCTR_A_STATUS_STATE_SHIFT 20 1646 // The pulse counter is in state 0. 1647 #define SI32_ACCTR_A_STATUS_STATE_ST0_VALUE 0 1648 #define SI32_ACCTR_A_STATUS_STATE_ST0_U32 \ 1649 (SI32_ACCTR_A_STATUS_STATE_ST0_VALUE << SI32_ACCTR_A_STATUS_STATE_SHIFT) 1650 // The pulse counter is in state 1. 1651 #define SI32_ACCTR_A_STATUS_STATE_ST1_VALUE 1 1652 #define SI32_ACCTR_A_STATUS_STATE_ST1_U32 \ 1653 (SI32_ACCTR_A_STATUS_STATE_ST1_VALUE << SI32_ACCTR_A_STATUS_STATE_SHIFT) 1654 // The pulse counter is in state 2. 1655 #define SI32_ACCTR_A_STATUS_STATE_ST2_VALUE 2 1656 #define SI32_ACCTR_A_STATUS_STATE_ST2_U32 \ 1657 (SI32_ACCTR_A_STATUS_STATE_ST2_VALUE << SI32_ACCTR_A_STATUS_STATE_SHIFT) 1658 // The pulse counter is in state 3. 1659 #define SI32_ACCTR_A_STATUS_STATE_ST3_VALUE 3 1660 #define SI32_ACCTR_A_STATUS_STATE_ST3_U32 \ 1661 (SI32_ACCTR_A_STATUS_STATE_ST3_VALUE << SI32_ACCTR_A_STATUS_STATE_SHIFT) 1662 1663 #define SI32_ACCTR_A_STATUS_DIRF_MASK 0x00400000 1664 #define SI32_ACCTR_A_STATUS_DIRF_SHIFT 22 1665 // The current direction is counter-clockwise. 1666 #define SI32_ACCTR_A_STATUS_DIRF_COUNTER_CLOCKWISE_VALUE 0 1667 #define SI32_ACCTR_A_STATUS_DIRF_COUNTER_CLOCKWISE_U32 \ 1668 (SI32_ACCTR_A_STATUS_DIRF_COUNTER_CLOCKWISE_VALUE << SI32_ACCTR_A_STATUS_DIRF_SHIFT) 1669 // The current direction is clockwise. 1670 #define SI32_ACCTR_A_STATUS_DIRF_CLOCKWISE_VALUE 1 1671 #define SI32_ACCTR_A_STATUS_DIRF_CLOCKWISE_U32 \ 1672 (SI32_ACCTR_A_STATUS_DIRF_CLOCKWISE_VALUE << SI32_ACCTR_A_STATUS_DIRF_SHIFT) 1673 1674 #define SI32_ACCTR_A_STATUS_FLF_MASK 0x00800000 1675 #define SI32_ACCTR_A_STATUS_FLF_SHIFT 23 1676 // The switch operates normally. 1677 #define SI32_ACCTR_A_STATUS_FLF_NOT_SET_VALUE 0 1678 #define SI32_ACCTR_A_STATUS_FLF_NOT_SET_U32 \ 1679 (SI32_ACCTR_A_STATUS_FLF_NOT_SET_VALUE << SI32_ACCTR_A_STATUS_FLF_SHIFT) 1680 // A flutter event was detected. 1681 #define SI32_ACCTR_A_STATUS_FLF_SET_VALUE 1 1682 #define SI32_ACCTR_A_STATUS_FLF_SET_U32 \ 1683 (SI32_ACCTR_A_STATUS_FLF_SET_VALUE << SI32_ACCTR_A_STATUS_FLF_SHIFT) 1684 1685 #define SI32_ACCTR_A_STATUS_DIRHIST_MASK 0x0F000000 1686 #define SI32_ACCTR_A_STATUS_DIRHIST_SHIFT 24 1687 1688 #define SI32_ACCTR_A_STATUS_CMP0OUT_MASK 0x10000000 1689 #define SI32_ACCTR_A_STATUS_CMP0OUT_SHIFT 28 1690 // The output of comparator 0 is low. 1691 #define SI32_ACCTR_A_STATUS_CMP0OUT_LOW_VALUE 0 1692 #define SI32_ACCTR_A_STATUS_CMP0OUT_LOW_U32 \ 1693 (SI32_ACCTR_A_STATUS_CMP0OUT_LOW_VALUE << SI32_ACCTR_A_STATUS_CMP0OUT_SHIFT) 1694 // The output of comparator 0 is high. 1695 #define SI32_ACCTR_A_STATUS_CMP0OUT_HIGH_VALUE 1 1696 #define SI32_ACCTR_A_STATUS_CMP0OUT_HIGH_U32 \ 1697 (SI32_ACCTR_A_STATUS_CMP0OUT_HIGH_VALUE << SI32_ACCTR_A_STATUS_CMP0OUT_SHIFT) 1698 1699 #define SI32_ACCTR_A_STATUS_CMP1OUT_MASK 0x20000000 1700 #define SI32_ACCTR_A_STATUS_CMP1OUT_SHIFT 29 1701 // The output of comparator 1 is low. 1702 #define SI32_ACCTR_A_STATUS_CMP1OUT_LOW_VALUE 0 1703 #define SI32_ACCTR_A_STATUS_CMP1OUT_LOW_U32 \ 1704 (SI32_ACCTR_A_STATUS_CMP1OUT_LOW_VALUE << SI32_ACCTR_A_STATUS_CMP1OUT_SHIFT) 1705 // The output of comparator1 is high. 1706 #define SI32_ACCTR_A_STATUS_CMP1OUT_HIGH_VALUE 1 1707 #define SI32_ACCTR_A_STATUS_CMP1OUT_HIGH_U32 \ 1708 (SI32_ACCTR_A_STATUS_CMP1OUT_HIGH_VALUE << SI32_ACCTR_A_STATUS_CMP1OUT_SHIFT) 1709 1710 1711 1712 struct SI32_ACCTR_A_DEBUGEN_Struct 1713 { 1714 union 1715 { 1716 struct 1717 { 1718 uint32_t reserved0: 14; 1719 // Debug Output Enable 1720 volatile uint32_t DBGOEN: 1; 1721 uint32_t reserved1: 17; 1722 }; 1723 volatile uint32_t U32; 1724 }; 1725 }; 1726 1727 #define SI32_ACCTR_A_DEBUGEN_DBGOEN_MASK 0x00004000 1728 #define SI32_ACCTR_A_DEBUGEN_DBGOEN_SHIFT 14 1729 #define SI32_ACCTR_A_DEBUGEN_DBGOEN_DISABLED_VALUE 0 1730 #define SI32_ACCTR_A_DEBUGEN_DBGOEN_DISABLED_U32 \ 1731 (SI32_ACCTR_A_DEBUGEN_DBGOEN_DISABLED_VALUE << SI32_ACCTR_A_DEBUGEN_DBGOEN_SHIFT) 1732 #define SI32_ACCTR_A_DEBUGEN_DBGOEN_ENABLED_VALUE 1 1733 #define SI32_ACCTR_A_DEBUGEN_DBGOEN_ENABLED_U32 \ 1734 (SI32_ACCTR_A_DEBUGEN_DBGOEN_ENABLED_VALUE << SI32_ACCTR_A_DEBUGEN_DBGOEN_SHIFT) 1735 1736 1737 1738 typedef struct SI32_ACCTR_A_Struct 1739 { 1740 struct SI32_ACCTR_A_CONFIG_Struct CONFIG ; // Base Address + 0x0 1741 uint32_t reserved0; 1742 uint32_t reserved1; 1743 uint32_t reserved2; 1744 struct SI32_ACCTR_A_CONTROL_Struct CONTROL ; // Base Address + 0x10 1745 uint32_t reserved3; 1746 uint32_t reserved4; 1747 uint32_t reserved5; 1748 struct SI32_ACCTR_A_LCCONFIG_Struct LCCONFIG ; // Base Address + 0x20 1749 uint32_t reserved6; 1750 uint32_t reserved7; 1751 uint32_t reserved8; 1752 struct SI32_ACCTR_A_TIMING_Struct TIMING ; // Base Address + 0x30 1753 uint32_t reserved9; 1754 uint32_t reserved10; 1755 uint32_t reserved11; 1756 struct SI32_ACCTR_A_LCMODE_Struct LCMODE ; // Base Address + 0x40 1757 uint32_t reserved12; 1758 uint32_t reserved13; 1759 uint32_t reserved14; 1760 struct SI32_ACCTR_A_LCCLKCONTROL_Struct LCCLKCONTROL ; // Base Address + 0x50 1761 uint32_t reserved15; 1762 uint32_t reserved16; 1763 uint32_t reserved17; 1764 struct SI32_ACCTR_A_LCLIMITS_Struct LCLIMITS ; // Base Address + 0x60 1765 uint32_t reserved18; 1766 uint32_t reserved19; 1767 uint32_t reserved20; 1768 struct SI32_ACCTR_A_LCCOUNT_Struct LCCOUNT ; // Base Address + 0x70 1769 uint32_t reserved21; 1770 uint32_t reserved22; 1771 uint32_t reserved23; 1772 struct SI32_ACCTR_A_DBCONFIG_Struct DBCONFIG ; // Base Address + 0x80 1773 uint32_t reserved24; 1774 uint32_t reserved25; 1775 uint32_t reserved26; 1776 struct SI32_ACCTR_A_COUNT0_Struct COUNT0 ; // Base Address + 0x90 1777 uint32_t reserved27; 1778 uint32_t reserved28; 1779 uint32_t reserved29; 1780 struct SI32_ACCTR_A_COUNT1_Struct COUNT1 ; // Base Address + 0xa0 1781 uint32_t reserved30; 1782 uint32_t reserved31; 1783 uint32_t reserved32; 1784 struct SI32_ACCTR_A_COMP0_Struct COMP0 ; // Base Address + 0xb0 1785 uint32_t reserved33; 1786 uint32_t reserved34; 1787 uint32_t reserved35; 1788 struct SI32_ACCTR_A_COMP1_Struct COMP1 ; // Base Address + 0xc0 1789 uint32_t reserved36; 1790 uint32_t reserved37; 1791 uint32_t reserved38; 1792 struct SI32_ACCTR_A_STATUS_Struct STATUS ; // Base Address + 0xd0 1793 uint32_t reserved39; 1794 uint32_t reserved40; 1795 uint32_t reserved41; 1796 struct SI32_ACCTR_A_DEBUGEN_Struct DEBUGEN ; // Base Address + 0xe0 1797 uint32_t reserved42; 1798 uint32_t reserved43; 1799 uint32_t reserved44; 1800 } SI32_ACCTR_A_Type; 1801 1802 #ifdef __cplusplus 1803 } 1804 #endif 1805 1806 #endif // __SI32_ACCTR_A_REGISTERS_H__ 1807 1808 //-eof-------------------------------------------------------------------------- 1809 1810