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