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_EPCA_A_REGISTERS_H__ 27 #define __SI32_EPCA_A_REGISTERS_H__ 28 29 #include <stdint.h> 30 31 #ifdef __cplusplus 32 extern "C" { 33 #endif 34 35 struct SI32_EPCA_A_MODE_Struct 36 { 37 union 38 { 39 struct 40 { 41 // Input Clock Divider 42 volatile uint32_t CLKDIV: 10; 43 // Input Clock (F<subscript>CLKIN</subscript>) Select 44 volatile uint32_t CLKSEL: 3; 45 uint32_t reserved0: 1; 46 // High Drive Port Bank Output Select 47 volatile uint32_t HDOSEL: 2; 48 // DMA Write End Index 49 volatile uint32_t DEND: 3; 50 // DMA Write Transfer Pointer 51 volatile uint32_t DPTR: 3; 52 // DMA Target Start Index 53 volatile uint32_t DSTART: 3; 54 // DMA Busy Flag 55 volatile uint32_t DBUSYF: 1; 56 uint32_t reserved1: 1; 57 // Standard Port Bank Output Select 58 volatile uint32_t STDOSEL: 2; 59 uint32_t reserved2: 3; 60 }; 61 volatile uint32_t U32; 62 }; 63 }; 64 65 #define SI32_EPCA_A_MODE_CLKDIV_MASK 0x000003FF 66 #define SI32_EPCA_A_MODE_CLKDIV_SHIFT 0 67 68 #define SI32_EPCA_A_MODE_CLKSEL_MASK 0x00001C00 69 #define SI32_EPCA_A_MODE_CLKSEL_SHIFT 10 70 // Set the APB as the input clock (FCLKIN). 71 #define SI32_EPCA_A_MODE_CLKSEL_APB_VALUE 0 72 #define SI32_EPCA_A_MODE_CLKSEL_APB_U32 \ 73 (SI32_EPCA_A_MODE_CLKSEL_APB_VALUE << SI32_EPCA_A_MODE_CLKSEL_SHIFT) 74 // Set Timer 0 low overflows divided by 2 as the input clock (FCLKIN). 75 #define SI32_EPCA_A_MODE_CLKSEL_TIMER0_VALUE 1 76 #define SI32_EPCA_A_MODE_CLKSEL_TIMER0_U32 \ 77 (SI32_EPCA_A_MODE_CLKSEL_TIMER0_VALUE << SI32_EPCA_A_MODE_CLKSEL_SHIFT) 78 // Set high-to-low transitions on ECI divided by 2 as the input clock (FCLKIN). 79 #define SI32_EPCA_A_MODE_CLKSEL_HL_ECI_VALUE 2 80 #define SI32_EPCA_A_MODE_CLKSEL_HL_ECI_U32 \ 81 (SI32_EPCA_A_MODE_CLKSEL_HL_ECI_VALUE << SI32_EPCA_A_MODE_CLKSEL_SHIFT) 82 // Set the external oscillator module output (EXTOSCn) divided by 2 as the input 83 // clock (FCLKIN). 84 #define SI32_EPCA_A_MODE_CLKSEL_EXTOSCN_VALUE 3 85 #define SI32_EPCA_A_MODE_CLKSEL_EXTOSCN_U32 \ 86 (SI32_EPCA_A_MODE_CLKSEL_EXTOSCN_VALUE << SI32_EPCA_A_MODE_CLKSEL_SHIFT) 87 // Set ECI transitions divided by 2 as the input clock (FCLKIN). 88 #define SI32_EPCA_A_MODE_CLKSEL_ECI_VALUE 4 89 #define SI32_EPCA_A_MODE_CLKSEL_ECI_U32 \ 90 (SI32_EPCA_A_MODE_CLKSEL_ECI_VALUE << SI32_EPCA_A_MODE_CLKSEL_SHIFT) 91 92 #define SI32_EPCA_A_MODE_HDOSEL_MASK 0x0000C000 93 #define SI32_EPCA_A_MODE_HDOSEL_SHIFT 14 94 // Select three differential outputs from Channels 3, 4, and 5 for the High Drive 95 // pins. 96 #define SI32_EPCA_A_MODE_HDOSEL_THREE_DIFF_VALUE 0 97 #define SI32_EPCA_A_MODE_HDOSEL_THREE_DIFF_U32 \ 98 (SI32_EPCA_A_MODE_HDOSEL_THREE_DIFF_VALUE << SI32_EPCA_A_MODE_HDOSEL_SHIFT) 99 // Select the differential outputs from Channels 4 and 5 and non-differential 100 // outputs from Channels 2 and 3 for the High Drive pins. 101 #define SI32_EPCA_A_MODE_HDOSEL_TWO_DIFF_VALUE 1 102 #define SI32_EPCA_A_MODE_HDOSEL_TWO_DIFF_U32 \ 103 (SI32_EPCA_A_MODE_HDOSEL_TWO_DIFF_VALUE << SI32_EPCA_A_MODE_HDOSEL_SHIFT) 104 // Select the differential output from Channel 5 and non-differential outputs from 105 // Channels 1-4 for the High Drive pins. 106 #define SI32_EPCA_A_MODE_HDOSEL_ONE_DIFF_VALUE 2 107 #define SI32_EPCA_A_MODE_HDOSEL_ONE_DIFF_U32 \ 108 (SI32_EPCA_A_MODE_HDOSEL_ONE_DIFF_VALUE << SI32_EPCA_A_MODE_HDOSEL_SHIFT) 109 // Select the non-differential channel outputs (Channels 0-5) for the High Drive 110 // pins. 111 #define SI32_EPCA_A_MODE_HDOSEL_NO_DIFF_VALUE 3 112 #define SI32_EPCA_A_MODE_HDOSEL_NO_DIFF_U32 \ 113 (SI32_EPCA_A_MODE_HDOSEL_NO_DIFF_VALUE << SI32_EPCA_A_MODE_HDOSEL_SHIFT) 114 115 #define SI32_EPCA_A_MODE_DEND_MASK 0x00070000 116 #define SI32_EPCA_A_MODE_DEND_SHIFT 16 117 // Set the last register in a DMA write transfer to LIMITUPD. 118 #define SI32_EPCA_A_MODE_DEND_LIMIT_VALUE 0 119 #define SI32_EPCA_A_MODE_DEND_LIMIT_U32 \ 120 (SI32_EPCA_A_MODE_DEND_LIMIT_VALUE << SI32_EPCA_A_MODE_DEND_SHIFT) 121 // Set the last register in a DMA write transfer to Channel 0 CCAPVUPD. 122 #define SI32_EPCA_A_MODE_DEND_CH0_VALUE 1 123 #define SI32_EPCA_A_MODE_DEND_CH0_U32 \ 124 (SI32_EPCA_A_MODE_DEND_CH0_VALUE << SI32_EPCA_A_MODE_DEND_SHIFT) 125 // Set the last register in a DMA write transfer to Channel 1 CCAPVUPD. 126 #define SI32_EPCA_A_MODE_DEND_CH1_VALUE 2 127 #define SI32_EPCA_A_MODE_DEND_CH1_U32 \ 128 (SI32_EPCA_A_MODE_DEND_CH1_VALUE << SI32_EPCA_A_MODE_DEND_SHIFT) 129 // Set the last register in a DMA write transfer to Channel 2 CCAPVUPD. 130 #define SI32_EPCA_A_MODE_DEND_CH2_VALUE 3 131 #define SI32_EPCA_A_MODE_DEND_CH2_U32 \ 132 (SI32_EPCA_A_MODE_DEND_CH2_VALUE << SI32_EPCA_A_MODE_DEND_SHIFT) 133 // Set the last register in a DMA write transfer to Channel 3 CCAPVUPD. 134 #define SI32_EPCA_A_MODE_DEND_CH3_VALUE 4 135 #define SI32_EPCA_A_MODE_DEND_CH3_U32 \ 136 (SI32_EPCA_A_MODE_DEND_CH3_VALUE << SI32_EPCA_A_MODE_DEND_SHIFT) 137 // Set the last register in a DMA write transfer to Channel 4 CCAPVUPD. 138 #define SI32_EPCA_A_MODE_DEND_CH4_VALUE 5 139 #define SI32_EPCA_A_MODE_DEND_CH4_U32 \ 140 (SI32_EPCA_A_MODE_DEND_CH4_VALUE << SI32_EPCA_A_MODE_DEND_SHIFT) 141 // Set the last register in a DMA write transfer to Channel 5 CCAPVUPD. 142 #define SI32_EPCA_A_MODE_DEND_CH5_VALUE 6 143 #define SI32_EPCA_A_MODE_DEND_CH5_U32 \ 144 (SI32_EPCA_A_MODE_DEND_CH5_VALUE << SI32_EPCA_A_MODE_DEND_SHIFT) 145 // Empty slot. 146 #define SI32_EPCA_A_MODE_DEND_EMPTY_VALUE 7 147 #define SI32_EPCA_A_MODE_DEND_EMPTY_U32 \ 148 (SI32_EPCA_A_MODE_DEND_EMPTY_VALUE << SI32_EPCA_A_MODE_DEND_SHIFT) 149 150 #define SI32_EPCA_A_MODE_DPTR_MASK 0x00380000 151 #define SI32_EPCA_A_MODE_DPTR_SHIFT 19 152 // The DMA channel will write to LIMITUPD next. 153 #define SI32_EPCA_A_MODE_DPTR_LIMIT_VALUE 0 154 #define SI32_EPCA_A_MODE_DPTR_LIMIT_U32 \ 155 (SI32_EPCA_A_MODE_DPTR_LIMIT_VALUE << SI32_EPCA_A_MODE_DPTR_SHIFT) 156 // The DMA channel will write to Channel 0 CCAPVUPD next. 157 #define SI32_EPCA_A_MODE_DPTR_CH0_VALUE 1 158 #define SI32_EPCA_A_MODE_DPTR_CH0_U32 \ 159 (SI32_EPCA_A_MODE_DPTR_CH0_VALUE << SI32_EPCA_A_MODE_DPTR_SHIFT) 160 // The DMA channel will write to Channel 1 CCAPVUPD next. 161 #define SI32_EPCA_A_MODE_DPTR_CH1_VALUE 2 162 #define SI32_EPCA_A_MODE_DPTR_CH1_U32 \ 163 (SI32_EPCA_A_MODE_DPTR_CH1_VALUE << SI32_EPCA_A_MODE_DPTR_SHIFT) 164 // The DMA channel will write to Channel 2 CCAPVUPD next. 165 #define SI32_EPCA_A_MODE_DPTR_CH2_VALUE 3 166 #define SI32_EPCA_A_MODE_DPTR_CH2_U32 \ 167 (SI32_EPCA_A_MODE_DPTR_CH2_VALUE << SI32_EPCA_A_MODE_DPTR_SHIFT) 168 // The DMA channel will write to Channel 3 CCAPVUPD next. 169 #define SI32_EPCA_A_MODE_DPTR_CH3_VALUE 4 170 #define SI32_EPCA_A_MODE_DPTR_CH3_U32 \ 171 (SI32_EPCA_A_MODE_DPTR_CH3_VALUE << SI32_EPCA_A_MODE_DPTR_SHIFT) 172 // The DMA channel will write to Channel 4 CCAPVUPD next. 173 #define SI32_EPCA_A_MODE_DPTR_CH4_VALUE 5 174 #define SI32_EPCA_A_MODE_DPTR_CH4_U32 \ 175 (SI32_EPCA_A_MODE_DPTR_CH4_VALUE << SI32_EPCA_A_MODE_DPTR_SHIFT) 176 // The DMA channel will write to Channel 5 CCAPVUPD next. 177 #define SI32_EPCA_A_MODE_DPTR_CH5_VALUE 6 178 #define SI32_EPCA_A_MODE_DPTR_CH5_U32 \ 179 (SI32_EPCA_A_MODE_DPTR_CH5_VALUE << SI32_EPCA_A_MODE_DPTR_SHIFT) 180 // Empty slot. 181 #define SI32_EPCA_A_MODE_DPTR_EMPTY_VALUE 7 182 #define SI32_EPCA_A_MODE_DPTR_EMPTY_U32 \ 183 (SI32_EPCA_A_MODE_DPTR_EMPTY_VALUE << SI32_EPCA_A_MODE_DPTR_SHIFT) 184 185 #define SI32_EPCA_A_MODE_DSTART_MASK 0x01C00000 186 #define SI32_EPCA_A_MODE_DSTART_SHIFT 22 187 // Set the first register in a DMA write transfer to LIMITUPD. 188 #define SI32_EPCA_A_MODE_DSTART_LIMIT_VALUE 0 189 #define SI32_EPCA_A_MODE_DSTART_LIMIT_U32 \ 190 (SI32_EPCA_A_MODE_DSTART_LIMIT_VALUE << SI32_EPCA_A_MODE_DSTART_SHIFT) 191 // Set the first register in a DMA write transfer to Channel 0 CCAPVUPD. 192 #define SI32_EPCA_A_MODE_DSTART_CH0_VALUE 1 193 #define SI32_EPCA_A_MODE_DSTART_CH0_U32 \ 194 (SI32_EPCA_A_MODE_DSTART_CH0_VALUE << SI32_EPCA_A_MODE_DSTART_SHIFT) 195 // Set the first register in a DMA write transfer to Channel 1 CCAPVUPD. 196 #define SI32_EPCA_A_MODE_DSTART_CH1_VALUE 2 197 #define SI32_EPCA_A_MODE_DSTART_CH1_U32 \ 198 (SI32_EPCA_A_MODE_DSTART_CH1_VALUE << SI32_EPCA_A_MODE_DSTART_SHIFT) 199 // Set the first register in a DMA write transfer to Channel 2 CCAPVUPD. 200 #define SI32_EPCA_A_MODE_DSTART_CH2_VALUE 3 201 #define SI32_EPCA_A_MODE_DSTART_CH2_U32 \ 202 (SI32_EPCA_A_MODE_DSTART_CH2_VALUE << SI32_EPCA_A_MODE_DSTART_SHIFT) 203 // Set the first register in a DMA write transfer to Channel 3 CCAPVUPD. 204 #define SI32_EPCA_A_MODE_DSTART_CH3_VALUE 4 205 #define SI32_EPCA_A_MODE_DSTART_CH3_U32 \ 206 (SI32_EPCA_A_MODE_DSTART_CH3_VALUE << SI32_EPCA_A_MODE_DSTART_SHIFT) 207 // Set the first register in a DMA write transfer to Channel 4 CCAPVUPD. 208 #define SI32_EPCA_A_MODE_DSTART_CH4_VALUE 5 209 #define SI32_EPCA_A_MODE_DSTART_CH4_U32 \ 210 (SI32_EPCA_A_MODE_DSTART_CH4_VALUE << SI32_EPCA_A_MODE_DSTART_SHIFT) 211 // Set the first register in a DMA write transfer to Channel 5 CCAPVUPD. 212 #define SI32_EPCA_A_MODE_DSTART_CH5_VALUE 6 213 #define SI32_EPCA_A_MODE_DSTART_CH5_U32 \ 214 (SI32_EPCA_A_MODE_DSTART_CH5_VALUE << SI32_EPCA_A_MODE_DSTART_SHIFT) 215 // Empty slot. 216 #define SI32_EPCA_A_MODE_DSTART_EMPTY_VALUE 7 217 #define SI32_EPCA_A_MODE_DSTART_EMPTY_U32 \ 218 (SI32_EPCA_A_MODE_DSTART_EMPTY_VALUE << SI32_EPCA_A_MODE_DSTART_SHIFT) 219 220 #define SI32_EPCA_A_MODE_DBUSYF_MASK 0x02000000 221 #define SI32_EPCA_A_MODE_DBUSYF_SHIFT 25 222 // The DMA channel is not servicing an EPCA control transfer. 223 #define SI32_EPCA_A_MODE_DBUSYF_IDLE_VALUE 0 224 #define SI32_EPCA_A_MODE_DBUSYF_IDLE_U32 \ 225 (SI32_EPCA_A_MODE_DBUSYF_IDLE_VALUE << SI32_EPCA_A_MODE_DBUSYF_SHIFT) 226 // The DMA channel is busy servicing an EPCA control transfer. 227 #define SI32_EPCA_A_MODE_DBUSYF_BUSY_VALUE 1 228 #define SI32_EPCA_A_MODE_DBUSYF_BUSY_U32 \ 229 (SI32_EPCA_A_MODE_DBUSYF_BUSY_VALUE << SI32_EPCA_A_MODE_DBUSYF_SHIFT) 230 231 #define SI32_EPCA_A_MODE_STDOSEL_MASK 0x18000000 232 #define SI32_EPCA_A_MODE_STDOSEL_SHIFT 27 233 // Select the non-differential channel outputs (Channels 0-5) for the standard PB 234 // pins. 235 #define SI32_EPCA_A_MODE_STDOSEL_NO_DIFF_VALUE 0 236 #define SI32_EPCA_A_MODE_STDOSEL_NO_DIFF_U32 \ 237 (SI32_EPCA_A_MODE_STDOSEL_NO_DIFF_VALUE << SI32_EPCA_A_MODE_STDOSEL_SHIFT) 238 // Select the differential output from Channel 2 and non-differential outputs from 239 // Channels 0, 1, 3, and 4 for the standard PB pins. 240 #define SI32_EPCA_A_MODE_STDOSEL_ONE_DIFF_VALUE 1 241 #define SI32_EPCA_A_MODE_STDOSEL_ONE_DIFF_U32 \ 242 (SI32_EPCA_A_MODE_STDOSEL_ONE_DIFF_VALUE << SI32_EPCA_A_MODE_STDOSEL_SHIFT) 243 // Select the differential outputs from Channels 1 and 2 and non-differential 244 // outputs from Channels 0 and 3 for the standard PB pins. 245 #define SI32_EPCA_A_MODE_STDOSEL_TWO_DIFF_VALUE 2 246 #define SI32_EPCA_A_MODE_STDOSEL_TWO_DIFF_U32 \ 247 (SI32_EPCA_A_MODE_STDOSEL_TWO_DIFF_VALUE << SI32_EPCA_A_MODE_STDOSEL_SHIFT) 248 // Select three differential outputs from Channels 0, 1, and 2 for the standard PB 249 // pins. 250 #define SI32_EPCA_A_MODE_STDOSEL_THREE_DIFF_VALUE 3 251 #define SI32_EPCA_A_MODE_STDOSEL_THREE_DIFF_U32 \ 252 (SI32_EPCA_A_MODE_STDOSEL_THREE_DIFF_VALUE << SI32_EPCA_A_MODE_STDOSEL_SHIFT) 253 254 255 256 struct SI32_EPCA_A_CONTROL_Struct 257 { 258 union 259 { 260 struct 261 { 262 // EPCA Counter Overflow/Limit Interrupt Enable 263 volatile uint32_t OVFIEN: 1; 264 // EPCA Counter Overflow/Limit DMA Request Enable 265 volatile uint32_t OVFDEN: 1; 266 // EPCA Counter Overflow/Limit Synchronization Signal Enable 267 volatile uint32_t OVFSEN: 1; 268 // EPCA Halt Input Interrupt Enable 269 volatile uint32_t HALTIEN: 1; 270 // Internal Register Update Inhibit 271 volatile uint32_t NOUPD: 1; 272 uint32_t reserved0: 1; 273 // EPCA Debug Mode 274 volatile uint32_t DBGMD: 1; 275 uint32_t reserved1: 2; 276 // Halt Input Enable 277 volatile uint32_t HALTEN: 1; 278 uint32_t reserved2: 1; 279 // Synchronous Input Trigger Select 280 volatile uint32_t STSEL: 2; 281 // Synchronous Input Trigger Edge Select 282 volatile uint32_t STESEL: 1; 283 // Synchronous Input Trigger Enable 284 volatile uint32_t STEN: 1; 285 uint32_t reserved3: 6; 286 // Clock Divider Output State 287 volatile uint32_t DIVST: 1; 288 // Current Clock Divider Count 289 volatile uint32_t DIV: 10; 290 }; 291 volatile uint32_t U32; 292 }; 293 }; 294 295 #define SI32_EPCA_A_CONTROL_OVFIEN_MASK 0x00000001 296 #define SI32_EPCA_A_CONTROL_OVFIEN_SHIFT 0 297 // Disable the EPCA counter overflow/limit event interrupt. 298 #define SI32_EPCA_A_CONTROL_OVFIEN_DISABLED_VALUE 0 299 #define SI32_EPCA_A_CONTROL_OVFIEN_DISABLED_U32 \ 300 (SI32_EPCA_A_CONTROL_OVFIEN_DISABLED_VALUE << SI32_EPCA_A_CONTROL_OVFIEN_SHIFT) 301 // Enable the EPCA counter overflow/limit event interrupt. 302 #define SI32_EPCA_A_CONTROL_OVFIEN_ENABLED_VALUE 1 303 #define SI32_EPCA_A_CONTROL_OVFIEN_ENABLED_U32 \ 304 (SI32_EPCA_A_CONTROL_OVFIEN_ENABLED_VALUE << SI32_EPCA_A_CONTROL_OVFIEN_SHIFT) 305 306 #define SI32_EPCA_A_CONTROL_OVFDEN_MASK 0x00000002 307 #define SI32_EPCA_A_CONTROL_OVFDEN_SHIFT 1 308 // Do not request DMA data when a EPCA counter overflow/limit event occurs. 309 #define SI32_EPCA_A_CONTROL_OVFDEN_DISABLED_VALUE 0 310 #define SI32_EPCA_A_CONTROL_OVFDEN_DISABLED_U32 \ 311 (SI32_EPCA_A_CONTROL_OVFDEN_DISABLED_VALUE << SI32_EPCA_A_CONTROL_OVFDEN_SHIFT) 312 // Request DMA data when a EPCA counter overflow/limit event occurs. 313 #define SI32_EPCA_A_CONTROL_OVFDEN_ENABLED_VALUE 1 314 #define SI32_EPCA_A_CONTROL_OVFDEN_ENABLED_U32 \ 315 (SI32_EPCA_A_CONTROL_OVFDEN_ENABLED_VALUE << SI32_EPCA_A_CONTROL_OVFDEN_SHIFT) 316 317 #define SI32_EPCA_A_CONTROL_OVFSEN_MASK 0x00000004 318 #define SI32_EPCA_A_CONTROL_OVFSEN_SHIFT 2 319 // Do not send a synchronization signal when a EPCA counter overflow/limit event 320 // occurs. 321 #define SI32_EPCA_A_CONTROL_OVFSEN_DISABLED_VALUE 0 322 #define SI32_EPCA_A_CONTROL_OVFSEN_DISABLED_U32 \ 323 (SI32_EPCA_A_CONTROL_OVFSEN_DISABLED_VALUE << SI32_EPCA_A_CONTROL_OVFSEN_SHIFT) 324 // Send a synchronization signal when a EPCA counter overflow/limit event occurs. 325 #define SI32_EPCA_A_CONTROL_OVFSEN_ENABLED_VALUE 1 326 #define SI32_EPCA_A_CONTROL_OVFSEN_ENABLED_U32 \ 327 (SI32_EPCA_A_CONTROL_OVFSEN_ENABLED_VALUE << SI32_EPCA_A_CONTROL_OVFSEN_SHIFT) 328 329 #define SI32_EPCA_A_CONTROL_HALTIEN_MASK 0x00000008 330 #define SI32_EPCA_A_CONTROL_HALTIEN_SHIFT 3 331 // Do not generate an interrupt if the EPCA halt input is high. 332 #define SI32_EPCA_A_CONTROL_HALTIEN_DISABLED_VALUE 0 333 #define SI32_EPCA_A_CONTROL_HALTIEN_DISABLED_U32 \ 334 (SI32_EPCA_A_CONTROL_HALTIEN_DISABLED_VALUE << SI32_EPCA_A_CONTROL_HALTIEN_SHIFT) 335 // Generate an interrupt if the EPCA halt input is high. 336 #define SI32_EPCA_A_CONTROL_HALTIEN_ENABLED_VALUE 1 337 #define SI32_EPCA_A_CONTROL_HALTIEN_ENABLED_U32 \ 338 (SI32_EPCA_A_CONTROL_HALTIEN_ENABLED_VALUE << SI32_EPCA_A_CONTROL_HALTIEN_SHIFT) 339 340 #define SI32_EPCA_A_CONTROL_NOUPD_MASK 0x00000010 341 #define SI32_EPCA_A_CONTROL_NOUPD_SHIFT 4 342 // The EPCA registers will automatically load any new update values after an 343 // overflow/limit event occurs. 344 #define SI32_EPCA_A_CONTROL_NOUPD_INACTIVE_VALUE 0 345 #define SI32_EPCA_A_CONTROL_NOUPD_INACTIVE_U32 \ 346 (SI32_EPCA_A_CONTROL_NOUPD_INACTIVE_VALUE << SI32_EPCA_A_CONTROL_NOUPD_SHIFT) 347 // The EPCA registers will not load any new update values after an overflow/limit 348 // event occurs. 349 #define SI32_EPCA_A_CONTROL_NOUPD_ACTIVE_VALUE 1 350 #define SI32_EPCA_A_CONTROL_NOUPD_ACTIVE_U32 \ 351 (SI32_EPCA_A_CONTROL_NOUPD_ACTIVE_VALUE << SI32_EPCA_A_CONTROL_NOUPD_SHIFT) 352 353 #define SI32_EPCA_A_CONTROL_DBGMD_MASK 0x00000040 354 #define SI32_EPCA_A_CONTROL_DBGMD_SHIFT 6 355 // A debug breakpoint will stop the EPCA counter/timer. 356 #define SI32_EPCA_A_CONTROL_DBGMD_HALT_VALUE 0 357 #define SI32_EPCA_A_CONTROL_DBGMD_HALT_U32 \ 358 (SI32_EPCA_A_CONTROL_DBGMD_HALT_VALUE << SI32_EPCA_A_CONTROL_DBGMD_SHIFT) 359 // The EPCA will continue to operate while the core is halted in debug mode. 360 #define SI32_EPCA_A_CONTROL_DBGMD_RUN_VALUE 1 361 #define SI32_EPCA_A_CONTROL_DBGMD_RUN_U32 \ 362 (SI32_EPCA_A_CONTROL_DBGMD_RUN_VALUE << SI32_EPCA_A_CONTROL_DBGMD_SHIFT) 363 364 #define SI32_EPCA_A_CONTROL_HALTEN_MASK 0x00000200 365 #define SI32_EPCA_A_CONTROL_HALTEN_SHIFT 9 366 // The Halt input (PB_HDKill) does not affect the EPCA counter/timer. 367 #define SI32_EPCA_A_CONTROL_HALTEN_DISABLED_VALUE 0 368 #define SI32_EPCA_A_CONTROL_HALTEN_DISABLED_U32 \ 369 (SI32_EPCA_A_CONTROL_HALTEN_DISABLED_VALUE << SI32_EPCA_A_CONTROL_HALTEN_SHIFT) 370 // An assertion of the Halt input (PB_HDKill) will stop the EPCA counter/timer. 371 #define SI32_EPCA_A_CONTROL_HALTEN_ENABLED_VALUE 1 372 #define SI32_EPCA_A_CONTROL_HALTEN_ENABLED_U32 \ 373 (SI32_EPCA_A_CONTROL_HALTEN_ENABLED_VALUE << SI32_EPCA_A_CONTROL_HALTEN_SHIFT) 374 375 #define SI32_EPCA_A_CONTROL_STSEL_MASK 0x00001800 376 #define SI32_EPCA_A_CONTROL_STSEL_SHIFT 11 377 // Select input trigger 0, Comparator0 output. 378 #define SI32_EPCA_A_CONTROL_STSEL_EPCANT0_VALUE 0 379 #define SI32_EPCA_A_CONTROL_STSEL_EPCANT0_U32 \ 380 (SI32_EPCA_A_CONTROL_STSEL_EPCANT0_VALUE << SI32_EPCA_A_CONTROL_STSEL_SHIFT) 381 // Select input trigger 1, Comparator1 output. 382 #define SI32_EPCA_A_CONTROL_STSEL_EPCANT1_VALUE 1 383 #define SI32_EPCA_A_CONTROL_STSEL_EPCANT1_U32 \ 384 (SI32_EPCA_A_CONTROL_STSEL_EPCANT1_VALUE << SI32_EPCA_A_CONTROL_STSEL_SHIFT) 385 // Select input trigger 2, Timer 0 high overflow. 386 #define SI32_EPCA_A_CONTROL_STSEL_EPCANT2_VALUE 2 387 #define SI32_EPCA_A_CONTROL_STSEL_EPCANT2_U32 \ 388 (SI32_EPCA_A_CONTROL_STSEL_EPCANT2_VALUE << SI32_EPCA_A_CONTROL_STSEL_SHIFT) 389 // Select input trigger 3, Timer 1 high overflow. 390 #define SI32_EPCA_A_CONTROL_STSEL_EPCANT3_VALUE 3 391 #define SI32_EPCA_A_CONTROL_STSEL_EPCANT3_U32 \ 392 (SI32_EPCA_A_CONTROL_STSEL_EPCANT3_VALUE << SI32_EPCA_A_CONTROL_STSEL_SHIFT) 393 394 #define SI32_EPCA_A_CONTROL_STESEL_MASK 0x00002000 395 #define SI32_EPCA_A_CONTROL_STESEL_SHIFT 13 396 // A high-to-low transition (falling edge) on EPCAnTx will start the counter/timer. 397 #define SI32_EPCA_A_CONTROL_STESEL_FALLING_VALUE 0 398 #define SI32_EPCA_A_CONTROL_STESEL_FALLING_U32 \ 399 (SI32_EPCA_A_CONTROL_STESEL_FALLING_VALUE << SI32_EPCA_A_CONTROL_STESEL_SHIFT) 400 // A low-to-high transition (rising edge) on EPCAnTx will start the counter/timer. 401 #define SI32_EPCA_A_CONTROL_STESEL_RISING_VALUE 1 402 #define SI32_EPCA_A_CONTROL_STESEL_RISING_U32 \ 403 (SI32_EPCA_A_CONTROL_STESEL_RISING_VALUE << SI32_EPCA_A_CONTROL_STESEL_SHIFT) 404 405 #define SI32_EPCA_A_CONTROL_STEN_MASK 0x00004000 406 #define SI32_EPCA_A_CONTROL_STEN_SHIFT 14 407 // Disable the input trigger (EPCAnTx). The EPCA counter/timer will continue to run 408 // if the RUN bit is set regardless of the value on the input trigger. 409 #define SI32_EPCA_A_CONTROL_STEN_DISABLED_VALUE 0 410 #define SI32_EPCA_A_CONTROL_STEN_DISABLED_U32 \ 411 (SI32_EPCA_A_CONTROL_STEN_DISABLED_VALUE << SI32_EPCA_A_CONTROL_STEN_SHIFT) 412 // Enable the input trigger (EPCAnTx). If RUN is set to 1, the EPCA counter/timer 413 // will start running when the selected input trigger (STSEL) meets the criteria 414 // set by STESEL. It will not stop running if the criteria is no longer met. 415 #define SI32_EPCA_A_CONTROL_STEN_ENABLED_VALUE 1 416 #define SI32_EPCA_A_CONTROL_STEN_ENABLED_U32 \ 417 (SI32_EPCA_A_CONTROL_STEN_ENABLED_VALUE << SI32_EPCA_A_CONTROL_STEN_SHIFT) 418 419 #define SI32_EPCA_A_CONTROL_DIVST_MASK 0x00200000 420 #define SI32_EPCA_A_CONTROL_DIVST_SHIFT 21 421 // The clock divider is currently in the first half-cycle. 422 #define SI32_EPCA_A_CONTROL_DIVST_OUTPUT_HIGH_VALUE 0 423 #define SI32_EPCA_A_CONTROL_DIVST_OUTPUT_HIGH_U32 \ 424 (SI32_EPCA_A_CONTROL_DIVST_OUTPUT_HIGH_VALUE << SI32_EPCA_A_CONTROL_DIVST_SHIFT) 425 // The clock divider is currently in the second half-cycle. 426 #define SI32_EPCA_A_CONTROL_DIVST_OUTPUT_LOW_VALUE 1 427 #define SI32_EPCA_A_CONTROL_DIVST_OUTPUT_LOW_U32 \ 428 (SI32_EPCA_A_CONTROL_DIVST_OUTPUT_LOW_VALUE << SI32_EPCA_A_CONTROL_DIVST_SHIFT) 429 430 #define SI32_EPCA_A_CONTROL_DIV_MASK 0xFFC00000 431 #define SI32_EPCA_A_CONTROL_DIV_SHIFT 22 432 433 434 435 struct SI32_EPCA_A_STATUS_Struct 436 { 437 union 438 { 439 struct 440 { 441 // Channel 0 Capture/Compare Interrupt Flag 442 volatile uint32_t C0CCI: 1; 443 // Channel 1 Capture/Compare Interrupt Flag 444 volatile uint32_t C1CCI: 1; 445 // Channel 2 Capture/Compare Interrupt Flag 446 volatile uint32_t C2CCI: 1; 447 // Channel 3 Capture/Compare Interrupt Flag 448 volatile uint32_t C3CCI: 1; 449 // Channel 4 Capture/Compare Interrupt Flag 450 volatile uint32_t C4CCI: 1; 451 // Channel 5 Capture/Compare Interrupt Flag 452 volatile uint32_t C5CCI: 1; 453 // Counter/Timer Run 454 volatile uint32_t RUN: 1; 455 // Counter/Timer Overflow/Limit Interrupt Flag 456 volatile uint32_t OVFI: 1; 457 // Register Update Complete Flag 458 volatile uint32_t UPDCF: 1; 459 // Halt Input Interrupt Flag 460 volatile uint32_t HALTI: 1; 461 // Channel 0 Intermediate Overflow Interrupt Flag 462 volatile uint32_t C0IOVFI: 1; 463 // Channel 1 Intermediate Overflow Interrupt Flag 464 volatile uint32_t C1IOVFI: 1; 465 // Channel 2 Intermediate Overflow Interrupt Flag 466 volatile uint32_t C2IOVFI: 1; 467 // Channel 3 Intermediate Overflow Interrupt Flag 468 volatile uint32_t C3IOVFI: 1; 469 // Channel 4 Intermediate Overflow Interrupt Flag 470 volatile uint32_t C4IOVFI: 1; 471 // Channel 5 Intermediate Overflow Interrupt Flag 472 volatile uint32_t C5IOVFI: 1; 473 uint32_t reserved0: 16; 474 }; 475 volatile uint32_t U32; 476 }; 477 }; 478 479 #define SI32_EPCA_A_STATUS_C0CCI_MASK 0x00000001 480 #define SI32_EPCA_A_STATUS_C0CCI_SHIFT 0 481 // A Channel 0 match or capture event did not occur. 482 #define SI32_EPCA_A_STATUS_C0CCI_NOT_SET_VALUE 0 483 #define SI32_EPCA_A_STATUS_C0CCI_NOT_SET_U32 \ 484 (SI32_EPCA_A_STATUS_C0CCI_NOT_SET_VALUE << SI32_EPCA_A_STATUS_C0CCI_SHIFT) 485 // A Channel 0 match or capture event occurred. 486 #define SI32_EPCA_A_STATUS_C0CCI_SET_VALUE 1 487 #define SI32_EPCA_A_STATUS_C0CCI_SET_U32 \ 488 (SI32_EPCA_A_STATUS_C0CCI_SET_VALUE << SI32_EPCA_A_STATUS_C0CCI_SHIFT) 489 490 #define SI32_EPCA_A_STATUS_C1CCI_MASK 0x00000002 491 #define SI32_EPCA_A_STATUS_C1CCI_SHIFT 1 492 // A Channel 1 match or capture event did not occur. 493 #define SI32_EPCA_A_STATUS_C1CCI_NOT_SET_VALUE 0 494 #define SI32_EPCA_A_STATUS_C1CCI_NOT_SET_U32 \ 495 (SI32_EPCA_A_STATUS_C1CCI_NOT_SET_VALUE << SI32_EPCA_A_STATUS_C1CCI_SHIFT) 496 // A Channel 1 match or capture event occurred. 497 #define SI32_EPCA_A_STATUS_C1CCI_SET_VALUE 1 498 #define SI32_EPCA_A_STATUS_C1CCI_SET_U32 \ 499 (SI32_EPCA_A_STATUS_C1CCI_SET_VALUE << SI32_EPCA_A_STATUS_C1CCI_SHIFT) 500 501 #define SI32_EPCA_A_STATUS_C2CCI_MASK 0x00000004 502 #define SI32_EPCA_A_STATUS_C2CCI_SHIFT 2 503 // A Channel 2 match or capture event did not occur. 504 #define SI32_EPCA_A_STATUS_C2CCI_NOT_SET_VALUE 0 505 #define SI32_EPCA_A_STATUS_C2CCI_NOT_SET_U32 \ 506 (SI32_EPCA_A_STATUS_C2CCI_NOT_SET_VALUE << SI32_EPCA_A_STATUS_C2CCI_SHIFT) 507 // A Channel 2 match or capture event occurred. 508 #define SI32_EPCA_A_STATUS_C2CCI_SET_VALUE 1 509 #define SI32_EPCA_A_STATUS_C2CCI_SET_U32 \ 510 (SI32_EPCA_A_STATUS_C2CCI_SET_VALUE << SI32_EPCA_A_STATUS_C2CCI_SHIFT) 511 512 #define SI32_EPCA_A_STATUS_C3CCI_MASK 0x00000008 513 #define SI32_EPCA_A_STATUS_C3CCI_SHIFT 3 514 // A Channel 3 match or capture event did not occur. 515 #define SI32_EPCA_A_STATUS_C3CCI_NOT_SET_VALUE 0 516 #define SI32_EPCA_A_STATUS_C3CCI_NOT_SET_U32 \ 517 (SI32_EPCA_A_STATUS_C3CCI_NOT_SET_VALUE << SI32_EPCA_A_STATUS_C3CCI_SHIFT) 518 // A Channel 3 match or capture event occurred. 519 #define SI32_EPCA_A_STATUS_C3CCI_SET_VALUE 1 520 #define SI32_EPCA_A_STATUS_C3CCI_SET_U32 \ 521 (SI32_EPCA_A_STATUS_C3CCI_SET_VALUE << SI32_EPCA_A_STATUS_C3CCI_SHIFT) 522 523 #define SI32_EPCA_A_STATUS_C4CCI_MASK 0x00000010 524 #define SI32_EPCA_A_STATUS_C4CCI_SHIFT 4 525 // A Channel 4 match or capture event did not occur. 526 #define SI32_EPCA_A_STATUS_C4CCI_NOT_SET_VALUE 0 527 #define SI32_EPCA_A_STATUS_C4CCI_NOT_SET_U32 \ 528 (SI32_EPCA_A_STATUS_C4CCI_NOT_SET_VALUE << SI32_EPCA_A_STATUS_C4CCI_SHIFT) 529 // A Channel 4 match or capture event occurred. 530 #define SI32_EPCA_A_STATUS_C4CCI_SET_VALUE 1 531 #define SI32_EPCA_A_STATUS_C4CCI_SET_U32 \ 532 (SI32_EPCA_A_STATUS_C4CCI_SET_VALUE << SI32_EPCA_A_STATUS_C4CCI_SHIFT) 533 534 #define SI32_EPCA_A_STATUS_C5CCI_MASK 0x00000020 535 #define SI32_EPCA_A_STATUS_C5CCI_SHIFT 5 536 // A Channel 5 match or capture event did not occur. 537 #define SI32_EPCA_A_STATUS_C5CCI_NOT_SET_VALUE 0 538 #define SI32_EPCA_A_STATUS_C5CCI_NOT_SET_U32 \ 539 (SI32_EPCA_A_STATUS_C5CCI_NOT_SET_VALUE << SI32_EPCA_A_STATUS_C5CCI_SHIFT) 540 // A Channel 5 match or capture event occurred. 541 #define SI32_EPCA_A_STATUS_C5CCI_SET_VALUE 1 542 #define SI32_EPCA_A_STATUS_C5CCI_SET_U32 \ 543 (SI32_EPCA_A_STATUS_C5CCI_SET_VALUE << SI32_EPCA_A_STATUS_C5CCI_SHIFT) 544 545 #define SI32_EPCA_A_STATUS_RUN_MASK 0x00000040 546 #define SI32_EPCA_A_STATUS_RUN_SHIFT 6 547 // Stop the EPCA Counter/Timer. 548 #define SI32_EPCA_A_STATUS_RUN_STOP_VALUE 0 549 #define SI32_EPCA_A_STATUS_RUN_STOP_U32 \ 550 (SI32_EPCA_A_STATUS_RUN_STOP_VALUE << SI32_EPCA_A_STATUS_RUN_SHIFT) 551 // Start the EPCA Counter/Timer. 552 #define SI32_EPCA_A_STATUS_RUN_START_VALUE 1 553 #define SI32_EPCA_A_STATUS_RUN_START_U32 \ 554 (SI32_EPCA_A_STATUS_RUN_START_VALUE << SI32_EPCA_A_STATUS_RUN_SHIFT) 555 556 #define SI32_EPCA_A_STATUS_OVFI_MASK 0x00000080 557 #define SI32_EPCA_A_STATUS_OVFI_SHIFT 7 558 // An EPCA Counter/Timer overflow/limit event did not occur. 559 #define SI32_EPCA_A_STATUS_OVFI_NOT_SET_VALUE 0 560 #define SI32_EPCA_A_STATUS_OVFI_NOT_SET_U32 \ 561 (SI32_EPCA_A_STATUS_OVFI_NOT_SET_VALUE << SI32_EPCA_A_STATUS_OVFI_SHIFT) 562 // An EPCA Counter/Timer overflow/limit event occurred. 563 #define SI32_EPCA_A_STATUS_OVFI_SET_VALUE 1 564 #define SI32_EPCA_A_STATUS_OVFI_SET_U32 \ 565 (SI32_EPCA_A_STATUS_OVFI_SET_VALUE << SI32_EPCA_A_STATUS_OVFI_SHIFT) 566 567 #define SI32_EPCA_A_STATUS_UPDCF_MASK 0x00000100 568 #define SI32_EPCA_A_STATUS_UPDCF_SHIFT 8 569 // An EPCA register update completed or is not pending. 570 #define SI32_EPCA_A_STATUS_UPDCF_EMPTY_VALUE 0 571 #define SI32_EPCA_A_STATUS_UPDCF_EMPTY_U32 \ 572 (SI32_EPCA_A_STATUS_UPDCF_EMPTY_VALUE << SI32_EPCA_A_STATUS_UPDCF_SHIFT) 573 // An EPCA register update has not completed and is still pending. 574 #define SI32_EPCA_A_STATUS_UPDCF_FULL_VALUE 1 575 #define SI32_EPCA_A_STATUS_UPDCF_FULL_U32 \ 576 (SI32_EPCA_A_STATUS_UPDCF_FULL_VALUE << SI32_EPCA_A_STATUS_UPDCF_SHIFT) 577 578 #define SI32_EPCA_A_STATUS_HALTI_MASK 0x00000200 579 #define SI32_EPCA_A_STATUS_HALTI_SHIFT 9 580 // The Halt input (PB_HDKill) was not asserted. 581 #define SI32_EPCA_A_STATUS_HALTI_NOT_SET_VALUE 0 582 #define SI32_EPCA_A_STATUS_HALTI_NOT_SET_U32 \ 583 (SI32_EPCA_A_STATUS_HALTI_NOT_SET_VALUE << SI32_EPCA_A_STATUS_HALTI_SHIFT) 584 // The Halt input (PB_HDKill) was asserted. 585 #define SI32_EPCA_A_STATUS_HALTI_SET_VALUE 1 586 #define SI32_EPCA_A_STATUS_HALTI_SET_U32 \ 587 (SI32_EPCA_A_STATUS_HALTI_SET_VALUE << SI32_EPCA_A_STATUS_HALTI_SHIFT) 588 589 #define SI32_EPCA_A_STATUS_C0IOVFI_MASK 0x00000400 590 #define SI32_EPCA_A_STATUS_C0IOVFI_SHIFT 10 591 // Channel 0 did not count past the channel n-bit mode limit. 592 #define SI32_EPCA_A_STATUS_C0IOVFI_NOT_SET_VALUE 0 593 #define SI32_EPCA_A_STATUS_C0IOVFI_NOT_SET_U32 \ 594 (SI32_EPCA_A_STATUS_C0IOVFI_NOT_SET_VALUE << SI32_EPCA_A_STATUS_C0IOVFI_SHIFT) 595 // Channel 0 counted past the channel n-bit mode limit. 596 #define SI32_EPCA_A_STATUS_C0IOVFI_SET_VALUE 1 597 #define SI32_EPCA_A_STATUS_C0IOVFI_SET_U32 \ 598 (SI32_EPCA_A_STATUS_C0IOVFI_SET_VALUE << SI32_EPCA_A_STATUS_C0IOVFI_SHIFT) 599 600 #define SI32_EPCA_A_STATUS_C1IOVFI_MASK 0x00000800 601 #define SI32_EPCA_A_STATUS_C1IOVFI_SHIFT 11 602 // Channel 1 did not count past the channel n-bit mode limit. 603 #define SI32_EPCA_A_STATUS_C1IOVFI_NOT_SET_VALUE 0 604 #define SI32_EPCA_A_STATUS_C1IOVFI_NOT_SET_U32 \ 605 (SI32_EPCA_A_STATUS_C1IOVFI_NOT_SET_VALUE << SI32_EPCA_A_STATUS_C1IOVFI_SHIFT) 606 // Channel 1 counted past the channel n-bit mode limit. 607 #define SI32_EPCA_A_STATUS_C1IOVFI_SET_VALUE 1 608 #define SI32_EPCA_A_STATUS_C1IOVFI_SET_U32 \ 609 (SI32_EPCA_A_STATUS_C1IOVFI_SET_VALUE << SI32_EPCA_A_STATUS_C1IOVFI_SHIFT) 610 611 #define SI32_EPCA_A_STATUS_C2IOVFI_MASK 0x00001000 612 #define SI32_EPCA_A_STATUS_C2IOVFI_SHIFT 12 613 // Channel 2 did not count past the channel n-bit mode limit. 614 #define SI32_EPCA_A_STATUS_C2IOVFI_NOT_SET_VALUE 0 615 #define SI32_EPCA_A_STATUS_C2IOVFI_NOT_SET_U32 \ 616 (SI32_EPCA_A_STATUS_C2IOVFI_NOT_SET_VALUE << SI32_EPCA_A_STATUS_C2IOVFI_SHIFT) 617 // Channel 2 counted past the channel n-bit mode limit. 618 #define SI32_EPCA_A_STATUS_C2IOVFI_SET_VALUE 1 619 #define SI32_EPCA_A_STATUS_C2IOVFI_SET_U32 \ 620 (SI32_EPCA_A_STATUS_C2IOVFI_SET_VALUE << SI32_EPCA_A_STATUS_C2IOVFI_SHIFT) 621 622 #define SI32_EPCA_A_STATUS_C3IOVFI_MASK 0x00002000 623 #define SI32_EPCA_A_STATUS_C3IOVFI_SHIFT 13 624 // Channel 3 did not count past the channel n-bit mode limit. 625 #define SI32_EPCA_A_STATUS_C3IOVFI_NOT_SET_VALUE 0 626 #define SI32_EPCA_A_STATUS_C3IOVFI_NOT_SET_U32 \ 627 (SI32_EPCA_A_STATUS_C3IOVFI_NOT_SET_VALUE << SI32_EPCA_A_STATUS_C3IOVFI_SHIFT) 628 // Channel 3 counted past the channel n-bit mode limit. 629 #define SI32_EPCA_A_STATUS_C3IOVFI_SET_VALUE 1 630 #define SI32_EPCA_A_STATUS_C3IOVFI_SET_U32 \ 631 (SI32_EPCA_A_STATUS_C3IOVFI_SET_VALUE << SI32_EPCA_A_STATUS_C3IOVFI_SHIFT) 632 633 #define SI32_EPCA_A_STATUS_C4IOVFI_MASK 0x00004000 634 #define SI32_EPCA_A_STATUS_C4IOVFI_SHIFT 14 635 // Channel 4 did not count past the channel n-bit mode limit. 636 #define SI32_EPCA_A_STATUS_C4IOVFI_NOT_SET_VALUE 0 637 #define SI32_EPCA_A_STATUS_C4IOVFI_NOT_SET_U32 \ 638 (SI32_EPCA_A_STATUS_C4IOVFI_NOT_SET_VALUE << SI32_EPCA_A_STATUS_C4IOVFI_SHIFT) 639 // Channel 4 counted past the channel n-bit mode limit. 640 #define SI32_EPCA_A_STATUS_C4IOVFI_SET_VALUE 1 641 #define SI32_EPCA_A_STATUS_C4IOVFI_SET_U32 \ 642 (SI32_EPCA_A_STATUS_C4IOVFI_SET_VALUE << SI32_EPCA_A_STATUS_C4IOVFI_SHIFT) 643 644 #define SI32_EPCA_A_STATUS_C5IOVFI_MASK 0x00008000 645 #define SI32_EPCA_A_STATUS_C5IOVFI_SHIFT 15 646 // Channel 5 did not count past the channel n-bit mode limit. 647 #define SI32_EPCA_A_STATUS_C5IOVFI_NOT_SET_VALUE 0 648 #define SI32_EPCA_A_STATUS_C5IOVFI_NOT_SET_U32 \ 649 (SI32_EPCA_A_STATUS_C5IOVFI_NOT_SET_VALUE << SI32_EPCA_A_STATUS_C5IOVFI_SHIFT) 650 // Channel 5 counted past the channel n-bit mode limit. 651 #define SI32_EPCA_A_STATUS_C5IOVFI_SET_VALUE 1 652 #define SI32_EPCA_A_STATUS_C5IOVFI_SET_U32 \ 653 (SI32_EPCA_A_STATUS_C5IOVFI_SET_VALUE << SI32_EPCA_A_STATUS_C5IOVFI_SHIFT) 654 655 656 657 struct SI32_EPCA_A_COUNTER_Struct 658 { 659 union 660 { 661 struct 662 { 663 // Counter/Timer 664 volatile uint16_t COUNTER_BITS; 665 uint32_t reserved0: 16; 666 }; 667 volatile uint32_t U32; 668 }; 669 }; 670 671 #define SI32_EPCA_A_COUNTER_COUNTER_MASK 0x0000FFFF 672 #define SI32_EPCA_A_COUNTER_COUNTER_SHIFT 0 673 674 675 676 struct SI32_EPCA_A_LIMIT_Struct 677 { 678 union 679 { 680 struct 681 { 682 // Upper Limit 683 volatile uint16_t LIMIT_BITS; 684 uint32_t reserved0: 16; 685 }; 686 volatile uint32_t U32; 687 }; 688 }; 689 690 #define SI32_EPCA_A_LIMIT_LIMIT_MASK 0x0000FFFF 691 #define SI32_EPCA_A_LIMIT_LIMIT_SHIFT 0 692 693 694 695 struct SI32_EPCA_A_LIMITUPD_Struct 696 { 697 union 698 { 699 struct 700 { 701 // Module Upper Limit Update Value 702 volatile uint16_t LIMITUPD_BITS; 703 uint32_t reserved0: 16; 704 }; 705 volatile uint32_t U32; 706 }; 707 }; 708 709 #define SI32_EPCA_A_LIMITUPD_LIMITUPD_MASK 0x0000FFFF 710 #define SI32_EPCA_A_LIMITUPD_LIMITUPD_SHIFT 0 711 712 713 714 struct SI32_EPCA_A_DTIME_Struct 715 { 716 union 717 { 718 struct 719 { 720 // X Phase Delay Time 721 volatile uint8_t DTIMEX; 722 // Y Phase Delay Time 723 volatile uint8_t DTIMEY; 724 uint32_t reserved0: 16; 725 }; 726 volatile uint32_t U32; 727 }; 728 }; 729 730 #define SI32_EPCA_A_DTIME_DTIMEX_MASK 0x000000FF 731 #define SI32_EPCA_A_DTIME_DTIMEX_SHIFT 0 732 733 #define SI32_EPCA_A_DTIME_DTIMEY_MASK 0x0000FF00 734 #define SI32_EPCA_A_DTIME_DTIMEY_SHIFT 8 735 736 737 738 struct SI32_EPCA_A_DTARGET_Struct 739 { 740 union 741 { 742 struct 743 { 744 // DMA Transfer Target 745 volatile uint32_t DTARGET_BITS; 746 }; 747 volatile uint32_t U32; 748 }; 749 }; 750 751 #define SI32_EPCA_A_DTARGET_DTARGET_MASK 0xFFFFFFFF 752 #define SI32_EPCA_A_DTARGET_DTARGET_SHIFT 0 753 754 755 756 typedef struct SI32_EPCA_A_Struct 757 { 758 struct SI32_EPCA_A_MODE_Struct MODE ; // Base Address + 0x0 759 uint32_t reserved0; 760 uint32_t reserved1; 761 uint32_t reserved2; 762 struct SI32_EPCA_A_CONTROL_Struct CONTROL ; // Base Address + 0x10 763 volatile uint32_t CONTROL_SET; 764 volatile uint32_t CONTROL_CLR; 765 uint32_t reserved3; 766 struct SI32_EPCA_A_STATUS_Struct STATUS ; // Base Address + 0x20 767 volatile uint32_t STATUS_SET; 768 volatile uint32_t STATUS_CLR; 769 uint32_t reserved4; 770 struct SI32_EPCA_A_COUNTER_Struct COUNTER ; // Base Address + 0x30 771 uint32_t reserved5; 772 uint32_t reserved6; 773 uint32_t reserved7; 774 struct SI32_EPCA_A_LIMIT_Struct LIMIT ; // Base Address + 0x40 775 uint32_t reserved8; 776 uint32_t reserved9; 777 uint32_t reserved10; 778 struct SI32_EPCA_A_LIMITUPD_Struct LIMITUPD ; // Base Address + 0x50 779 uint32_t reserved11; 780 uint32_t reserved12; 781 uint32_t reserved13; 782 struct SI32_EPCA_A_DTIME_Struct DTIME ; // Base Address + 0x60 783 uint32_t reserved14; 784 uint32_t reserved15; 785 uint32_t reserved16; 786 uint32_t reserved17[4]; 787 struct SI32_EPCA_A_DTARGET_Struct DTARGET ; // Base Address + 0x80 788 uint32_t reserved18; 789 uint32_t reserved19; 790 uint32_t reserved20; 791 } SI32_EPCA_A_Type; 792 793 #ifdef __cplusplus 794 } 795 #endif 796 797 #endif // __SI32_EPCA_A_REGISTERS_H__ 798 799 //-eof-------------------------------------------------------------------------- 800 801