1 /***************************************************************************//**
2 * @file
3 * @brief Peripheral Reflex System (PRS) peripheral API
4 *******************************************************************************
5 * # License
6 * <b>Copyright 2018 Silicon Laboratories Inc. www.silabs.com</b>
7 *******************************************************************************
8 *
9 * SPDX-License-Identifier: Zlib
10 *
11 * The licensor of this software is Silicon Laboratories Inc.
12 *
13 * This software is provided 'as-is', without any express or implied
14 * warranty. In no event will the authors be held liable for any damages
15 * arising from the use of this software.
16 *
17 * Permission is granted to anyone to use this software for any purpose,
18 * including commercial applications, and to alter it and redistribute it
19 * freely, subject to the following restrictions:
20 *
21 * 1. The origin of this software must not be misrepresented; you must not
22 * claim that you wrote the original software. If you use this software
23 * in a product, an acknowledgment in the product documentation would be
24 * appreciated but is not required.
25 * 2. Altered source versions must be plainly marked as such, and must not be
26 * misrepresented as being the original software.
27 * 3. This notice may not be removed or altered from any source distribution.
28 *
29 ******************************************************************************/
30
31 #ifndef EM_PRS_H
32 #define EM_PRS_H
33
34 #include "em_device.h"
35 #include "em_gpio.h"
36
37 #include <stdbool.h>
38 #include <stddef.h>
39
40 #if defined(PRS_COUNT) && (PRS_COUNT > 0)
41
42 #ifdef __cplusplus
43 extern "C" {
44 #endif
45
46 /***************************************************************************//**
47 * @addtogroup prs
48 * @{
49 ******************************************************************************/
50
51 /*******************************************************************************
52 ******************************* DEFINES ***********************************
53 ******************************************************************************/
54
55 #if defined(_SILICON_LABS_32B_SERIES_2)
56 /** PRS Synchronous channel count. */
57 #define PRS_SYNC_CHAN_COUNT PRS_SYNC_CH_NUM
58 /** PRS Asynchronous channel count. */
59 #define PRS_ASYNC_CHAN_COUNT PRS_ASYNC_CH_NUM
60 #elif defined(_EFM32_GECKO_FAMILY)
61 /** PRS Synchronous channel count. */
62 #define PRS_SYNC_CHAN_COUNT PRS_CHAN_COUNT
63 /** PRS Asynchronous channel count. */
64 #define PRS_ASYNC_CHAN_COUNT 0
65 #else
66 /** PRS Synchronous channel count. */
67 #define PRS_SYNC_CHAN_COUNT PRS_CHAN_COUNT
68 /** PRS Asynchronous channel count. */
69 #define PRS_ASYNC_CHAN_COUNT PRS_CHAN_COUNT
70 #endif
71
72 #if !defined(_EFM32_GECKO_FAMILY)
73 /** PRS asynchronous support */
74 #define PRS_ASYNC_SUPPORTED 1
75 #endif
76
77 /** @cond DO_NOT_INCLUDE_WITH_DOXYGEN */
78 /* Some devices have renamed signals so some of these signals are mapped to
79 common names. */
80 #if defined(PRS_USART0_RXDATAV)
81 #define PRS_USART0_RXDATA PRS_USART0_RXDATAV
82 #endif
83 #if defined(PRS_USART1_RXDATAV)
84 #define PRS_USART1_RXDATA PRS_USART1_RXDATAV
85 #endif
86 #if defined(PRS_USART2_RXDATAV)
87 #define PRS_USART2_RXDATA PRS_USART2_RXDATAV
88 #endif
89 #if defined(PRS_BURTC_OVERFLOW)
90 #define PRS_BURTC_OF PRS_BURTC_OVERFLOW
91 #endif
92 #if defined(PRS_BURTC_COMP0)
93 #define PRS_BURTC_COMP PRS_BURTC_COMP0
94 #endif
95 /** @endcond */
96
97 /*******************************************************************************
98 ******************************** ENUMS ************************************
99 ******************************************************************************/
100
101 /** PRS Channel type. */
102 typedef enum {
103 prsTypeAsync, /**< Asynchronous channel type. */
104 prsTypeSync /**< Synchronous channel type.*/
105 } PRS_ChType_t;
106
107 /** Edge detection type. */
108 typedef enum {
109 prsEdgeOff, /**< Leave signal as is. */
110 prsEdgePos, /**< Generate pulses on positive edge. */
111 prsEdgeNeg, /**< Generate pulses on negative edge. */
112 prsEdgeBoth /**< Generate pulses on both edges. */
113 } PRS_Edge_TypeDef;
114
115 #if defined(_PRS_ASYNC_CH_CTRL_FNSEL_MASK)
116 /** Logic functions that can be used when combining two PRS channels. */
117 typedef enum {
118 prsLogic_Zero = _PRS_ASYNC_CH_CTRL_FNSEL_LOGICAL_ZERO, /**< Logical 0. */
119 prsLogic_A_NOR_B = _PRS_ASYNC_CH_CTRL_FNSEL_A_NOR_B, /**< A NOR B. */
120 prsLogic_NOT_A_AND_B = _PRS_ASYNC_CH_CTRL_FNSEL_NOT_A_AND_B, /**< (!A) NOR B. */
121 prsLogic_NOT_A = _PRS_ASYNC_CH_CTRL_FNSEL_NOT_A, /**< !A. */
122 prsLogic_A_AND_NOT_B = _PRS_ASYNC_CH_CTRL_FNSEL_A_AND_NOT_B, /**< A AND (!B). */
123 prsLogic_NOT_B = _PRS_ASYNC_CH_CTRL_FNSEL_NOT_B, /**< !B. */
124 prsLogic_A_XOR_B = _PRS_ASYNC_CH_CTRL_FNSEL_A_XOR_B, /**< A XOR B. */
125 prsLogic_A_NAND_B = _PRS_ASYNC_CH_CTRL_FNSEL_A_NAND_B, /**< A NAND B. */
126 prsLogic_A_AND_B = _PRS_ASYNC_CH_CTRL_FNSEL_A_AND_B, /**< A AND B. */
127 prsLogic_A_XNOR_B = _PRS_ASYNC_CH_CTRL_FNSEL_A_XNOR_B, /**< A XNOR B. */
128 prsLogic_B = _PRS_ASYNC_CH_CTRL_FNSEL_B, /**< B. */
129 prsLogic_NOT_A_OR_B = _PRS_ASYNC_CH_CTRL_FNSEL_NOT_A_OR_B, /**< (!A) OR B. */
130 prsLogic_A = _PRS_ASYNC_CH_CTRL_FNSEL_A, /**< A. */
131 prsLogic_A_OR_NOT_B = _PRS_ASYNC_CH_CTRL_FNSEL_A_OR_NOT_B, /**< A OR (!B). */
132 prsLogic_A_OR_B = _PRS_ASYNC_CH_CTRL_FNSEL_A_OR_B, /**< A OR B. */
133 prsLogic_One = _PRS_ASYNC_CH_CTRL_FNSEL_LOGICAL_ONE, /**< Logical 1. */
134 } PRS_Logic_t;
135 #endif
136
137 /** PRS Signal. */
138 typedef enum {
139 #if defined(_PRS_SYNC_CH_CTRL_SOURCESEL_MASK)
140 prsSignalNone = PRS_SYNC_CH_CTRL_SOURCESEL_DEFAULT | (0x0 << _PRS_SYNC_CH_CTRL_SIGSEL_SHIFT), /**< No Signal. */
141 prsSignalSW = PRS_SYNC_CH_CTRL_SOURCESEL_DEFAULT | (0x1 << _PRS_SYNC_CH_CTRL_SIGSEL_SHIFT), /**< Software-reserved Signal. */
142 #else
143 prsSignalNone = PRS_CH_CTRL_SOURCESEL_NONE | (0x0 << _PRS_CH_CTRL_SIGSEL_SHIFT), /**< No Signal. */
144 prsSignalSW = PRS_CH_CTRL_SOURCESEL_NONE | (0x1 << _PRS_CH_CTRL_SIGSEL_SHIFT), /**< Software-reserved Signal. */
145 #endif
146
147 #if defined(PRS_PRS_CH11)
148 prsSignalPRS_CH0 = PRS_PRS_CH0, /**< PRS_CH0 signal */
149 prsSignalPRS_CH1 = PRS_PRS_CH1, /**< PRS_CH1 signal */
150 prsSignalPRS_CH2 = PRS_PRS_CH2, /**< PRS_CH2 signal */
151 prsSignalPRS_CH3 = PRS_PRS_CH3, /**< PRS_CH3 signal */
152 prsSignalPRS_CH4 = PRS_PRS_CH4, /**< PRS_CH4 signal */
153 prsSignalPRS_CH5 = PRS_PRS_CH5, /**< PRS_CH5 signal */
154 prsSignalPRS_CH6 = PRS_PRS_CH6, /**< PRS_CH6 signal */
155 prsSignalPRS_CH7 = PRS_PRS_CH7, /**< PRS_CH7 signal */
156 prsSignalPRS_CH8 = PRS_PRS_CH8, /**< PRS_CH8 signal */
157 prsSignalPRS_CH9 = PRS_PRS_CH9, /**< PRS_CH9 signal */
158 prsSignalPRS_CH10 = PRS_PRS_CH10, /**< PRS_CH10 signal */
159 prsSignalPRS_CH11 = PRS_PRS_CH11, /**< PRS_CH11 signal */
160 #endif
161 #if defined(PRS_PRS_CH23)
162 prsSignalPRS_CH12 = PRS_PRS_CH12, /**< PRS_CH12 signal */
163 prsSignalPRS_CH13 = PRS_PRS_CH13, /**< PRS_CH13 signal */
164 prsSignalPRS_CH14 = PRS_PRS_CH14, /**< PRS_CH14 signal */
165 prsSignalPRS_CH15 = PRS_PRS_CH15, /**< PRS_CH15 signal */
166 prsSignalPRS_CH16 = PRS_PRS_CH16, /**< PRS_CH16 signal */
167 prsSignalPRS_CH17 = PRS_PRS_CH17, /**< PRS_CH17 signal */
168 prsSignalPRS_CH18 = PRS_PRS_CH18, /**< PRS_CH18 signal */
169 prsSignalPRS_CH19 = PRS_PRS_CH19, /**< PRS_CH19 signal */
170 prsSignalPRS_CH20 = PRS_PRS_CH20, /**< PRS_CH20 signal */
171 prsSignalPRS_CH21 = PRS_PRS_CH21, /**< PRS_CH21 signal */
172 prsSignalPRS_CH22 = PRS_PRS_CH22, /**< PRS_CH22 signal */
173 prsSignalPRS_CH23 = PRS_PRS_CH23, /**< PRS_CH23 signal */
174 #endif
175
176 #if defined(PRS_ADC0_SINGLE)
177 prsSignalADC0_SINGLE = PRS_ADC0_SINGLE, /**< ADC0_SINGLE signal */
178 prsSignalADC0_SCAN = PRS_ADC0_SCAN, /**< ADC0_SCAN signal */
179 #endif
180 #if defined(PRS_ADC1_SINGLE)
181 prsSignalADC1_SINGLE = PRS_ADC1_SINGLE, /**< ADC1_SINGLE signal */
182 prsSignalADC1_SCAN = PRS_ADC1_SCAN, /**< ADC1_SCAN signal */
183 #endif
184
185 /* Timer Signals */
186 #if defined(TIMER0)
187 prsSignalTIMER0_UF = PRS_TIMER0_UF, /**< TIMER0 underflow Signal. */
188 prsSignalTIMER0_OF = PRS_TIMER0_OF, /**< TIMER0 overflow Signal. */
189 prsSignalTIMER0_CC0 = PRS_TIMER0_CC0, /**< TIMER0 capture/compare channel 0 Signal. */
190 prsSignalTIMER0_CC1 = PRS_TIMER0_CC1, /**< TIMER0 capture/compare channel 1 Signal. */
191 prsSignalTIMER0_CC2 = PRS_TIMER0_CC2, /**< TIMER0 capture/compare channel 2 Signal. */
192 #endif
193 #if defined(TIMER1)
194 prsSignalTIMER1_UF = PRS_TIMER1_UF, /**< TIMER1 underflow Signal. */
195 prsSignalTIMER1_OF = PRS_TIMER1_OF, /**< TIMER1 overflow Signal. */
196 prsSignalTIMER1_CC0 = PRS_TIMER1_CC0, /**< TIMER1 capture/compare channel 0 Signal. */
197 prsSignalTIMER1_CC1 = PRS_TIMER1_CC1, /**< TIMER1 capture/compare channel 1 Signal. */
198 prsSignalTIMER1_CC2 = PRS_TIMER1_CC2, /**< TIMER1 capture/compare channel 2 Signal. */
199 #endif
200 #if defined(TIMER2)
201 prsSignalTIMER2_UF = PRS_TIMER2_UF, /**< TIMER2 underflow Signal. */
202 prsSignalTIMER2_OF = PRS_TIMER2_OF, /**< TIMER2 overflow Signal. */
203 prsSignalTIMER2_CC0 = PRS_TIMER2_CC0, /**< TIMER2 capture/compare channel 0 Signal. */
204 prsSignalTIMER2_CC1 = PRS_TIMER2_CC1, /**< TIMER2 capture/compare channel 1 Signal. */
205 prsSignalTIMER2_CC2 = PRS_TIMER2_CC2, /**< TIMER2 capture/compare channel 2 Signal. */
206 #endif
207 #if defined(TIMER3)
208 prsSignalTIMER3_UF = PRS_TIMER3_UF, /**< TIMER3 underflow Signal. */
209 prsSignalTIMER3_OF = PRS_TIMER3_OF, /**< TIMER3 overflow Signal. */
210 prsSignalTIMER3_CC0 = PRS_TIMER3_CC0, /**< TIMER3 capture/compare channel 0 Signal. */
211 prsSignalTIMER3_CC1 = PRS_TIMER3_CC1, /**< TIMER3 capture/compare channel 1 Signal. */
212 prsSignalTIMER3_CC2 = PRS_TIMER3_CC2, /**< TIMER3 capture/compare channel 2 Signal. */
213 #if defined(PRS_TIMER1_CC3)
214 prsSignalTIMER1_CC3 = PRS_TIMER1_CC3, /**< TIMER3 capture/compare channel 3 Signal. */
215 #endif
216 #endif
217 #if defined(TIMER4)
218 prsSignalTIMER4_UF = PRS_TIMER4_UF, /**< TIMER4 underflow Signal. */
219 prsSignalTIMER4_OF = PRS_TIMER4_OF, /**< TIMER4 overflow Signal. */
220 prsSignalTIMER4_CC0 = PRS_TIMER4_CC0, /**< TIMER4 capture/compare channel 0 Signal. */
221 prsSignalTIMER4_CC1 = PRS_TIMER4_CC1, /**< TIMER4 capture/compare channel 1 Signal. */
222 prsSignalTIMER4_CC2 = PRS_TIMER4_CC2, /**< TIMER4 capture/compare channel 2 Signal. */
223 #endif
224 #if defined(TIMER5)
225 prsSignalTIMER5_UF = PRS_TIMER5_UF, /**< TIMER5 underflow Signal. */
226 prsSignalTIMER5_OF = PRS_TIMER5_OF, /**< TIMER5 overflow Signal. */
227 prsSignalTIMER5_CC0 = PRS_TIMER5_CC0, /**< TIMER5 capture/compare channel 0 Signal. */
228 prsSignalTIMER5_CC1 = PRS_TIMER5_CC1, /**< TIMER5 capture/compare channel 1 Signal. */
229 prsSignalTIMER5_CC2 = PRS_TIMER5_CC2, /**< TIMER5 capture/compare channel 2 Signal. */
230 #endif
231 #if defined(TIMER6)
232 prsSignalTIMER6_UF = PRS_TIMER6_UF, /**< TIMER6 underflow Signal. */
233 prsSignalTIMER6_OF = PRS_TIMER6_OF, /**< TIMER6 overflow Signal. */
234 prsSignalTIMER6_CC0 = PRS_TIMER6_CC0, /**< TIMER6 capture/compare channel 0 Signal. */
235 prsSignalTIMER6_CC1 = PRS_TIMER6_CC1, /**< TIMER6 capture/compare channel 1 Signal. */
236 prsSignalTIMER6_CC2 = PRS_TIMER6_CC2, /**< TIMER6 capture/compare channel 2 Signal. */
237 #endif
238 #if defined(TIMER7)
239 prsSignalTIMER7_UF = PRS_TIMER7_UF, /**< TIMER7 underflow Signal. */
240 prsSignalTIMER7_OF = PRS_TIMER7_OF, /**< TIMER7 overflow Signal. */
241 prsSignalTIMER7_CC0 = PRS_TIMER7_CC0, /**< TIMER7 capture/compare channel 0 Signal. */
242 prsSignalTIMER7_CC1 = PRS_TIMER7_CC1, /**< TIMER7 capture/compare channel 1 Signal. */
243 prsSignalTIMER7_CC2 = PRS_TIMER7_CC2, /**< TIMER7 capture/compare channel 2 Signal. */
244 #endif
245 #if defined(PRS_LETIMER0_CH0)
246 prsSignalLETIMER0_CH0 = PRS_LETIMER0_CH0, /**< LETIMER0 channel 0 Signal. */
247 prsSignalLETIMER0_CH1 = PRS_LETIMER0_CH1, /**< LETIMER0 channel 1 Signal. */
248 #endif
249 #if defined(PRS_LETIMER1_CH0)
250 prsSignalLETIMER1_CH0 = PRS_LETIMER1_CH0, /**< LETIMER1 channel 0 Signal. */
251 prsSignalLETIMER1_CH1 = PRS_LETIMER1_CH1, /**< LETIMER1 channel 1 Signal. */
252 #endif
253 #if defined(PRS_PCNT0_TCC)
254 prsSignalPCNT0_TCC = PRS_PCNT0_TCC, /**< PCNT0_TCC Signal. */
255 #endif
256 #if defined(PRS_PCNT0_UFOF)
257 prsSignalPCNT0_UFOF = PRS_PCNT0_UFOF, /**< PCNT0_TCC Signal. */
258 prsSignalPCNT0_DIR = PRS_PCNT0_DIR, /**< PCNT0_TCC Signal. */
259 #endif
260 #if defined(PRS_PCNT1_TCC)
261 prsSignalPCNT1_TCC = PRS_PCNT1_TCC, /**< PCNT1_TCC Signal. */
262 prsSignalPCNT1_UFOF = PRS_PCNT1_UFOF, /**< PCNT1_TCC Signal. */
263 prsSignalPCNT1_DIR = PRS_PCNT1_DIR, /**< PCNT1_TCC Signal. */
264 #endif
265 #if defined(PRS_PCNT2_TCC)
266 prsSignalPCNT2_TCC = PRS_PCNT2_TCC, /**< PCNT2_TCC Signal. */
267 prsSignalPCNT2_UFOF = PRS_PCNT2_UFOF, /**< PCNT2_TCC Signal. */
268 prsSignalPCNT2_DIR = PRS_PCNT2_DIR, /**< PCNT2_TCC Signal. */
269 #endif
270 #if defined(PRS_CRYOTIMER_PERIOD)
271 prsSignalCRYOTIMER_PERIOD = PRS_CRYOTIMER_PERIOD, /**< CRYOTIMER_PERIOD Signal. */
272 #endif
273 #if defined(PRS_CORE_CTIOUT0)
274 prsSignalCORE_CTIOUT0 = PRS_CORE_CTIOUT0, /**< CORE CTIOUT0 Signal. */
275 prsSignalCORE_CTIOUT1 = PRS_CORE_CTIOUT1, /**< CORE CTIOUT1 Signal. */
276 prsSignalCORE_CTIOUT2 = PRS_CORE_CTIOUT2, /**< CORE CTIOUT2 Signal. */
277 prsSignalCORE_CTIOUT3 = PRS_CORE_CTIOUT3, /**< CORE CTIOUT3 Signal. */
278 #endif
279 #if defined(PRS_CMUL_CLKOUT0)
280 prsSignalCMUL_CLKOUT0 = PRS_CMUL_CLKOUT0, /**< CMU CLKOUT0 Signal. */
281 prsSignalCMUL_CLKOUT1 = PRS_CMUL_CLKOUT1, /**< CMU CLKOUT1 Signal. */
282 prsSignalCMUL_CLKOUT2 = PRS_CMUL_CLKOUT2, /**< CMU CLKOUT2 Signal. */
283 #endif
284 #if defined(PRS_PRSL_ASYNCH0)
285 prsSignalPRSL_ASYNCH0 = PRS_PRSL_ASYNCH0, /**< PRS channel 0 Signal. */
286 prsSignalPRSL_ASYNCH1 = PRS_PRSL_ASYNCH1, /**< PRS channel 1 Signal. */
287 prsSignalPRSL_ASYNCH2 = PRS_PRSL_ASYNCH2, /**< PRS channel 2 Signal. */
288 prsSignalPRSL_ASYNCH3 = PRS_PRSL_ASYNCH3, /**< PRS channel 3 Signal. */
289 prsSignalPRSL_ASYNCH4 = PRS_PRSL_ASYNCH4, /**< PRS channel 4 Signal. */
290 prsSignalPRSL_ASYNCH5 = PRS_PRSL_ASYNCH5, /**< PRS channel 5 Signal. */
291 prsSignalPRSL_ASYNCH6 = PRS_PRSL_ASYNCH6, /**< PRS channel 6 Signal. */
292 prsSignalPRSL_ASYNCH7 = PRS_PRSL_ASYNCH7, /**< PRS channel 7 Signal. */
293 prsSignalPRS_ASYNCH8 = PRS_PRS_ASYNCH8, /**< PRS channel 8 Signal. */
294 prsSignalPRS_ASYNCH9 = PRS_PRS_ASYNCH9, /**< PRS channel 9 Signal. */
295 prsSignalPRS_ASYNCH10 = PRS_PRS_ASYNCH10, /**< PRS channel 10 Signal. */
296 prsSignalPRS_ASYNCH11 = PRS_PRS_ASYNCH11, /**< PRS channel 11 Signal. */
297 #if defined(PRS_PRS_ASYNCH15)
298 prsSignalPRS_ASYNCH12 = PRS_PRS_ASYNCH12, /**< PRS channel 12 Signal. */
299 prsSignalPRS_ASYNCH13 = PRS_PRS_ASYNCH13, /**< PRS channel 13 Signal. */
300 prsSignalPRS_ASYNCH14 = PRS_PRS_ASYNCH14, /**< PRS channel 14 Signal. */
301 prsSignalPRS_ASYNCH15 = PRS_PRS_ASYNCH15, /**< PRS channel 15 Signal. */
302 #endif
303 #endif
304
305 /* RTC/RTCC/SYSRTC/BURTC Signals */
306 #if defined(PRS_RTC_OF)
307 prsSignalRTC_OF = PRS_RTC_OF, /**< RTC_OF signal. */
308 prsSignalRTC_COMP0 = PRS_RTC_COMP0, /**< RTC_COMP0 signal. */
309 prsSignalRTC_COMP1 = PRS_RTC_COMP1, /**< RTC_COMP1 signal. */
310 #if defined(PRS_RTC_COMP5)
311 prsSignalRTC_COMP2 = PRS_RTC_COMP2, /**< RTC_COMP2 signal. */
312 prsSignalRTC_COMP3 = PRS_RTC_COMP3, /**< RTC_COMP3 signal. */
313 prsSignalRTC_COMP4 = PRS_RTC_COMP4, /**< RTC_COMP4 signal. */
314 prsSignalRTC_COMP5 = PRS_RTC_COMP5, /**< RTC_COMP5 signal. */
315 #endif
316 #endif
317 #if defined(RTCC)
318 prsSignalRTCC_CCV0 = PRS_RTCC_CCV0, /**< RTCC capture/compare channel 0 Signal. */
319 prsSignalRTCC_CCV1 = PRS_RTCC_CCV1, /**< RTCC capture/compare channel 1 Signal. */
320 prsSignalRTCC_CCV2 = PRS_RTCC_CCV2, /**< RTCC capture/compare channel 2 Signal. */
321 #endif
322 #if defined(BURTC)
323 prsSignalBURTC_COMP = PRS_BURTC_COMP, /**< BURTC compare Signal. */
324 prsSignalBURTC_OF = PRS_BURTC_OF, /**< BURTC overflow Signal. */
325 #endif
326 #if defined(SYSRTC0)
327 prsSignalSYSRTC0_GRP0OUT0 = PRS_SYSRTC0_GRP0OUT0, /**< SYSRTC GRP0OUT0 Signal. */
328 prsSignalSYSRTC0_GRP0OUT1 = PRS_SYSRTC0_GRP0OUT1, /**< SYSRTC GRP0OUT1 Signal. */
329 prsSignalSYSRTC0_GRP1OUT0 = PRS_SYSRTC0_GRP1OUT0, /**< SYSRTC GRP1OUT0 Signal. */
330 prsSignalSYSRTC0_GRP1OUT1 = PRS_SYSRTC0_GRP1OUT1, /**< SYSRTC GRP1OUT1 Signal. */
331 #endif
332 #if defined(PRS_HFXO0L_STATUS)
333 prsSignalHFXO0L_STATUS = PRS_HFXO0L_STATUS, /**< HFXO0L_STATUS Signal. */
334 prsSignalHFXO0L_STATUS1 = PRS_HFXO0L_STATUS1, /**< HFXO0L_STATUS1 Signal. */
335 #endif
336 #if defined(PRS_HFRCO0_COREEN)
337 prsSignalHFRCO0_COREEN = PRS_HFRCO0_COREEN, /**< HFRCO0_COREEN Signal. */
338 prsSignalHFRCO0_STATE0 = PRS_HFRCO0_STATE0, /**< HFRCO0_STATE0 Signal. */
339 prsSignalHFRCO0_STATE1 = PRS_HFRCO0_STATE1, /**< HFRCO0_STATE1 Signal. */
340 prsSignalHFRCO0_STATE2 = PRS_HFRCO0_STATE2, /**< HFRCO0_STATE2 Signal. */
341 #endif
342 #if defined(PRS_HFRCOEM23_COREEN)
343 prsSignalHFRCOEM23_COREEN = PRS_HFRCOEM23_COREEN, /**< HFRCOEM23_COREEN Signal. */
344 prsSignalHFRCOEM23_STATE0 = PRS_HFRCOEM23_STATE0, /**< HFRCOEM23_STATE0 Signal. */
345 prsSignalHFRCOEM23_STATE1 = PRS_HFRCOEM23_STATE1, /**< HFRCOEM23_STATE1 Signal. */
346 prsSignalHFRCOEM23_STATE2 = PRS_HFRCOEM23_STATE2, /**< HFRCOEM23_STATE2 Signal. */
347 #endif
348
349 /* ACMP Signals */
350 #if defined(ACMP0)
351 prsSignalACMP0_OUT = PRS_ACMP0_OUT, /**< ACMP0 Signal. */
352 #endif
353 #if defined(ACMP1)
354 prsSignalACMP1_OUT = PRS_ACMP1_OUT, /**< ACMP1 output Signal. */
355 #endif
356 #if defined(ACMP2)
357 prsSignalACMP2_OUT = PRS_ACMP2_OUT, /**< ACMP2 output Signal. */
358 #endif
359 #if defined(ACMP3)
360 prsSignalACMP3_OUT = PRS_ACMP3_OUT, /**< ACMP3 output Signal. */
361 #endif
362
363 /* VDAC Signals */
364 #if defined(VDAC0) & (_SILICON_LABS_32B_SERIES >= 2)
365 prsSignalVDAC0_CH0WARM = PRS_VDAC0L_CH0WARM, /**< VDAC0 channel 0 warmed Signal. */
366 prsSignalVDAC0_CH1WARM = PRS_VDAC0L_CH1WARM, /**< VDAC0 channel 1 warmed Signal. */
367 prsSignalVDAC0_CH0DONE = PRS_VDAC0L_CH0DONEASYNC, /**< VDAC0 channel 0 conversion done Signal. */
368 prsSignalVDAC0_CH1DONE = PRS_VDAC0L_CH1DONEASYNC, /**< VDAC0 channel 1 conversion done Signal. */
369 prsSignalVDAC0_INTERNALTIMEROF = PRS_VDAC0L_INTERNALTIMEROF, /**< VDAC0 internal timer overflow Signal. */
370 prsSignalVDAC0_REFRESHTIMEROF = PRS_VDAC0L_REFRESHTIMEROF, /**< VDAC0 internal timer overflow Signal. */
371 #endif
372 #if defined(PRS_VDAC0_OPA3)
373 prsSignalVDAC0_CH0 = PRS_VDAC0_CH0, /**< VDAC0_CH0 Signal. */
374 prsSignalVDAC0_CH1 = PRS_VDAC0_CH1, /**< VDAC0_CH1 Signal. */
375 prsSignalVDAC0_OPA0 = PRS_VDAC0_OPA0, /**< VDAC0_OPA0 Signal. */
376 prsSignalVDAC0_OPA1 = PRS_VDAC0_OPA1, /**< VDAC0_OPA1 Signal. */
377 prsSignalVDAC0_OPA2 = PRS_VDAC0_OPA2, /**< VDAC0_OPA2 Signal. */
378 prsSignalVDAC0_OPA3 = PRS_VDAC0_OPA3, /**< VDAC0_OPA3 Signal. */
379 #endif
380 #if defined(VDAC1) & (_SILICON_LABS_32B_SERIES >= 2)
381 prsSignalVDAC1_CH0WARM = PRS_VDAC1L_CH0WARM, /**< VDAC1 channel 0 warmed Signal. */
382 prsSignalVDAC1_CH1WARM = PRS_VDAC1L_CH1WARM, /**< VDAC1 channel 1 warmed Signal. */
383 prsSignalVDAC1_CH0DONE = PRS_VDAC1L_CH0DONEASYNC, /**< VDAC1 channel 0 conversion done Signal. */
384 prsSignalVDAC1_CH1DONE = PRS_VDAC1L_CH1DONEASYNC, /**< VDAC1 channel 1 conversion done Signal. */
385 prsSignalVDAC1_INTERNALTIMEROF = PRS_VDAC1L_INTERNALTIMEROF, /**< VDAC1 internal timer overflow Signal. */
386 prsSignalVDAC1_REFRESHTIMEROF = PRS_VDAC1L_REFRESHTIMEROF, /**< VDAC1 internal timer overflow Signal. */
387 #endif
388
389 #if defined(PRS_LESENSE_SCANRES15)
390 prsSignalLESENSE_SCANRES0 = PRS_LESENSE_SCANRES0, /**< LESENSE_SCANRES0 Signal. */
391 prsSignalLESENSE_SCANRES1 = PRS_LESENSE_SCANRES1, /**< LESENSE_SCANRES1 Signal. */
392 prsSignalLESENSE_SCANRES2 = PRS_LESENSE_SCANRES2, /**< LESENSE_SCANRES2 Signal. */
393 prsSignalLESENSE_SCANRES3 = PRS_LESENSE_SCANRES3, /**< LESENSE_SCANRES3 Signal. */
394 prsSignalLESENSE_SCANRES4 = PRS_LESENSE_SCANRES4, /**< LESENSE_SCANRES4 Signal. */
395 prsSignalLESENSE_SCANRES5 = PRS_LESENSE_SCANRES5, /**< LESENSE_SCANRES5 Signal. */
396 prsSignalLESENSE_SCANRES6 = PRS_LESENSE_SCANRES6, /**< LESENSE_SCANRES6 Signal. */
397 prsSignalLESENSE_SCANRES7 = PRS_LESENSE_SCANRES7, /**< LESENSE_SCANRES7 Signal. */
398 prsSignalLESENSE_SCANRES8 = PRS_LESENSE_SCANRES8, /**< LESENSE_SCANRES8 Signal. */
399 prsSignalLESENSE_SCANRES9 = PRS_LESENSE_SCANRES9, /**< LESENSE_SCANRES9 Signal. */
400 prsSignalLESENSE_SCANRES10 = PRS_LESENSE_SCANRES10, /**< LESENSE_SCANRES10 Signal. */
401 prsSignalLESENSE_SCANRES11 = PRS_LESENSE_SCANRES11, /**< LESENSE_SCANRES11 Signal. */
402 prsSignalLESENSE_SCANRES12 = PRS_LESENSE_SCANRES12, /**< LESENSE_SCANRES12 Signal. */
403 prsSignalLESENSE_SCANRES13 = PRS_LESENSE_SCANRES13, /**< LESENSE_SCANRES13 Signal. */
404 prsSignalLESENSE_SCANRES14 = PRS_LESENSE_SCANRES14, /**< LESENSE_SCANRES14 Signal. */
405 prsSignalLESENSE_SCANRES15 = PRS_LESENSE_SCANRES15, /**< LESENSE_SCANRES15 Signal. */
406 #endif
407 #if defined(PRS_LESENSE_DEC2)
408 prsSignalLESENSE_DEC0 = PRS_LESENSE_DEC0, /**< LESENSE_DEC0 Signal. */
409 prsSignalLESENSE_DEC1 = PRS_LESENSE_DEC1, /**< LESENSE_DEC1 Signal. */
410 prsSignalLESENSE_DEC2 = PRS_LESENSE_DEC2, /**< LESENSE_DEC2 Signal. */
411 #endif
412 #if defined(PRS_LESENSE_DECOUT2)
413 prsSignalLESENSE_DECOUT0 = PRS_LESENSE_DECOUT0, /**< LESENSE_DECOUT0 Signal. */
414 prsSignalLESENSE_DECOUT1 = PRS_LESENSE_DECOUT1, /**< LESENSE_DECOUT1 Signal. */
415 prsSignalLESENSE_DECOUT2 = PRS_LESENSE_DECOUT2, /**< LESENSE_DECOUT2 Signal. */
416 #endif
417 #if defined(PRS_LESENSE_DECCMP)
418 prsSignalLESENSE_DECCMP = PRS_LESENSE_DECCMP, /**< LESENSE_DECCMP Signal. */
419 #endif
420 #if defined(PRS_LESENSE_MEASACT)
421 prsSignalLESENSE_MEASACT = PRS_LESENSE_MEASACT, /**< LESENSE_MEASACT Signal. */
422 #endif
423
424 /* USART Signals */
425 #if defined(USART0)
426 prsSignalUSART0_TXC = PRS_USART0_TXC, /**< USART0 TX complete Signal. */
427 #if defined(PRS_USART0_RXDATA)
428 prsSignalUSART0_RXDATA = PRS_USART0_RXDATA, /**< USART0 RX data available Signal. */
429 #endif
430 #if defined(PRS_USART0_RXDATAV)
431 prsSignalUSART0_RXDATAV = PRS_USART0_RXDATAV, /**< USART0 RX data available Signal. */
432 #endif
433 #if defined(PRS_USART0_IRTX)
434 prsSignalUSART0_IRTX = PRS_USART0_IRTX, /**< USART0 IR TX Signal. */
435 #endif
436 #if defined(PRS_USART0_RTS)
437 prsSignalUSART0_RTS = PRS_USART0_RTS, /**< USART0 RTS Signal. */
438 prsSignalUSART0_TX = PRS_USART0_TX, /**< USART0 TX Signal. */
439 prsSignalUSART0_CS = PRS_USART0_CS, /**< USART0 chip select Signal. */
440 #endif
441 #endif
442 #if defined(USART1)
443 prsSignalUSART1_TXC = PRS_USART1_TXC, /**< USART1 TX complete Signal. */
444 #if defined(PRS_USART1_RXDATA)
445 prsSignalUSART1_RXDATA = PRS_USART1_RXDATA, /**< USART1 RX data available Signal. */
446 #endif
447 #if defined(PRS_USART1_RXDATAV)
448 prsSignalUSART1_RXDATAV = PRS_USART1_RXDATAV, /**< USART1 RX data available Signal. */
449 #endif
450 #if defined(PRS_USART1_IRTX)
451 prsSignalUSART1_IRTX = PRS_USART1_IRTX, /**< USART1 IR TX Signal. */
452 #endif
453 #if defined(PRS_USART1_RTS)
454 prsSignalUSART1_RTS = PRS_USART1_RTS, /**< USART1 RTS Signal. */
455 prsSignalUSART1_TX = PRS_USART1_TX, /**< USART1 TX Signal. */
456 prsSignalUSART1_CS = PRS_USART1_CS, /**< USART1 chip select Signal. */
457 #endif
458 #endif
459 #if defined(USART2)
460 prsSignalUSART2_TXC = PRS_USART2_TXC, /**< USART2 TX complete Signal. */
461 #if defined(PRS_USART2_RXDATA)
462 prsSignalUSART2_RXDATA = PRS_USART2_RXDATA, /**< USART2 RX data available Signal. */
463 #endif
464 #if defined(PRS_USART2_RXDATAV)
465 prsSignalUSART2_RXDATAV = PRS_USART2_RXDATAV, /**< USART2 RX data available Signal. */
466 #endif
467 #if defined(PRS_USART2_IRTX)
468 prsSignalUSART2_IRTX = PRS_USART2_IRTX, /**< USART2 IR TX Signal. */
469 #endif
470 #if defined(PRS_USART2_RTS)
471 prsSignalUSART2_RTS = PRS_USART2_RTS, /**< USART2 RTS Signal. */
472 prsSignalUSART2_TX = PRS_USART2_TX, /**< USART2 TX Signal. */
473 prsSignalUSART2_CS = PRS_USART2_CS, /**< USART2 chip select Signal. */
474 #endif
475 #endif
476 #if defined(PRS_USART3_TXC)
477 prsSignalUSART3_TXC = PRS_USART3_TXC, /**< USART3 TX complete Signal. */
478 prsSignalUSART3_RXDATAV = PRS_USART3_RXDATAV, /**< USART3 RX data available Signal. */
479 prsSignalUSART3_RTS = PRS_USART3_RTS, /**< USART3 RTS Signal. */
480 prsSignalUSART3_TX = PRS_USART3_TX, /**< USART3 TX Signal. */
481 prsSignalUSART3_CS = PRS_USART3_CS, /**< USART3 chip select Signal. */
482 #endif
483 #if defined(PRS_USART4_TXC)
484 prsSignalUSART4_TXC = PRS_USART4_TXC, /**< USART4 TX complete Signal. */
485 prsSignalUSART4_RXDATAV = PRS_USART4_RXDATAV, /**< USART4 RX data available Signal. */
486 prsSignalUSART4_RTS = PRS_USART4_RTS, /**< USART4 RTS Signal. */
487 prsSignalUSART4_TX = PRS_USART4_TX, /**< USART4 TX Signal. */
488 prsSignalUSART4_CS = PRS_USART4_CS, /**< USART4 chip select Signal. */
489 #endif
490 #if defined(PRS_USART5_TXC)
491 prsSignalUSART5_TXC = PRS_USART5_TXC, /**< USART5 TX complete Signal. */
492 prsSignalUSART5_RXDATAV = PRS_USART5_RXDATAV, /**< USART5 RX data available Signal. */
493 prsSignalUSART5_RTS = PRS_USART5_RTS, /**< USART5 RTS Signal. */
494 prsSignalUSART5_TX = PRS_USART5_TX, /**< USART5 TX Signal. */
495 prsSignalUSART5_CS = PRS_USART5_CS, /**< USART5 chip select Signal. */
496 #endif
497
498 #if defined(UART0)
499 prsSignalUART0_TXC = PRS_UART0_TXC, /**< UART0 TX complete Signal. */
500 prsSignalUART0_RXDATAV = PRS_UART0_RXDATAV, /**< UART0 RX data available Signal. */
501 #if defined(PRS_UART1_IRTX)
502 prsSignalUART0_IRTX = PRS_UART0_IRTX, /**< UART0 IR TX Signal. */
503 #endif
504 #if defined(PRS_UART0_RTS)
505 prsSignalUART0_RTS = PRS_UART0_RTS, /**< UART0 RTS Signal. */
506 prsSignalUART0_TX = PRS_UART0_TX, /**< UART0 TX Signal. */
507 prsSignalUART0_CS = PRS_UART0_CS, /**< UART0 chip select Signal. */
508 #endif
509 #endif
510
511 #if defined(UART1)
512 prsSignalUART1_TXC = PRS_UART1_TXC, /**< UART1 TX complete Signal. */
513 prsSignalUART1_RXDATAV = PRS_UART1_RXDATAV, /**< UART1 RX data available Signal. */
514 #if defined(PRS_UART1_IRTX)
515 prsSignalUART1_IRTX = PRS_UART1_IRTX, /**< UART1 IR RX Signal. */
516 #endif
517 #if defined(PRS_UART1_RTS)
518 prsSignalUART1_RTS = PRS_UART1_RTS, /**< UART1 RTS Signal. */
519 prsSignalUART1_TX = PRS_UART1_TX, /**< UART1 RX Signal. */
520 prsSignalUART1_CS = PRS_UART1_CS, /**< UART1 chip select Signal. */
521 #endif
522 #endif
523
524 #if defined(PRS_USB_SOF)
525 prsSignalUSB_SOF = PRS_USB_SOF, /**< USB_SOF Signal. */
526 prsSignalUSB_SOFSR = PRS_USB_SOFSR, /**< USB_SOFSR Signal. */
527 #endif
528
529 #if defined(PRS_CM4_TXEV)
530 prsSignalCM4_TXEV = PRS_CM4_TXEV, /**< TXEV Signal. */
531 #endif
532 #if defined(PRS_CM4_ICACHEPCHITSOF)
533 prsSignalCM4_ICACHEPCHITSOF = PRS_CM4_ICACHEPCHITSOF, /**< ICACHEPCHITSOF Signal. */
534 prsSignalCM4_ICACHEPCMISSESOF = PRS_CM4_ICACHEPCMISSESOF, /**< ICACHEPCMISSESOF Signal. */
535 #endif
536
537 #if defined(PRS_WTIMER0_UF)
538 prsSignalWTIMER0_UF = PRS_WTIMER0_UF, /**< WTIMER0_UF Signal. */
539 prsSignalWTIMER0_OF = PRS_WTIMER0_OF, /**< WTIMER0_OF Signal. */
540 prsSignalWTIMER0_CC0 = PRS_WTIMER0_CC0, /**< WTIMER0_CC0 Signal. */
541 prsSignalWTIMER0_CC1 = PRS_WTIMER0_CC1, /**< WTIMER0_CC1 Signal. */
542 prsSignalWTIMER0_CC2 = PRS_WTIMER0_CC2, /**< WTIMER0_CC2 Signal. */
543 #endif
544 #if defined(PRS_WTIMER1_UF)
545 prsSignalWTIMER1_UF = PRS_WTIMER1_UF, /**< WTIMER1_UF Signal. */
546 prsSignalWTIMER1_OF = PRS_WTIMER1_OF, /**< WTIMER1_OF Signal. */
547 prsSignalWTIMER1_CC0 = PRS_WTIMER1_CC0, /**< WTIMER1_CC0 Signal. */
548 prsSignalWTIMER1_CC1 = PRS_WTIMER1_CC1, /**< WTIMER1_CC1 Signal. */
549 prsSignalWTIMER1_CC2 = PRS_WTIMER1_CC2, /**< WTIMER1_CC2 Signal. */
550 prsSignalWTIMER1_CC3 = PRS_WTIMER1_CC3, /**< WTIMER1_CC3 Signal. */
551 #endif
552 #if defined(PRS_WTIMER2_UF)
553 prsSignalWTIMER2_UF = PRS_WTIMER2_UF, /**< WTIMER2_UF Signal. */
554 prsSignalWTIMER2_OF = PRS_WTIMER2_OF, /**< WTIMER2_OF Signal. */
555 prsSignalWTIMER2_CC0 = PRS_WTIMER2_CC0, /**< WTIMER2_CC0 Signal. */
556 prsSignalWTIMER2_CC1 = PRS_WTIMER2_CC1, /**< WTIMER2_CC1 Signal. */
557 prsSignalWTIMER2_CC2 = PRS_WTIMER2_CC2, /**< WTIMER2_CC2 Signal. */
558 #endif
559 #if defined(PRS_WTIMER3_UF)
560 prsSignalWTIMER3_UF = PRS_WTIMER3_UF, /**< WTIMER3_UF Signal. */
561 prsSignalWTIMER3_OF = PRS_WTIMER3_OF, /**< WTIMER3_OF Signal. */
562 prsSignalWTIMER3_CC0 = PRS_WTIMER3_CC0, /**< WTIMER3_CC0 Signal. */
563 prsSignalWTIMER3_CC1 = PRS_WTIMER3_CC1, /**< WTIMER3_CC1 Signal. */
564 prsSignalWTIMER3_CC2 = PRS_WTIMER3_CC2, /**< WTIMER3_CC2 Signal. */
565 #endif
566
567 /* EUSART Signals */
568 #if defined(EUSART0)
569 prsSignalEUSART0_CS = PRS_EUSART0L_CS, /**< EUSART0 chip select Signal. */
570 prsSignalEUSART0_IRTX = PRS_EUSART0L_IRDATX, /**< EUSART0 IR RX Signal. */
571 prsSignalEUSART0_RTS = PRS_EUSART0L_RTS, /**< EUSART0 RTS Signal. */
572 prsSignalEUSART0_RXDATA = PRS_EUSART0L_RXDATAV, /**< EUSART0 RX data available Signal. */
573 prsSignalEUSART0_TX = PRS_EUSART0L_TX, /**< EUSART0 TX Signal. */
574 prsSignalEUSART0_TXC = PRS_EUSART0L_TXC, /**< EUSART0 TX complete Signal. */
575 prsSignalEUSART0_RXFL = PRS_EUSART0L_RXFL, /**< EUSART0 rxfl Signal. */
576 prsSignalEUSART0_TXFL = PRS_EUSART0L_TXFL, /**< EUSART0 txfl Signal. */
577 #endif
578 #if defined(EUSART1)
579 prsSignalEUSART1_CS = PRS_EUSART1L_CS, /**< EUSART1 chip select Signal. */
580 prsSignalEUSART1_IRTX = PRS_EUSART1L_IRDATX, /**< EUSART1 IR TX Signal. */
581 prsSignalEUSART1_RTS = PRS_EUSART1L_RTS, /**< EUSART1 RTS Signal. */
582 prsSignalEUSART1_RXDATA = PRS_EUSART1L_RXDATAV, /**< EUSART1 RX data available Signal. */
583 prsSignalEUSART1_TX = PRS_EUSART1L_TX, /**< EUSART1 TX Signal. */
584 prsSignalEUSART1_TXC = PRS_EUSART1L_TXC, /**< EUSART1 TX complete Signal. */
585 prsSignalEUSART1_RXFL = PRS_EUSART1L_RXFL, /**< EUSART1 rxfl Signal. */
586 prsSignalEUSART1_TXFL = PRS_EUSART1L_TXFL, /**< EUSART1 txfl Signal. */
587 #endif
588 #if defined(EUSART2)
589 #if defined(PRS_EUSART2L_CS)
590 prsSignalEUSART2_CS = PRS_EUSART2L_CS, /**< EUSART2 chip select Signal. */
591 prsSignalEUSART2_IRTX = PRS_EUSART2L_IRDATX, /**< EUSART2 IR TX Signal. */
592 prsSignalEUSART2_RTS = PRS_EUSART2L_RTS, /**< EUSART2 RTS Signal. */
593 prsSignalEUSART2_RXDATA = PRS_EUSART2L_RXDATAV, /**< EUSART2 RX data available Signal. */
594 prsSignalEUSART2_TX = PRS_EUSART2L_TX, /**< EUSART2 TX Signal. */
595 prsSignalEUSART2_TXC = PRS_EUSART2L_TXC, /**< EUSART2 TX complete Signal. */
596 prsSignalEUSART2_RXFL = PRS_EUSART2L_RXFL, /**< EUSART2 rxfl Signal. */
597 prsSignalEUSART2_TXFL = PRS_EUSART2L_TXFL, /**< EUSART2 txfl Signal. */
598 #else
599 prsSignalEUSART2_CS = PRS_EUSART2_CS, /**< EUSART2 chip select Signal. */
600 prsSignalEUSART2_IRTX = PRS_EUSART2_IRDATX, /**< EUSART2 IR TX Signal. */
601 prsSignalEUSART2_RTS = PRS_EUSART2_RTS, /**< EUSART2 RTS Signal. */
602 prsSignalEUSART2_RXDATA = PRS_EUSART2_RXDATAV, /**< EUSART2 RX data available Signal. */
603 prsSignalEUSART2_TX = PRS_EUSART2_TX, /**< EUSART2 TX Signal. */
604 prsSignalEUSART2_TXC = PRS_EUSART2_TXC, /**< EUSART2 TX complete Signal. */
605 prsSignalEUSART2_RXFL = PRS_EUSART2_RXFL, /**< EUSART2 rxfl Signal. */
606 prsSignalEUSART2_TXFL = PRS_EUSART2_TXFL, /**< EUSART2 txfl Signal. */
607 #endif
608 #endif
609 #if defined(EUSART3)
610 #if defined(PRS_EUSART3L_CS)
611 prsSignalEUSART3_CS = PRS_EUSART3L_CS, /**< EUSART3 chip select Signal. */
612 prsSignalEUSART3_IRTX = PRS_EUSART3L_IRDATX, /**< EUSART3 IR TX Signal. */
613 prsSignalEUSART3_RTS = PRS_EUSART3L_RTS, /**< EUSART3 RTS Signal. */
614 prsSignalEUSART3_RXDATA = PRS_EUSART3L_RXDATAV, /**< EUSART3 RX data available Signal. */
615 prsSignalEUSART3_TX = PRS_EUSART3L_TX, /**< EUSART3 TX Signal. */
616 prsSignalEUSART3_TXC = PRS_EUSART3L_TXC, /**< EUSART3 TX complete Signal. */
617 prsSignalEUSART3_RXFL = PRS_EUSART3L_RXFL, /**< EUSART3 rxfl Signal. */
618 prsSignalEUSART3_TXFL = PRS_EUSART3L_TXFL, /**< EUSART3 txfl Signal. */
619 #else
620 prsSignalEUSART3_CS = PRS_EUSART3_CS, /**< EUSART3 chip select Signal. */
621 prsSignalEUSART3_IRTX = PRS_EUSART3_IRDATX, /**< EUSART3 IR TX Signal. */
622 prsSignalEUSART3_RTS = PRS_EUSART3_RTS, /**< EUSART3 RTS Signal. */
623 prsSignalEUSART3_RXDATA = PRS_EUSART3_RXDATAV, /**< EUSART3 RX data available Signal. */
624 prsSignalEUSART3_TX = PRS_EUSART3_TX, /**< EUSART3 TX Signal. */
625 prsSignalEUSART3_TXC = PRS_EUSART3_TXC, /**< EUSART3 TX complete Signal. */
626 prsSignalEUSART3_RXFL = PRS_EUSART3_RXFL, /**< EUSART3 rxfl Signal. */
627 prsSignalEUSART3_TXFL = PRS_EUSART3_TXFL, /**< EUSART3 txfl Signal. */
628 #endif
629 #endif
630 #if defined(EUSART4)
631 prsSignalEUSART4_CS = PRS_EUSART4L_CS, /**< EUSART4 chip select Signal. */
632 prsSignalEUSART4_IRTX = PRS_EUSART4L_IRDATX, /**< EUSART4 IR TX Signal. */
633 prsSignalEUSART4_RTS = PRS_EUSART4L_RTS, /**< EUSART4 RTS Signal. */
634 prsSignalEUSART4_RXDATA = PRS_EUSART4L_RXDATAV, /**< EUSART4 RX data available Signal. */
635 prsSignalEUSART4_TX = PRS_EUSART4L_TX, /**< EUSART4 TX Signal. */
636 prsSignalEUSART4_TXC = PRS_EUSART4L_TXC, /**< EUSART4 TX complete Signal. */
637 prsSignalEUSART4_RXFL = PRS_EUSART4L_RXFL, /**< EUSART4 rxfl Signal. */
638 prsSignalEUSART4_TXFL = PRS_EUSART4L_TXFL, /**< EUSART4 txfl Signal. */
639 #endif
640 /* ADC Signals */
641 #if defined(IADC0)
642 prsSignalIADC0_SCANENTRY = PRS_IADC0_SCANENTRYDONE, /**< IADC0 scan entry Signal. */
643 prsSignalIADC0_SCANTABLE = PRS_IADC0_SCANTABLEDONE, /**< IADC0 scan table Signal. */
644 prsSignalIADC0_SINGLE = PRS_IADC0_SINGLEDONE, /**< IADC0 single Signal. */
645 #endif
646
647 /* GPIO pin Signals */
648 prsSignalGPIO_PIN0 = PRS_GPIO_PIN0, /**< GPIO Pin 0 Signal. */
649 prsSignalGPIO_PIN1 = PRS_GPIO_PIN1, /**< GPIO Pin 1 Signal. */
650 prsSignalGPIO_PIN2 = PRS_GPIO_PIN2, /**< GPIO Pin 2 Signal. */
651 prsSignalGPIO_PIN3 = PRS_GPIO_PIN3, /**< GPIO Pin 3 Signal. */
652 prsSignalGPIO_PIN4 = PRS_GPIO_PIN4, /**< GPIO Pin 4 Signal. */
653 prsSignalGPIO_PIN5 = PRS_GPIO_PIN5, /**< GPIO Pin 5 Signal. */
654 prsSignalGPIO_PIN6 = PRS_GPIO_PIN6, /**< GPIO Pin 6 Signal. */
655 prsSignalGPIO_PIN7 = PRS_GPIO_PIN7, /**< GPIO Pin 7 Signal. */
656 #if defined(PRS_GPIO_PIN15)
657 prsSignalGPIO_PIN8 = PRS_GPIO_PIN8, /**< GPIO Pin 8 Signal. */
658 prsSignalGPIO_PIN9 = PRS_GPIO_PIN9, /**< GPIO Pin 9 Signal. */
659 prsSignalGPIO_PIN10 = PRS_GPIO_PIN10, /**< GPIO Pin 10 Signal. */
660 prsSignalGPIO_PIN11 = PRS_GPIO_PIN11, /**< GPIO Pin 11 Signal. */
661 prsSignalGPIO_PIN12 = PRS_GPIO_PIN12, /**< GPIO Pin 12 Signal. */
662 prsSignalGPIO_PIN13 = PRS_GPIO_PIN13, /**< GPIO Pin 13 Signal. */
663 prsSignalGPIO_PIN14 = PRS_GPIO_PIN14, /**< GPIO Pin 14 Signal. */
664 prsSignalGPIO_PIN15 = PRS_GPIO_PIN15, /**< GPIO Pin 15 Signal. */
665 #endif
666 #if defined(PRS_AGCL_CCA)
667 prsSignalAGCL_CCA = PRS_AGCL_CCA, /**< AGCL_CCA Signal. */
668 prsSignalAGCL_CCAREQ = PRS_AGCL_CCAREQ, /**< AGCL_CCAREQ Signal. */
669 prsSignalAGCL_GAINADJUST = PRS_AGCL_GAINADJUST, /**< AGCL_GAINADJUST Signal. */
670 prsSignalAGCL_GAINOK = PRS_AGCL_GAINOK, /**< AGCL_GAINOK Signal. */
671 prsSignalAGCL_GAINREDUCED = PRS_AGCL_GAINREDUCED, /**< AGCL_GAINREDUCED Signal. */
672 prsSignalAGCL_IFPKI1 = PRS_AGCL_IFPKI1, /**< AGCL_IFPKI1 Signal. */
673 prsSignalAGCL_IFPKQ2 = PRS_AGCL_IFPKQ2, /**< AGCL_IFPKQ2 Signal. */
674 prsSignalAGCL_IFPKRST = PRS_AGCL_IFPKRST, /**< AGCL_IFPKRST Signal. */
675 #endif
676 #if defined(PRS_AGC_PEAKDET)
677 prsSignalAGC_PEAKDET = PRS_AGC_PEAKDET, /**< AGC_PEAKDET Signal. */
678 prsSignalAGC_PROPAGATED = PRS_AGC_PROPAGATED, /**< AGC_PROPAGATED Signal. */
679 prsSignalAGC_RSSIDONE = PRS_AGC_RSSIDONE, /**< AGC_RSSIDONE Signal. */
680 #endif
681 #if defined(PRS_BUFC_THR0)
682 prsSignalBUFC_THR0 = PRS_BUFC_THR0, /**< BUFC_THR0 Signal. */
683 prsSignalBUFC_THR1 = PRS_BUFC_THR1, /**< BUFC_THR1 Signal. */
684 prsSignalBUFC_THR2 = PRS_BUFC_THR2, /**< BUFC_THR2 Signal. */
685 prsSignalBUFC_THR3 = PRS_BUFC_THR3, /**< BUFC_THR3 Signal. */
686 #endif
687 #if defined(PRS_BUFC_CNT0)
688 prsSignalBUFC_CNT0 = PRS_BUFC_CNT0, /**< BUFC_CNT0 Signal. */
689 prsSignalBUFC_CNT1 = PRS_BUFC_CNT1, /**< BUFC_CNT1 Signal. */
690 prsSignalBUFC_FULL = PRS_BUFC_FULL, /**< BUFC_FULL Signal. */
691 #endif
692 #if defined(PRS_MODEML_ADVANCE)
693 prsSignalMODEML_ADVANCE = PRS_MODEML_ADVANCE, /**< MODEML_ADVANCE Signal. */
694 prsSignalMODEML_ANT0 = PRS_MODEML_ANT0, /**< MODEML_ANT0 Signal. */
695 prsSignalMODEML_ANT1 = PRS_MODEML_ANT1, /**< MODEML_ANT1 Signal. */
696 prsSignalMODEML_COHDSADET = PRS_MODEML_COHDSADET, /**< MODEML_COHDSADET Signal. */
697 prsSignalMODEML_COHDSALIVE = PRS_MODEML_COHDSALIVE, /**< MODEML_COHDSALIVE Signal. */
698 prsSignalMODEML_DCLK = PRS_MODEML_DCLK, /**< MODEML_DCLK Signal. */
699 prsSignalMODEML_DOUT = PRS_MODEML_DOUT, /**< MODEML_DOUT Signal. */
700 prsSignalMODEML_FRAMEDET = PRS_MODEML_FRAMEDET, /**< MODEML_FRAMEDET Signal. */
701 #endif
702 #if defined(PRS_MODEM_FRAMEDET)
703 prsSignalMODEM_FRAMEDET = PRS_MODEM_FRAMEDET, /**< MODEM_FRAMEDET Signal. */
704 prsSignalMODEM_TIMDET = PRS_MODEM_TIMDET, /**< MODEM_TIMDET Signal. */
705 prsSignalMODEM_SYNCSENT = PRS_MODEM_SYNCSENT, /**< MODEM_SYNCSENT Signal. */
706 prsSignalMODEM_PRESENT = PRS_MODEM_PRESENT, /**< MODEM_PRESENT Signal. */
707 prsSignalMODEM_ANT0 = PRS_MODEM_ANT0, /**< MODEM_ANT0 Signal. */
708 prsSignalMODEM_ANT1 = PRS_MODEM_ANT1, /**< MODEM_ANT1 Signal. */
709 #endif
710 #if defined(PRS_MODEM_FRAMESENT)
711 prsSignalMODEM_FRAMESENT = PRS_MODEM_FRAMESENT, /**< MODEM_FRAMESENT Signal. */
712 #endif
713 #if defined(PRS_MODEM_PREDET)
714 prsSignalMODEM_PREDET = PRS_MODEM_PREDET, /**< MODEM_PREDET Signal. */
715 #endif
716 #if defined(PRS_MODEM_LRDSADET)
717 prsSignalMODEM_LRDSADET = PRS_MODEM_LRDSADET, /**< MODEM_LRDSADET Signal. */
718 prsSignalMODEM_LRDSALIVE = PRS_MODEM_LRDSALIVE, /**< MODEM_LRDSALIVE Signal. */
719 #endif
720 #if defined(PRS_MODEM_LOWCORR)
721 prsSignalMODEM_LOWCORR = PRS_MODEM_LOWCORR, /**< MODEM_LOWCORR Signal. */
722 prsSignalMODEM_NEWSYMBOL = PRS_MODEM_NEWSYMBOL, /**< MODEM_NEWSYMBOL Signal. */
723 prsSignalMODEM_NEWWND = PRS_MODEM_NEWWND, /**< MODEM_NEWWND Signal. */
724 prsSignalMODEM_POSTPONE = PRS_MODEM_POSTPONE, /**< MODEM_POSTPONE Signal. */
725 #endif
726 #if defined(PRS_MODEMH_PRESENT)
727 prsSignalMODEMH_PRESENT = PRS_MODEMH_PRESENT, /**< MODEMH_PRESENT Signal. */
728 prsSignalMODEMH_RSSIJUMP = PRS_MODEMH_RSSIJUMP, /**< MODEMH_RSSIJUMP Signal. */
729 prsSignalMODEMH_SYNCSENT = PRS_MODEMH_SYNCSENT, /**< MODEMH_SYNCSENT Signal. */
730 prsSignalMODEMH_TIMDET = PRS_MODEMH_TIMDET, /**< MODEMH_TIMDET Signal. */
731 prsSignalMODEMH_WEAK = PRS_MODEMH_WEAK, /**< MODEMH_WEAK Signal. */
732 prsSignalMODEMH_EOF = PRS_MODEMH_EOF, /**< MODEMH_EOF Signal. */
733 #endif
734 #if defined(PRS_MODEMH_SI)
735 prsSignalMODEMH_SI = PRS_MODEMH_SI, /**< MODEMH_SI Signal. */
736 #endif
737 #if defined(PRS_FRC_DCLK)
738 prsSignalFRC_DCLK = PRS_FRC_DCLK, /**< FRC_DCLK Signal. */
739 prsSignalFRC_DOUT = PRS_FRC_DOUT, /**< FRC_DOUT Signal. */
740 #endif
741 #if defined(PRS_PROTIMERL_BOF)
742 prsSignalPROTIMERL_BOF = PRS_PROTIMERL_BOF, /**< PROTIMERL_BOF Signal. */
743 prsSignalPROTIMERL_CC0 = PRS_PROTIMERL_CC0, /**< PROTIMERL_CC0 Signal. */
744 prsSignalPROTIMERL_CC1 = PRS_PROTIMERL_CC1, /**< PROTIMERL_CC1 Signal. */
745 prsSignalPROTIMERL_CC2 = PRS_PROTIMERL_CC2, /**< PROTIMERL_CC2 Signal. */
746 prsSignalPROTIMERL_CC3 = PRS_PROTIMERL_CC3, /**< PROTIMERL_CC3 Signal. */
747 prsSignalPROTIMERL_CC4 = PRS_PROTIMERL_CC4, /**< PROTIMERL_CC4 Signal. */
748 prsSignalPROTIMERL_LBTF = PRS_PROTIMERL_LBTF, /**< PROTIMERL_LBTF Signal. */
749 prsSignalPROTIMERL_LBTR = PRS_PROTIMERL_LBTR, /**< PROTIMERL_LBTR Signal. */
750 #endif
751 #if defined(PRS_PROTIMER_LBTR)
752 prsSignalPROTIMER_LBTR = PRS_PROTIMER_LBTR, /**< PROTIMER_LBTR Signal. */
753 prsSignalPROTIMER_LBTF = PRS_PROTIMER_LBTF, /**< PROTIMER_LBTF Signal. */
754 #endif
755 #if defined(PRS_PROTIMER_LBTS)
756 prsSignalPROTIMER_LBTS = PRS_PROTIMER_LBTS, /**< PROTIMER_LBTS Signal. */
757 #endif
758 #if defined(PRS_PROTIMER_POF)
759 prsSignalPROTIMER_POF = PRS_PROTIMER_POF, /**< PROTIMER_POF Signal. */
760 prsSignalPROTIMER_T0MATCH = PRS_PROTIMER_T0MATCH, /**< PROTIMER_T0MATCH Signal. */
761 prsSignalPROTIMER_T0UF = PRS_PROTIMER_T0UF, /**< PROTIMER_T0UF Signal. */
762 prsSignalPROTIMER_T1MATCH = PRS_PROTIMER_T1MATCH, /**< PROTIMER_T1MATCH Signal. */
763 prsSignalPROTIMER_T1UF = PRS_PROTIMER_T1UF, /**< PROTIMER_T1UF Signal. */
764 prsSignalPROTIMER_WOF = PRS_PROTIMER_WOF, /**< PROTIMER_WOF Signal. */
765 #endif
766 #if defined(PRS_RAC_ACTIVE)
767 prsSignalRAC_ACTIVE = PRS_RAC_ACTIVE, /**< RAC_ACTIVE Signal. */
768 prsSignalRAC_LNAEN = PRS_RAC_LNAEN, /**< RAC_LNAEN Signal. */
769 prsSignalRAC_PAEN = PRS_RAC_PAEN, /**< RAC_PAEN Signal. */
770 prsSignalRAC_RX = PRS_RAC_RX, /**< RAC_RX Signal. */
771 prsSignalRAC_TX = PRS_RAC_TX, /**< RAC_TX Signal. */
772 #endif
773 #if defined(PRS_RACL_ACTIVE)
774 prsSignalRACL_ACTIVE = PRS_RACL_ACTIVE, /**< RACL_ACTIVE Signal. */
775 prsSignalRACL_LNAEN = PRS_RACL_LNAEN, /**< RACL_LNAEN Signal. */
776 prsSignalRACL_PAEN = PRS_RACL_PAEN, /**< RACL_PAEN Signal. */
777 prsSignalRACL_RX = PRS_RACL_RX, /**< RACL_RX Signal. */
778 prsSignalRACL_TX = PRS_RACL_TX, /**< RACL_TX Signal. */
779 prsSignalRACL_CTIOUT0 = PRS_RACL_CTIOUT0, /**< RACL_CTIOUT0 Signal. */
780 prsSignalRACL_CTIOUT1 = PRS_RACL_CTIOUT1, /**< RACL_CTIOUT1 Signal. */
781 prsSignalRACL_CTIOUT2 = PRS_RACL_CTIOUT2, /**< RACL_CTIOUT2 Signal. */
782 #endif
783 #if defined(PRS_RAC_CTIOUT3)
784 prsSignalRAC_CTIOUT3 = PRS_RAC_CTIOUT3, /**< RAC_CTIOUT3 Signal. */
785 #endif
786 #if defined(PRS_RAC_AUXADCDATA)
787 prsSignalRAC_AUXADCDATA = PRS_RAC_AUXADCDATA, /**< RAC_AUXADCDATA Signal. */
788 prsSignalRAC_AUXADCDATAVALID = PRS_RAC_AUXADCDATAVALID, /**< RAC_AUXADCDATAVALID Signal. */
789 #endif
790 #if defined(PRS_SYNTH_MUX0)
791 prsSignalSYNTH_MUX0 = PRS_SYNTH_MUX0, /**< SYNTH_MUX0 Signal. */
792 prsSignalSYNTH_MUX1 = PRS_SYNTH_MUX1, /**< SYNTH_MUX1 Signal. */
793 #endif
794 #if defined(PRS_PRORTC_CCV0)
795 prsSignalPRORTC_CCV0 = PRS_PRORTC_CCV0, /**< PRORTC_CCV0 Signal. */
796 prsSignalPRORTC_CCV1 = PRS_PRORTC_CCV1, /**< PRORTC_CCV1 Signal. */
797 #endif
798 #if defined(RFFPLL0)
799 prsSignalRFFPLL0L_CLKDIGDIV4 = PRS_RFFPLL0L_CLKDIGDIV4, /**< RFFPLL0L CLKDIGDIV4 Signal. */
800 prsSignalRFFPLL0L_CLKMODEMDIV4 = PRS_RFFPLL0L_CLKMODEMDIV4, /**< RFFPLL0L CLKMODEMDIV4 Signal. */
801 #if defined(PRS_RFFPLL0L_RFBIASFSMSTATE0)
802 prsSignalRFFPLL0L_RFBIASFSMSTATE0 = PRS_RFFPLL0L_RFBIASFSMSTATE0, /**< RFFPLL0L RFBIASFSMSTATE0 Signal. */
803 prsSignalRFFPLL0L_RFBIASFSMSTATE1 = PRS_RFFPLL0L_RFBIASFSMSTATE1, /**< RFFPLL0L RFBIASFSMSTATE1 Signal. */
804 prsSignalRFFPLL0L_RFFPLLFSMSTATE0 = PRS_RFFPLL0L_RFFPLLFSMSTATE0, /**< RFFPLL0L RFFPLLFSMSTATE0 Signal. */
805 prsSignalRFFPLL0L_RFFPLLFSMSTATE1 = PRS_RFFPLL0L_RFFPLLFSMSTATE1, /**< RFFPLL0L RFFPLLFSMSTATE1 Signal. */
806 prsSignalRFFPLL0L_RFFPLLFSMSTATE2 = PRS_RFFPLL0L_RFFPLLFSMSTATE2, /**< RFFPLL0L RFFPLLFSMSTATE2 Signal. */
807 prsSignalRFFPLL0L_RFBIASFSMSTATE2 = PRS_RFFPLL0L_RFBIASFSMSTATE2, /**< RFFPLL0L RFBIASFSMSTATE2 Signal. */
808 prsSignalRFFPLL0_RFFPLLFSMSTATE3 = PRS_RFFPLL0_RFFPLLFSMSTATE3, /**< RFFPLL0 RFFPLLFSMSTATE3 Signal. */
809 #endif
810 #endif
811 #if defined(FEFILT0)
812 prsSignalFEFILT0_REMPTY = PRS_FEFILT0_REMPTY, /**< FEFILT0 REMPTY Signal. */
813 prsSignalFEFILT0_WFULL = PRS_FEFILT0_WFULL, /**< FEFILT0 WFULL Signal. */
814 #endif
815 #if defined(FEFILT0)
816 prsSignalFEFILT1_REMPTY = PRS_FEFILT1_REMPTY, /**< FEFILT1 REMPTY Signal. */
817 prsSignalFEFILT1_WFULL = PRS_FEFILT1_WFULL, /**< FEFILT1 WFULL Signal. */
818 #endif
819 #if defined(ETAMPDET)
820 prsSignalETAMPDET_TAMPERSRCETAMPDET = PRS_ETAMPDET_TAMPERSRCETAMPDET, /**< ETAMPDET TAMPERSRCETAMPDET Signal. */
821 #endif
822 #if defined(SMCTRL)
823 prsSignalSMCTRLL_SOFTM0 = PRS_SMCTRLL_SOFTM0, /**< SMCTRLL SOFTM0 Signal. */
824 prsSignalSMCTRLL_SOFTM1 = PRS_SMCTRLL_SOFTM1, /**< SMCTRLL SOFTM1 Signal. */
825 prsSignalSMCTRLL_SOFTM2 = PRS_SMCTRLL_SOFTM2, /**< SMCTRLL SOFTM2 Signal. */
826 prsSignalSMCTRLL_SOFTM3 = PRS_SMCTRLL_SOFTM3, /**< SMCTRLL SOFTM3 Signal. */
827 prsSignalSMCTRLL_SOFTM4 = PRS_SMCTRLL_SOFTM4, /**< SMCTRLL SOFTM4 Signal. */
828 prsSignalSMCTRLL_SOFTM5 = PRS_SMCTRLL_SOFTM5, /**< SMCTRLL SOFTM5 Signal. */
829 prsSignalSMCTRLL_SOFTM6 = PRS_SMCTRLL_SOFTM6, /**< SMCTRLL SOFTM6 Signal. */
830 prsSignalSMCTRLL_SOFTM7 = PRS_SMCTRLL_SOFTM7, /**< SMCTRLL SOFTM7 Signal. */
831 prsSignalSMCTRL_SOFTM8 = PRS_SMCTRL_SOFTM8, /**< SMCTRL SOFTM8 Signal. */
832 prsSignalSMCTRL_SOFTM9 = PRS_SMCTRL_SOFTM9, /**< SMCTRL SOFTM9 Signal. */
833 prsSignalSMCTRL_SOFTM10 = PRS_SMCTRL_SOFTM10, /**< SMCTRL SOFTM10 Signal. */
834 prsSignalSMCTRL_SOFTM11 = PRS_SMCTRL_SOFTM11, /**< SMCTRL SOFTM11 Signal. */
835 #endif
836 #if defined(PRS_SEHFRCO_COREEN)
837 prsSignalSEHFRCO_COREEN = PRS_SEHFRCO_COREEN, /**< SEHFRCO COREEN Signal. */
838 prsSignalSEHFRCO_STATE0 = PRS_SEHFRCO_STATE0, /**< SEHFRCO STATE0 Signal. */
839 prsSignalSEHFRCO_STATE1 = PRS_SEHFRCO_STATE1, /**< SEHFRCO STATE1 Signal. */
840 prsSignalSEHFRCO_STATE2 = PRS_SEHFRCO_STATE2, /**< SEHFRCO STATE2 Signal. */
841 #endif
842 #if defined(PRS_SEATAMPDET_SEATAMPDETSUPTPDELAY)
843 prsSignalSEATAMPDET_SEATAMPDETSUPTPDELAY = PRS_SEATAMPDET_SEATAMPDETSUPTPDELAY, /**< SEATAMPDET SEATAMPDETSUPTPDELAY Signal. */
844 #endif
845 #if defined(PRS_DCDC_MONO70NSANA)
846 prsSignalDCDC_MONO70NSANA = PRS_DCDC_MONO70NSANA, /** DCDC Pulses for Coulomb Counter Calibration Signal. */
847 #endif
848 #if defined(PRS_LFRCO_CALMEAS)
849 prsSignalLFRCO_CALMEAS = PRS_LFRCO_CALMEAS, /** LFRCO Calibration Measure Signal. */
850 prsSignalLFRCO_SDM = PRS_LFRCO_SDM, /** LFRCO Sigma Delta Modulator output Signal. */
851 prsSignalLFRCO_TCMEAS = PRS_LFRCO_TCMEAS, /** LFRCO Temperature Check Measure Signal. */
852 #endif
853 } PRS_Signal_t;
854
855 #if defined(_SILICON_LABS_32B_SERIES_2)
856 /** PRS Consumers. */
857 typedef enum {
858 prsConsumerNone = 0x000, /**< No PRS consumer */
859 prsConsumerCMU_CALDN = offsetof(PRS_TypeDef, CONSUMER_CMU_CALDN), /**< CMU calibration down consumer. */
860 prsConsumerCMU_CALUP = offsetof(PRS_TypeDef, CONSUMER_CMU_CALUP), /**< CMU calibration up consumer. */
861 #if defined(IADC_PRESENT)
862 prsConsumerIADC0_SCANTRIGGER = offsetof(PRS_TypeDef, CONSUMER_IADC0_SCANTRIGGER), /**< IADC0 scan trigger consumer. */
863 prsConsumerIADC0_SINGLETRIGGER = offsetof(PRS_TypeDef, CONSUMER_IADC0_SINGLETRIGGER), /**< IADC0 single trigger consumer. */
864 #endif
865 prsConsumerLDMA_REQUEST0 = offsetof(PRS_TypeDef, CONSUMER_LDMAXBAR_DMAREQ0), /**< LDMA Request 0 consumer. */
866 prsConsumerLDMA_REQUEST1 = offsetof(PRS_TypeDef, CONSUMER_LDMAXBAR_DMAREQ1), /**< LDMA Request 1 consumer. */
867 #if defined(LETIMER0)
868 prsConsumerLETIMER0_CLEAR = offsetof(PRS_TypeDef, CONSUMER_LETIMER0_CLEAR), /**< LETIMER0 clear consumer. */
869 prsConsumerLETIMER0_START = offsetof(PRS_TypeDef, CONSUMER_LETIMER0_START), /**< LETIMER0 start consumer. */
870 prsConsumerLETIMER0_STOP = offsetof(PRS_TypeDef, CONSUMER_LETIMER0_STOP), /**< LETIMER0 stop consumer. */
871 #endif
872 prsConsumerTIMER0_CC0 = offsetof(PRS_TypeDef, CONSUMER_TIMER0_CC0), /**< TIMER0 capture/compare channel 0 consumer. */
873 prsConsumerTIMER0_CC1 = offsetof(PRS_TypeDef, CONSUMER_TIMER0_CC1), /**< TIMER0 capture/compare channel 1 consumer. */
874 prsConsumerTIMER0_CC2 = offsetof(PRS_TypeDef, CONSUMER_TIMER0_CC2), /**< TIMER0 capture/compare channel 2 consumer. */
875 prsConsumerTIMER1_CC0 = offsetof(PRS_TypeDef, CONSUMER_TIMER1_CC0), /**< TIMER1 capture/compare channel 0 consumer. */
876 prsConsumerTIMER1_CC1 = offsetof(PRS_TypeDef, CONSUMER_TIMER1_CC1), /**< TIMER1 capture/compare channel 1 consumer. */
877 prsConsumerTIMER1_CC2 = offsetof(PRS_TypeDef, CONSUMER_TIMER1_CC2), /**< TIMER1 capture/compare channel 2 consumer. */
878 prsConsumerTIMER2_CC0 = offsetof(PRS_TypeDef, CONSUMER_TIMER2_CC0), /**< TIMER2 capture/compare channel 0 consumer. */
879 prsConsumerTIMER2_CC1 = offsetof(PRS_TypeDef, CONSUMER_TIMER2_CC1), /**< TIMER2 capture/compare channel 1 consumer. */
880 prsConsumerTIMER2_CC2 = offsetof(PRS_TypeDef, CONSUMER_TIMER2_CC2), /**< TIMER2 capture/compare channel 2 consumer. */
881 prsConsumerTIMER3_CC0 = offsetof(PRS_TypeDef, CONSUMER_TIMER3_CC0), /**< TIMER3 capture/compare channel 0 consumer. */
882 prsConsumerTIMER3_CC1 = offsetof(PRS_TypeDef, CONSUMER_TIMER3_CC1), /**< TIMER3 capture/compare channel 1 consumer. */
883 prsConsumerTIMER3_CC2 = offsetof(PRS_TypeDef, CONSUMER_TIMER3_CC2), /**< TIMER3 capture/compare channel 2 consumer. */
884 #if defined(TIMER4)
885 prsConsumerTIMER4_CC0 = offsetof(PRS_TypeDef, CONSUMER_TIMER4_CC0), /**< TIMER4 capture/compare channel 0 consumer. */
886 prsConsumerTIMER4_CC1 = offsetof(PRS_TypeDef, CONSUMER_TIMER4_CC1), /**< TIMER4 capture/compare channel 1 consumer. */
887 prsConsumerTIMER4_CC2 = offsetof(PRS_TypeDef, CONSUMER_TIMER4_CC2), /**< TIMER4 capture/compare channel 2 consumer. */
888 #endif
889 #if defined(TIMER5)
890 prsConsumerTIMER5_CC0 = offsetof(PRS_TypeDef, CONSUMER_TIMER5_CC0), /**< TIMER5 capture/compare channel 0 consumer. */
891 prsConsumerTIMER5_CC1 = offsetof(PRS_TypeDef, CONSUMER_TIMER5_CC1), /**< TIMER5 capture/compare channel 1 consumer. */
892 prsConsumerTIMER5_CC2 = offsetof(PRS_TypeDef, CONSUMER_TIMER5_CC2), /**< TIMER5 capture/compare channel 2 consumer. */
893 #endif
894 #if defined(TIMER6)
895 prsConsumerTIMER6_CC0 = offsetof(PRS_TypeDef, CONSUMER_TIMER6_CC0), /**< TIMER6 capture/compare channel 0 consumer. */
896 prsConsumerTIMER6_CC1 = offsetof(PRS_TypeDef, CONSUMER_TIMER6_CC1), /**< TIMER6 capture/compare channel 1 consumer. */
897 prsConsumerTIMER6_CC2 = offsetof(PRS_TypeDef, CONSUMER_TIMER6_CC2), /**< TIMER6 capture/compare channel 2 consumer. */
898 #endif
899 #if defined(TIMER7)
900 prsConsumerTIMER7_CC0 = offsetof(PRS_TypeDef, CONSUMER_TIMER7_CC0), /**< TIMER7 capture/compare channel 0 consumer. */
901 prsConsumerTIMER7_CC1 = offsetof(PRS_TypeDef, CONSUMER_TIMER7_CC1), /**< TIMER7 capture/compare channel 1 consumer. */
902 prsConsumerTIMER7_CC2 = offsetof(PRS_TypeDef, CONSUMER_TIMER7_CC2), /**< TIMER7 capture/compare channel 2 consumer. */
903 #endif
904 #if defined(USART0)
905 prsConsumerUSART0_CLK = offsetof(PRS_TypeDef, CONSUMER_USART0_CLK), /**< USART0 clock consumer. */
906 prsConsumerUSART0_IR = offsetof(PRS_TypeDef, CONSUMER_USART0_IR), /**< USART0 IR consumer. */
907 prsConsumerUSART0_RX = offsetof(PRS_TypeDef, CONSUMER_USART0_RX), /**< USART0 RX consumer. */
908 prsConsumerUSART0_TRIGGER = offsetof(PRS_TypeDef, CONSUMER_USART0_TRIGGER), /**< USART0 trigger consumer. */
909 #endif
910 #if defined(USART1)
911 prsConsumerUSART1_CLK = offsetof(PRS_TypeDef, CONSUMER_USART1_CLK), /**< USART1 clock consumer. */
912 prsConsumerUSART1_IR = offsetof(PRS_TypeDef, CONSUMER_USART1_IR), /**< USART1 IR consumer. */
913 prsConsumerUSART1_RX = offsetof(PRS_TypeDef, CONSUMER_USART1_RX), /**< USART1 TX consumer. */
914 prsConsumerUSART1_TRIGGER = offsetof(PRS_TypeDef, CONSUMER_USART1_TRIGGER), /**< USART1 trigger consumer. */
915 #endif
916 #if defined(USART2)
917 prsConsumerUSART2_CLK = offsetof(PRS_TypeDef, CONSUMER_USART2_CLK), /**< USART2 clock consumer. */
918 prsConsumerUSART2_IR = offsetof(PRS_TypeDef, CONSUMER_USART2_IR), /**< USART2 IR consumer. */
919 prsConsumerUSART2_RX = offsetof(PRS_TypeDef, CONSUMER_USART2_RX), /**< USART2 RX consumer. */
920 prsConsumerUSART2_TRIGGER = offsetof(PRS_TypeDef, CONSUMER_USART2_TRIGGER), /**< USART2 trigger consumer. */
921 #endif
922 #if defined(EUSART0)
923 prsConsumerEUSART0_CLK = offsetof(PRS_TypeDef, CONSUMER_EUSART0_CLK), /**< EUSART0 clk consumer. */
924 prsConsumerEUSART0_RX = offsetof(PRS_TypeDef, CONSUMER_EUSART0_RX), /**< EUSART0 RX consumer. */
925 prsConsumerEUSART0_TRIGGER = offsetof(PRS_TypeDef, CONSUMER_EUSART0_TRIGGER), /**< EUSART0 trigger consumer. */
926 #endif
927 #if defined(EUSART1)
928 prsConsumerEUSART1_CLK = offsetof(PRS_TypeDef, CONSUMER_EUSART1_CLK), /**< EUSART1 clk consumer. */
929 prsConsumerEUSART1_RX = offsetof(PRS_TypeDef, CONSUMER_EUSART1_RX), /**< EUSART1 RX consumer. */
930 prsConsumerEUSART1_TRIGGER = offsetof(PRS_TypeDef, CONSUMER_EUSART1_TRIGGER), /**< EUSART1 trigger consumer. */
931 #endif
932 #if defined(EUSART2)
933 prsConsumerEUSART2_CLK = offsetof(PRS_TypeDef, CONSUMER_EUSART2_CLK), /**< EUSART1 clk consumer. */
934 prsConsumerEUSART2_RX = offsetof(PRS_TypeDef, CONSUMER_EUSART2_RX), /**< EUSART2 RX consumer. */
935 prsConsumerEUSART2_TRIGGER = offsetof(PRS_TypeDef, CONSUMER_EUSART2_TRIGGER), /**< EUSART2 trigger consumer. */
936 #endif
937 #if defined(EUSART3)
938 prsConsumerEUSART3_RX = offsetof(PRS_TypeDef, CONSUMER_EUSART3_RX), /**< EUSART3 RX consumer. */
939 prsConsumerEUSART3_TRIGGER = offsetof(PRS_TypeDef, CONSUMER_EUSART3_TRIGGER), /**< EUSART3 trigger consumer. */
940 #endif
941 #if defined(EUSART4)
942 prsConsumerEUSART4_RX = offsetof(PRS_TypeDef, CONSUMER_EUSART4_RX), /**< EUSART4 RX consumer. */
943 prsConsumerEUSART4_TRIGGER = offsetof(PRS_TypeDef, CONSUMER_EUSART4_TRIGGER), /**< EUSART4 trigger consumer. */
944 #endif
945 #if defined(EUART0)
946 prsConsumerEUART0_RX = offsetof(PRS_TypeDef, CONSUMER_EUART0_RX), /**< EUART0 RX consumer. */
947 prsConsumerEUART0_TRIGGER = offsetof(PRS_TypeDef, CONSUMER_EUART0_TRIGGER), /**< EUART0 TRIGGER Consumer. */
948 #endif
949 prsConsumerWDOG0_SRC0 = offsetof(PRS_TypeDef, CONSUMER_WDOG0_SRC0), /**< WDOG0 source 0 consumer. */
950 prsConsumerWDOG0_SRC1 = offsetof(PRS_TypeDef, CONSUMER_WDOG0_SRC1), /**< WDOG0 source 1 consumer. */
951 #if defined(WDOG1)
952 prsConsumerWDOG1_SRC0 = offsetof(PRS_TypeDef, CONSUMER_WDOG1_SRC0), /**< WDOG1 source 0 consumer. */
953 prsConsumerWDOG1_SRC1 = offsetof(PRS_TypeDef, CONSUMER_WDOG1_SRC1), /**< WDOG1 source 1 consumer. */
954 #endif
955 #if defined(PCNT0)
956 prsConsumerPCNT0_IN0 = offsetof(PRS_TypeDef, CONSUMER_PCNT0_S0IN), /**< PCNT0 input 0 consumer. */
957 prsConsumerPCNT0_IN1 = offsetof(PRS_TypeDef, CONSUMER_PCNT0_S1IN), /**< PCNT0 input 1 consumer. */
958 #endif
959 #if defined(_PRS_CONSUMER_RTCC_CC2_MASK)
960 prsConsumerRTCC_CC0 = offsetof(PRS_TypeDef, CONSUMER_RTCC_CC0), /**< RTCC capture/compare channel 0 consumer. */
961 prsConsumerRTCC_CC1 = offsetof(PRS_TypeDef, CONSUMER_RTCC_CC1), /**< RTCC capture/compare channel 1 consumer. */
962 prsConsumerRTCC_CC2 = offsetof(PRS_TypeDef, CONSUMER_RTCC_CC2), /**< RTCC capture/compare channel 2 consumer. */
963 #endif
964 #if defined(SYSRTC0)
965 prsConsumerSYSRTC0_SRC0 = offsetof(PRS_TypeDef, CONSUMER_SYSRTC0_IN0), /**< SYSRTC0 input 0 consumer. */
966 prsConsumerSYSRTC0_SRC1 = offsetof(PRS_TypeDef, CONSUMER_SYSRTC0_IN1), /**< SYSRTC0 input 1 consumer. */
967 #endif
968 #if defined(_PRS_CONSUMER_HFXO0_OSCREQ_MASK)
969 prsConsumerHFXO0_OSCREQ = offsetof(PRS_TypeDef, CONSUMER_HFXO0_OSCREQ), /**< OSCREQ consumer. */
970 prsConsumerHFXO0_TIMEOUT = offsetof(PRS_TypeDef, CONSUMER_HFXO0_TIMEOUT), /**< HFXO0_TIMEOUT consumer. */
971 #endif
972 #if defined(LESENSE)
973 prsConsumerLESENSE_START = offsetof(PRS_TypeDef, CONSUMER_LESENSE_START), /**< LESENSE_START consumer. */
974 #endif
975 #if defined(VDAC0)
976 prsConsumerVDAC0_ASYNCTRIGCH0 = offsetof(PRS_TypeDef, CONSUMER_VDAC0_ASYNCTRIGCH0), /**< VDAC0 ASYNC TRIGER CH0 consumer. */
977 prsConsumerVDAC0_ASYNCTRIGCH1 = offsetof(PRS_TypeDef, CONSUMER_VDAC0_ASYNCTRIGCH1), /**< VDAC0 ASYNC TRIGER CH1 consumer. */
978 prsConsumerVDAC0_SYNCTRIGCH0 = offsetof(PRS_TypeDef, CONSUMER_VDAC0_SYNCTRIGCH0), /**< VDAC0 SYNC TRIGER CH0 consumer. */
979 prsConsumerVDAC0_SYNCTRIGCH1 = offsetof(PRS_TypeDef, CONSUMER_VDAC0_SYNCTRIGCH1), /**< VDAC0 SYNC TRIGER CH1 consumer. */
980 #endif
981 #if defined(VDAC1)
982 prsConsumerVDAC1_ASYNCTRIGCH0 = offsetof(PRS_TypeDef, CONSUMER_VDAC1_ASYNCTRIGCH0), /**< VDAC1 ASYNC TRIGER CH0 consumer. */
983 prsConsumerVDAC1_ASYNCTRIGCH1 = offsetof(PRS_TypeDef, CONSUMER_VDAC1_ASYNCTRIGCH1), /**< VDAC1 ASYNC TRIGER CH1 consumer. */
984 prsConsumerVDAC1_SYNCTRIGCH0 = offsetof(PRS_TypeDef, CONSUMER_VDAC1_SYNCTRIGCH0), /**< VDAC1 SYNC TRIGER CH0 consumer. */
985 prsConsumerVDAC1_SYNCTRIGCH1 = offsetof(PRS_TypeDef, CONSUMER_VDAC1_SYNCTRIGCH1), /**< VDAC1 SYNC TRIGER CH1 consumer. */
986 #endif
987 } PRS_Consumer_t;
988 #endif
989
990 /*******************************************************************************
991 ***************************** PROTOTYPES **********************************
992 ******************************************************************************/
993
994 /***************************************************************************//**
995 * @brief
996 * Set level control bit for one or more channels.
997 *
998 * @details
999 * The level value for a channel is XORed with both the pulse possibly issued
1000 * by PRS_PulseTrigger() and the PRS input signal selected for the channel(s).
1001 *
1002 * @cond DOXYDOC_S2_DEVICE
1003 * @note
1004 * Note that software level control is only available for asynchronous
1005 * channels on Series 2 devices.
1006 * @endcond
1007 *
1008 * @param[in] level
1009 * Level to use for channels indicated by @p mask. Use logical OR combination
1010 * of PRS_SWLEVEL_CHnLEVEL defines for channels to set high level, otherwise 0.
1011 *
1012 * @param[in] mask
1013 * Mask indicating which channels to set level for. Use logical OR combination
1014 * of PRS_SWLEVEL_CHnLEVEL defines.
1015 ******************************************************************************/
PRS_LevelSet(uint32_t level,uint32_t mask)1016 __STATIC_INLINE void PRS_LevelSet(uint32_t level, uint32_t mask)
1017 {
1018 #if defined(_PRS_SWLEVEL_MASK)
1019 PRS->SWLEVEL = (PRS->SWLEVEL & ~mask) | (level & mask);
1020 #else
1021 PRS->ASYNC_SWLEVEL = (PRS->ASYNC_SWLEVEL & ~mask) | (level & mask);
1022 #endif
1023 }
1024
1025 /***************************************************************************//**
1026 * @brief
1027 * Get level control bit for all channels.
1028 *
1029 * @return
1030 * The current software level configuration.
1031 ******************************************************************************/
PRS_LevelGet(void)1032 __STATIC_INLINE uint32_t PRS_LevelGet(void)
1033 {
1034 #if defined(_PRS_SWLEVEL_MASK)
1035 return PRS->SWLEVEL;
1036 #else
1037 return PRS->ASYNC_SWLEVEL;
1038 #endif
1039 }
1040
1041 #if defined(_PRS_ASYNC_PEEK_MASK) || defined(_PRS_PEEK_MASK)
1042 /***************************************************************************//**
1043 * @brief
1044 * Get the PRS channel values for all channels.
1045 *
1046 * @param[in] type
1047 * PRS channel type. This can be either @ref prsTypeAsync or
1048 * @ref prsTypeSync.
1049 *
1050 * @return
1051 * The current PRS channel output values for all channels as a bitset.
1052 ******************************************************************************/
PRS_Values(PRS_ChType_t type)1053 __STATIC_INLINE uint32_t PRS_Values(PRS_ChType_t type)
1054 {
1055 #if defined(_PRS_ASYNC_PEEK_MASK)
1056 if (type == prsTypeAsync) {
1057 return PRS->ASYNC_PEEK;
1058 } else {
1059 return PRS->SYNC_PEEK;
1060 }
1061 #else
1062 (void) type;
1063 return PRS->PEEK;
1064 #endif
1065 }
1066
1067 /***************************************************************************//**
1068 * @brief
1069 * Get the PRS channel value for a single channel.
1070 *
1071 * @param[in] ch
1072 * PRS channel number.
1073 *
1074 * @param[in] type
1075 * PRS channel type. This can be either @ref prsTypeAsync or
1076 * @ref prsTypeSync.
1077 *
1078 * @return
1079 * The current PRS channel output value. This is either 0 or 1.
1080 ******************************************************************************/
PRS_ChannelValue(unsigned int ch,PRS_ChType_t type)1081 __STATIC_INLINE bool PRS_ChannelValue(unsigned int ch, PRS_ChType_t type)
1082 {
1083 return (0UL != ((PRS_Values(type) >> ch) & 0x1U));
1084 }
1085 #endif
1086
1087 /***************************************************************************//**
1088 * @brief
1089 * Trigger a high pulse (one HFPERCLK) for one or more channels.
1090 *
1091 * @details
1092 * Setting a bit for a channel causes the bit in the register to remain high
1093 * for one HFPERCLK cycle. Pulse is XORed with both the corresponding bit
1094 * in PRS SWLEVEL register and the PRS input signal selected for the
1095 * channel(s).
1096 *
1097 * @param[in] channels
1098 * Logical ORed combination of channels to trigger a pulse for. Use
1099 * PRS_SWPULSE_CHnPULSE defines.
1100 ******************************************************************************/
PRS_PulseTrigger(uint32_t channels)1101 __STATIC_INLINE void PRS_PulseTrigger(uint32_t channels)
1102 {
1103 #if defined(_PRS_SWPULSE_MASK)
1104 PRS->SWPULSE = channels & _PRS_SWPULSE_MASK;
1105 #else
1106 PRS->ASYNC_SWPULSE = channels & _PRS_ASYNC_SWPULSE_MASK;
1107 #endif
1108 }
1109
1110 /***************************************************************************//**
1111 * @brief
1112 * Set the PRS channel level for one asynchronous PRS channel.
1113 *
1114 * @param[in] ch
1115 * PRS channel number.
1116 *
1117 * @param[in] level
1118 * true to set the level high (1) and false to set the level low (0).
1119 ******************************************************************************/
PRS_ChannelLevelSet(unsigned int ch,bool level)1120 __STATIC_INLINE void PRS_ChannelLevelSet(unsigned int ch, bool level)
1121 {
1122 PRS_LevelSet((uint32_t) level << ch, 0x1UL << ch);
1123 }
1124
1125 /***************************************************************************//**
1126 * @brief
1127 * Trigger a pulse on one PRS channel.
1128 *
1129 * @param[in] ch
1130 * PRS channel number.
1131 ******************************************************************************/
PRS_ChannelPulse(unsigned int ch)1132 __STATIC_INLINE void PRS_ChannelPulse(unsigned int ch)
1133 {
1134 PRS_PulseTrigger(0x1UL << ch);
1135 }
1136
1137 void PRS_SourceSignalSet(unsigned int ch,
1138 uint32_t source,
1139 uint32_t signal,
1140 PRS_Edge_TypeDef edge);
1141
1142 #if defined(PRS_ASYNC_SUPPORTED)
1143 void PRS_SourceAsyncSignalSet(unsigned int ch,
1144 uint32_t source,
1145 uint32_t signal);
1146 #endif
1147 #if defined(_PRS_ROUTELOC0_MASK) || (defined(_PRS_ROUTE_MASK) && (_PRS_ROUTE_MASK))
1148 void PRS_GpioOutputLocation(unsigned int ch,
1149 unsigned int location);
1150 #endif
1151
1152 int PRS_GetFreeChannel(PRS_ChType_t type);
1153 void PRS_Reset(void);
1154 void PRS_ConnectSignal(unsigned int ch, PRS_ChType_t type, PRS_Signal_t signal);
1155 #if defined(_SILICON_LABS_32B_SERIES_2)
1156 uint32_t PRS_ConvertToSyncSource(uint32_t asyncSource);
1157 uint32_t PRS_ConvertToSyncSignal(uint32_t asyncSource, uint32_t asyncSignal);
1158 void PRS_ConnectConsumer(unsigned int ch, PRS_ChType_t type, PRS_Consumer_t consumer);
1159 void PRS_PinOutput(unsigned int ch, PRS_ChType_t type, GPIO_Port_TypeDef port, uint8_t pin);
1160 void PRS_Combine(unsigned int chA, unsigned int chB, PRS_Logic_t logic);
1161 #endif
1162
1163 /** @} (end addtogroup prs) */
1164
1165 #ifdef __cplusplus
1166 }
1167 #endif
1168
1169 #endif /* defined(PRS_COUNT) && (PRS_COUNT > 0) */
1170 #endif /* EM_PRS_H */
1171