1 /*
2  * Copyright (C) 2022-2024, Xiaohua Semiconductor Co., Ltd.
3  *
4  * SPDX-License-Identifier: Apache-2.0
5  *
6  * Change Logs:
7  * Date           Author            Notes
8  * 2023-06-09     CDT               first version
9  */
10 
11 #ifndef __PULSE_ENCODER_CONFIG_H__
12 #define __PULSE_ENCODER_CONFIG_H__
13 
14 #include <rtthread.h>
15 
16 #ifdef __cplusplus
17 extern "C" {
18 #endif
19 
20 #if defined(RT_USING_PULSE_ENCODER)
21 
22 #ifdef BSP_USING_PULSE_ENCODER_TMRA_1
23 #ifndef PULSE_ENCODER_TMRA_1_CONFIG
24 #define PULSE_ENCODER_TMRA_1_CONFIG                                             \
25     {                                                                           \
26        .tmr_handler     = CM_TMRA_1,                                            \
27        .u32PeriphClock  = FCG2_PERIPH_TMRA_1,                                   \
28        .hw_count =                                                              \
29        {                                                                        \
30             .u16CountUpCond     = TMRA_CNT_UP_COND_CLKA_HIGH_CLKB_RISING,       \
31             .u16CountDownCond   = TMRA_CNT_DOWN_COND_CLKB_HIGH_CLKA_RISING,     \
32        },                                                                       \
33        .isr =                                                                   \
34        {                                                                        \
35             .enIntSrc_Ovf   = INT_SRC_TMRA_1_OVF,                               \
36             .enIRQn_Ovf     = BSP_PULSE_ENCODER_TMRA_1_OVF_IRQ_NUM,             \
37             .u8Int_Prio_Ovf = BSP_PULSE_ENCODER_TMRA_1_OVF_IRQ_PRIO,            \
38             .enIntSrc_Udf   = INT_SRC_TMRA_1_UDF,                               \
39             .enIRQn_Udf     = BSP_PULSE_ENCODER_TMRA_1_UDF_IRQ_NUM,             \
40             .u8Int_Prio_Udf = BSP_PULSE_ENCODER_TMRA_1_UDF_IRQ_PRIO,            \
41        },                                                                       \
42        .u32PeriodValue      = 1000UL,                                           \
43        .name                = "pulse_a1"                                        \
44     }
45 #endif /* PULSE_ENCODER_TMRA_1_CONFIG */
46 #endif /* BSP_USING_PULSE_ENCODER_TMRA_1 */
47 
48 #ifdef BSP_USING_PULSE_ENCODER_TMRA_2
49 #ifndef PULSE_ENCODER_TMRA_2_CONFIG
50 #define PULSE_ENCODER_TMRA_2_CONFIG                                             \
51     {                                                                           \
52        .tmr_handler     = CM_TMRA_2,                                            \
53        .u32PeriphClock  = FCG2_PERIPH_TMRA_2,                                   \
54        .hw_count =                                                              \
55        {                                                                        \
56             .u16CountUpCond     = TMRA_CNT_UP_COND_CLKA_HIGH_CLKB_RISING,       \
57             .u16CountDownCond   = TMRA_CNT_DOWN_COND_CLKB_HIGH_CLKA_RISING,     \
58        },                                                                       \
59        .isr =                                                                   \
60        {                                                                        \
61             .enIntSrc_Ovf   = INT_SRC_TMRA_2_OVF,                               \
62             .enIRQn_Ovf     = BSP_PULSE_ENCODER_TMRA_2_OVF_IRQ_NUM,             \
63             .u8Int_Prio_Ovf = BSP_PULSE_ENCODER_TMRA_2_OVF_IRQ_PRIO,            \
64             .enIntSrc_Udf   = INT_SRC_TMRA_2_UDF,                               \
65             .enIRQn_Udf     = BSP_PULSE_ENCODER_TMRA_2_UDF_IRQ_NUM,             \
66             .u8Int_Prio_Udf = BSP_PULSE_ENCODER_TMRA_2_UDF_IRQ_PRIO,            \
67        },                                                                       \
68        .u32PeriodValue  = 1000UL,                                               \
69        .name            = "pulse_a2"                                            \
70     }
71 #endif /* PULSE_ENCODER_TMRA_2_CONFIG */
72 #endif /* BSP_USING_PULSE_ENCODER_TMRA_2 */
73 
74 #ifdef BSP_USING_PULSE_ENCODER_TMRA_3
75 #ifndef PULSE_ENCODER_TMRA_3_CONFIG
76 #define PULSE_ENCODER_TMRA_3_CONFIG                                             \
77     {                                                                           \
78        .tmr_handler     = CM_TMRA_3,                                            \
79        .u32PeriphClock  = FCG2_PERIPH_TMRA_3,                                   \
80        .hw_count =                                                              \
81        {                                                                        \
82             .u16CountUpCond     = TMRA_CNT_UP_COND_CLKA_HIGH_CLKB_RISING,       \
83             .u16CountDownCond   = TMRA_CNT_DOWN_COND_CLKB_HIGH_CLKA_RISING,     \
84        },                                                                       \
85        .isr =                                                                   \
86        {                                                                        \
87             .enIntSrc_Ovf   = INT_SRC_TMRA_3_OVF,                               \
88             .enIRQn_Ovf     = BSP_PULSE_ENCODER_TMRA_3_OVF_IRQ_NUM,             \
89             .u8Int_Prio_Ovf = BSP_PULSE_ENCODER_TMRA_3_OVF_IRQ_PRIO,            \
90             .enIntSrc_Udf   = INT_SRC_TMRA_3_UDF,                               \
91             .enIRQn_Udf     = BSP_PULSE_ENCODER_TMRA_3_UDF_IRQ_NUM,             \
92             .u8Int_Prio_Udf = BSP_PULSE_ENCODER_TMRA_3_UDF_IRQ_PRIO,            \
93        },                                                                       \
94        .u32PeriodValue  = 1000UL,                                               \
95        .name            = "pulse_a3"                                            \
96     }
97 #endif /* PULSE_ENCODER_TMRA_3_CONFIG */
98 #endif /* BSP_USING_PULSE_ENCODER_TMRA_3 */
99 
100 #ifdef BSP_USING_PULSE_ENCODER_TMRA_4
101 #ifndef PULSE_ENCODER_TMRA_4_CONFIG
102 #define PULSE_ENCODER_TMRA_4_CONFIG                                             \
103     {                                                                           \
104        .tmr_handler     = CM_TMRA_4,                                            \
105        .u32PeriphClock  = FCG2_PERIPH_TMRA_4,                                   \
106        .hw_count =                                                              \
107        {                                                                        \
108             .u16CountUpCond     = TMRA_CNT_UP_COND_CLKA_HIGH_CLKB_RISING,       \
109             .u16CountDownCond   = TMRA_CNT_DOWN_COND_CLKB_HIGH_CLKA_RISING,     \
110        },                                                                       \
111        .isr =                                                                   \
112        {                                                                        \
113             .enIntSrc_Ovf   = INT_SRC_TMRA_4_OVF,                               \
114             .enIRQn_Ovf     = BSP_PULSE_ENCODER_TMRA_4_OVF_IRQ_NUM,             \
115             .u8Int_Prio_Ovf = BSP_PULSE_ENCODER_TMRA_4_OVF_IRQ_PRIO,            \
116             .enIntSrc_Udf   = INT_SRC_TMRA_4_UDF,                               \
117             .enIRQn_Udf     = BSP_PULSE_ENCODER_TMRA_4_UDF_IRQ_NUM,             \
118             .u8Int_Prio_Udf = BSP_PULSE_ENCODER_TMRA_4_UDF_IRQ_PRIO,            \
119        },                                                                       \
120        .u32PeriodValue  = 1000UL,                                               \
121        .name            = "pulse_a4"                                            \
122     }
123 #endif /* PULSE_ENCODER_TMRA_4_CONFIG */
124 #endif /* BSP_USING_PULSE_ENCODER_TMRA_4 */
125 
126 #ifdef BSP_USING_PULSE_ENCODER_TMRA_5
127 #ifndef PULSE_ENCODER_TMRA_5_CONFIG
128 #define PULSE_ENCODER_TMRA_5_CONFIG                                             \
129     {                                                                           \
130        .tmr_handler     = CM_TMRA_5,                                            \
131        .u32PeriphClock  = FCG2_PERIPH_TMRA_5,                                   \
132        .hw_count =                                                              \
133         {                                                                       \
134             .u16CountUpCond     = TMRA_CNT_UP_COND_CLKA_HIGH_CLKB_RISING,       \
135             .u16CountDownCond   = TMRA_CNT_DOWN_COND_CLKB_HIGH_CLKA_RISING,     \
136        },                                                                       \
137        .isr =                                                                   \
138        {                                                                        \
139             .enIntSrc_Ovf   = INT_SRC_TMRA_5_OVF,                               \
140             .enIRQn_Ovf     = BSP_PULSE_ENCODER_TMRA_5_OVF_IRQ_NUM,             \
141             .u8Int_Prio_Ovf = BSP_PULSE_ENCODER_TMRA_5_OVF_IRQ_PRIO,            \
142             .enIntSrc_Udf   = INT_SRC_TMRA_5_UDF,                               \
143             .enIRQn_Udf     = BSP_PULSE_ENCODER_TMRA_5_UDF_IRQ_NUM,             \
144             .u8Int_Prio_Udf = BSP_PULSE_ENCODER_TMRA_5_UDF_IRQ_PRIO,            \
145        },                                                                       \
146        .u32PeriodValue  = 1000UL,                                               \
147        .name            = "pulse_a5"                                            \
148     }
149 #endif /* PULSE_ENCODER_TMRA_5_CONFIG */
150 #endif /* BSP_USING_PULSE_ENCODER_TMRA_5 */
151 
152 #ifdef BSP_USING_PULSE_ENCODER_TMRA_6
153 #ifndef PULSE_ENCODER_TMRA_6_CONFIG
154 #define PULSE_ENCODER_TMRA_6_CONFIG                                             \
155     {                                                                           \
156        .tmr_handler     = CM_TMRA_6,                                            \
157        .u32PeriphClock  = FCG2_PERIPH_TMRA_6,                                   \
158        .hw_count =                                                              \
159        {                                                                        \
160             .u16CountUpCond     = TMRA_CNT_UP_COND_CLKA_HIGH_CLKB_RISING,       \
161             .u16CountDownCond   = TMRA_CNT_DOWN_COND_CLKB_HIGH_CLKA_RISING,     \
162        },                                                                       \
163        .isr =                                                                   \
164        {                                                                        \
165             .enIntSrc_Ovf   = INT_SRC_TMRA_6_OVF,                               \
166             .enIRQn_Ovf     = BSP_PULSE_ENCODER_TMRA_6_OVF_IRQ_NUM,             \
167             .u8Int_Prio_Ovf = BSP_PULSE_ENCODER_TMRA_6_OVF_IRQ_PRIO,            \
168             .enIntSrc_Udf   = INT_SRC_TMRA_6_UDF,                               \
169             .enIRQn_Udf     = BSP_PULSE_ENCODER_TMRA_6_UDF_IRQ_NUM,             \
170             .u8Int_Prio_Udf = BSP_PULSE_ENCODER_TMRA_6_UDF_IRQ_PRIO,            \
171        },                                                                       \
172        .u32PeriodValue  = 1000UL,                                               \
173        .name            = "pulse_a6"                                            \
174     }
175 #endif /* PULSE_ENCODER_TMRA_6_CONFIG */
176 #endif /* BSP_USING_PULSE_ENCODER_TMRA_6 */
177 
178 #ifdef BSP_USING_PULSE_ENCODER_TMR6_1
179 #ifndef PULSE_ENCODER_TMR6_1_CONFIG
180 #define PULSE_ENCODER_TMR6_1_CONFIG                                             \
181     {                                                                           \
182        .tmr_handler     = CM_TMR6_1,                                            \
183        .u32PeriphClock  = FCG2_PERIPH_TMR6_1,                                   \
184        .hw_count =                                                              \
185        {                                                                        \
186             .u32CountUpCond     = TMR6_CNT_UP_COND_PWMA_HIGH_PWMB_RISING,       \
187             .u32CountDownCond   = TMR6_CNT_DOWN_COND_PWMB_HIGH_PWMA_RISING,     \
188        },                                                                       \
189        .isr =                                                                   \
190        {                                                                        \
191             .enIntSrc_Ovf   = INT_SRC_TMR6_1_OVF,                               \
192             .enIRQn_Ovf     = BSP_PULSE_ENCODER_TMR6_1_OVF_IRQ_NUM,             \
193             .u8Int_Prio_Ovf = BSP_PULSE_ENCODER_TMR6_1_OVF_IRQ_PRIO,            \
194             .enIntSrc_Udf   = INT_SRC_TMR6_1_UDF,                               \
195             .enIRQn_Udf     = BSP_PULSE_ENCODER_TMR6_1_UDF_IRQ_NUM,             \
196             .u8Int_Prio_Udf = BSP_PULSE_ENCODER_TMR6_1_UDF_IRQ_PRIO,            \
197        },                                                                       \
198        .u32PeriodValue  = 1000UL,                                               \
199        .name            = "pulse_61"                                            \
200     }
201 #endif /* PULSE_ENCODER_TMR6_1_CONFIG */
202 #endif /* BSP_USING_PULSE_ENCODER_TMR6_1 */
203 
204 #ifdef BSP_USING_PULSE_ENCODER_TMR6_2
205 #ifndef PULSE_ENCODER_TMR6_2_CONFIG
206 #define PULSE_ENCODER_TMR6_2_CONFIG                                             \
207     {                                                                           \
208        .tmr_handler     = CM_TMR6_2,                                            \
209        .u32PeriphClock  = FCG2_PERIPH_TMR6_2,                                   \
210        .hw_count =                                                              \
211        {                                                                        \
212             .u32CountUpCond     = TMR6_CNT_UP_COND_PWMA_HIGH_PWMB_RISING,       \
213             .u32CountDownCond   = TMR6_CNT_DOWN_COND_PWMB_HIGH_PWMA_RISING,     \
214        },                                                                       \
215        .isr =                                                                   \
216        {                                                                        \
217             .enIntSrc_Ovf   = INT_SRC_TMR6_2_OVF,                               \
218             .enIRQn_Ovf     = BSP_PULSE_ENCODER_TMR6_2_OVF_IRQ_NUM,             \
219             .u8Int_Prio_Ovf = BSP_PULSE_ENCODER_TMR6_2_OVF_IRQ_PRIO,            \
220             .enIntSrc_Udf   = INT_SRC_TMR6_2_UDF,                               \
221             .enIRQn_Udf     = BSP_PULSE_ENCODER_TMR6_2_UDF_IRQ_NUM,             \
222             .u8Int_Prio_Udf = BSP_PULSE_ENCODER_TMR6_2_UDF_IRQ_PRIO,            \
223        },                                                                       \
224        .u32PeriodValue  = 1000UL,                                               \
225        .name            = "pulse_62"                                            \
226     }
227 #endif /* PULSE_ENCODER_TMR6_2_CONFIG */
228 #endif /* BSP_USING_PULSE_ENCODER_TMR6_2 */
229 
230 #ifdef BSP_USING_PULSE_ENCODER_TMR6_3
231 #ifndef PULSE_ENCODER_TMR6_3_CONFIG
232 #define PULSE_ENCODER_TMR6_3_CONFIG                                             \
233     {                                                                           \
234        .tmr_handler     = CM_TMR6_3,                                            \
235        .u32PeriphClock  = FCG2_PERIPH_TMR6_3,                                   \
236        .hw_count =                                                              \
237        {                                                                        \
238             .u32CountUpCond     = TMR6_CNT_UP_COND_PWMA_HIGH_PWMB_RISING,       \
239             .u32CountDownCond   = TMR6_CNT_DOWN_COND_PWMB_HIGH_PWMA_RISING,     \
240        },                                                                       \
241        .isr =                                                                   \
242        {                                                                        \
243             .enIntSrc_Ovf   = INT_SRC_TMR6_3_OVF,                               \
244             .enIRQn_Ovf     = BSP_PULSE_ENCODER_TMR6_3_OVF_IRQ_NUM,             \
245             .u8Int_Prio_Ovf = BSP_PULSE_ENCODER_TMR6_3_OVF_IRQ_PRIO,            \
246             .enIntSrc_Udf   = INT_SRC_TMR6_3_UDF,                               \
247             .enIRQn_Udf     = BSP_PULSE_ENCODER_TMR6_3_UDF_IRQ_NUM,             \
248             .u8Int_Prio_Udf = BSP_PULSE_ENCODER_TMR6_3_UDF_IRQ_PRIO,            \
249        },                                                                       \
250        .u32PeriodValue  = 1000UL,                                               \
251        .name            = "pulse_63"                                            \
252     }
253 #endif /* PULSE_ENCODER_TMR6_3_CONFIG */
254 #endif /* BSP_USING_PULSE_ENCODER_TMR6_3 */
255 
256 #endif /* RT_USING_PULSE_ENCODER */
257 
258 #endif /* __PULSE_ENCODER_CONFIG_H__ */
259