1 /* 2 * Copyright (c) 2006-2024 RT-Thread Development Team 3 * 4 * SPDX-License-Identifier: Apache-2.0 5 * 6 * Change Logs: 7 * Date Author Notes 8 * 2022-07-08 Rbb666 first version 9 * 2025-04-21 Hydevcode adapt xmc7100d 10 */ 11 12 #ifndef __UART_CONFIG_H__ 13 #define __UART_CONFIG_H__ 14 15 #include <rtthread.h> 16 #include "board.h" 17 18 #ifdef __cplusplus 19 extern "C" 20 { 21 #endif 22 23 #if defined(SOC_SERIES_IFX_XMC) 24 #if defined(UART_CPU_IRQ_Number) 25 #if (UART_CPU_IRQ_Number == 0) 26 #define UART_NvicMuxN_IRQn NvicMux0_IRQn 27 #elif(UART_CPU_IRQ_Number == 1) 28 #define UART_NvicMuxN_IRQn NvicMux1_IRQn 29 #elif (UART_CPU_IRQ_Number == 2) 30 #define UART_NvicMuxN_IRQn NvicMux2_IRQn 31 #elif (UART_CPU_IRQ_Number == 3) 32 #define UART_NvicMuxN_IRQn NvicMux3_IRQn 33 #elif (UART_CPU_IRQ_Number == 4) 34 #define UART_NvicMuxN_IRQn NvicMux4_IRQn 35 #elif (UART_CPU_IRQ_Number == 5) 36 #define UART_NvicMuxN_IRQn NvicMux5_IRQn 37 #elif (UART_CPU_IRQ_Number == 6) 38 #define UART_NvicMuxN_IRQn NvicMux6_IRQn 39 #elif (UART_CPU_IRQ_Number == 7) 40 #define UART_NvicMuxN_IRQn NvicMux7_IRQn 41 #endif 42 #endif 43 #endif 44 45 #ifdef BSP_USING_UART0 46 /* UART0 device driver structure */ 47 cy_stc_sysint_t UART0_SCB_IRQ_cfg = 48 { 49 #if defined(SOC_SERIES_IFX_XMC) 50 .intrSrc = ((UART_NvicMuxN_IRQn << 16) | (cy_en_intr_t)scb_0_interrupt_IRQn), 51 #else 52 .intrSrc = (IRQn_Type)scb_0_interrupt_IRQn, 53 #endif 54 .intrPriority = (7u), 55 }; 56 #endif 57 #ifdef BSP_USING_UART1 58 /* UART1 device driver structure */ 59 cy_stc_sysint_t UART1_SCB_IRQ_cfg = 60 { 61 #if defined(SOC_SERIES_IFX_XMC) 62 .intrSrc = ((UART_NvicMuxN_IRQn << 16) | (cy_en_intr_t)scb_1_interrupt_IRQn), 63 #else 64 .intrSrc = (IRQn_Type)scb_1_interrupt_IRQn, 65 #endif 66 .intrPriority = (7u), 67 }; 68 #endif 69 #ifdef BSP_USING_UART2 70 /* UART2 device driver structure */ 71 cy_stc_sysint_t UART2_SCB_IRQ_cfg = 72 { 73 #if defined(SOC_SERIES_IFX_XMC) 74 .intrSrc = ((UART_NvicMuxN_IRQn << 16) | (cy_en_intr_t)scb_2_interrupt_IRQn), 75 #else 76 .intrSrc = (IRQn_Type)scb_2_interrupt_IRQn, 77 #endif 78 .intrPriority = (7u), 79 }; 80 #endif 81 #ifdef BSP_USING_UART3 82 /* UART3 device driver structure */ 83 cy_stc_sysint_t UART3_SCB_IRQ_cfg = 84 { 85 #if defined(SOC_SERIES_IFX_XMC) 86 .intrSrc = ((UART_NvicMuxN_IRQn << 16) | (cy_en_intr_t)scb_3_interrupt_IRQn), 87 #else 88 .intrSrc = (IRQn_Type)scb_3_interrupt_IRQn, 89 #endif 90 .intrPriority = (7u), 91 }; 92 #endif 93 #ifdef BSP_USING_UART4 94 /* UART4 device driver structure */ 95 cy_stc_sysint_t UART4_SCB_IRQ_cfg = 96 { 97 #if defined(SOC_SERIES_IFX_XMC) 98 .intrSrc = ((UART_NvicMuxN_IRQn << 16) |(cy_en_intr_t)scb_4_interrupt_IRQn), 99 #else 100 .intrSrc = (IRQn_Type)scb_4_interrupt_IRQn, 101 #endif 102 .intrPriority = (7u), 103 }; 104 #endif 105 #ifdef BSP_USING_UART5 106 /* UART5 device driver structure */ 107 cy_stc_sysint_t UART5_SCB_IRQ_cfg = 108 { 109 #if defined(SOC_SERIES_IFX_XMC) 110 .intrSrc = ((UART_NvicMuxN_IRQn << 16) |(cy_en_intr_t)scb_5_interrupt_IRQn), 111 #else 112 .intrSrc = (IRQn_Type)scb_5_interrupt_IRQn, 113 #endif 114 .intrPriority = (7u), 115 }; 116 #endif 117 #ifdef BSP_USING_UART6 118 /* UART6 device driver structure */ 119 cy_stc_sysint_t UART6_SCB_IRQ_cfg = 120 { 121 #if defined(SOC_SERIES_IFX_XMC) 122 .intrSrc = ((UART_NvicMuxN_IRQn << 16) |(cy_en_intr_t)scb_6_interrupt_IRQn), 123 #else 124 .intrSrc = (IRQn_Type)scb_6_interrupt_IRQn, 125 #endif 126 .intrPriority = (7u), 127 }; 128 #endif 129 130 #if defined(BSP_USING_UART0) 131 #ifndef UART0_CONFIG 132 #define UART0_CONFIG \ 133 { \ 134 .name = "uart0", \ 135 .tx_pin = P0_3, \ 136 .rx_pin = P0_2, \ 137 .usart_x = SCB0, \ 138 .userIsr = uart_isr_callback(uart0), \ 139 .UART_SCB_IRQ_cfg = &UART0_SCB_IRQ_cfg, \ 140 } 141 void uart0_isr_callback(void); 142 #endif /* UART0_CONFIG */ 143 #endif /* BSP_USING_UART0 */ 144 145 #if defined(BSP_USING_UART1) 146 #ifndef UART1_CONFIG 147 #define UART1_CONFIG \ 148 { \ 149 .name = "uart1", \ 150 .tx_pin = P10_1, \ 151 .rx_pin = P10_0, \ 152 .usart_x = SCB1, \ 153 .userIsr = uart_isr_callback(uart1), \ 154 .UART_SCB_IRQ_cfg = &UART1_SCB_IRQ_cfg, \ 155 } 156 void uart1_isr_callback(void); 157 #endif /* UART1_CONFIG */ 158 #endif /* BSP_USING_UART1 */ 159 160 #if defined(BSP_USING_UART2) 161 #ifndef UART2_CONFIG 162 #if defined(SOC_XMC7100D_F144K4160AA) 163 #define UART2_CONFIG \ 164 { \ 165 .name = "uart2", \ 166 .tx_pin = P19_1, \ 167 .rx_pin = P19_0, \ 168 .usart_x = SCB2, \ 169 .userIsr = uart_isr_callback(uart2), \ 170 .UART_SCB_IRQ_cfg = &UART2_SCB_IRQ_cfg, \ 171 } 172 #else 173 #define UART2_CONFIG \ 174 { \ 175 .name = "uart2", \ 176 .tx_pin = P9_1, \ 177 .rx_pin = P9_0, \ 178 .usart_x = SCB2, \ 179 .userIsr = uart_isr_callback(uart2), \ 180 .UART_SCB_IRQ_cfg = &UART2_SCB_IRQ_cfg, \ 181 } 182 #endif /* SOC_CY8C6244LQI_S4D92 */ 183 void uart2_isr_callback(void); 184 #endif /* UART2_CONFIG */ 185 #endif /* BSP_USING_UART2 */ 186 187 #if defined(BSP_USING_UART3) 188 #ifndef UART3_CONFIG 189 #if defined(SOC_XMC7200D_E272K8384AA) 190 #define UART3_CONFIG \ 191 { \ 192 .name = "uart3", \ 193 .tx_pin = P13_1, \ 194 .rx_pin = P13_0, \ 195 .usart_x = SCB3, \ 196 .userIsr = uart_isr_callback(uart3), \ 197 .UART_SCB_IRQ_cfg = &UART3_SCB_IRQ_cfg, \ 198 } 199 #else 200 #define UART3_CONFIG \ 201 { \ 202 .name = "uart3", \ 203 .tx_pin = P6_1, \ 204 .rx_pin = P6_0, \ 205 .usart_x = SCB3, \ 206 .userIsr = uart_isr_callback(uart3), \ 207 .UART_SCB_IRQ_cfg = &UART3_SCB_IRQ_cfg, \ 208 } 209 #endif 210 void uart3_isr_callback(void); 211 #endif /* UART3_CONFIG */ 212 #endif /* BSP_USING_UART3 */ 213 214 #if defined(BSP_USING_UART4) 215 #ifndef UART4_CONFIG 216 #if defined(SOC_XMC7100D_F144K4160AA) 217 #define UART4_CONFIG \ 218 { \ 219 .name = "uart4", \ 220 .tx_pin = P10_1, \ 221 .rx_pin = P10_0, \ 222 .usart_x = SCB4, \ 223 .userIsr = uart_isr_callback(uart4), \ 224 .UART_SCB_IRQ_cfg = &UART4_SCB_IRQ_cfg, \ 225 } 226 #else 227 #define UART4_CONFIG \ 228 { \ 229 .name = "uart4", \ 230 .tx_pin = P7_1, \ 231 .rx_pin = P7_0, \ 232 .usart_x = SCB4, \ 233 .userIsr = uart_isr_callback(uart4), \ 234 .UART_SCB_IRQ_cfg = &UART4_SCB_IRQ_cfg, \ 235 } 236 #endif 237 void uart4_isr_callback(void); 238 #endif /* UART4_CONFIG */ 239 #endif /* BSP_USING_UART4 */ 240 241 #if defined(BSP_USING_UART5) 242 #ifndef UART5_CONFIG 243 #define UART5_CONFIG \ 244 { \ 245 .name = "uart5", \ 246 .tx_pin = P5_1, \ 247 .rx_pin = P5_0, \ 248 .usart_x = SCB5, \ 249 .userIsr = uart_isr_callback(uart5), \ 250 .UART_SCB_IRQ_cfg = &UART5_SCB_IRQ_cfg, \ 251 } 252 void uart5_isr_callback(void); 253 #endif /* UART5_CONFIG */ 254 #endif /* BSP_USING_UART5 */ 255 256 #if defined(BSP_USING_UART6) 257 #ifndef UART6_CONFIG 258 #define UART6_CONFIG \ 259 { \ 260 .name = "uart6", \ 261 .tx_pin = P6_5, \ 262 .rx_pin = P6_4, \ 263 .usart_x = SCB6, \ 264 .userIsr = uart_isr_callback(uart6), \ 265 .UART_SCB_IRQ_cfg = &UART6_SCB_IRQ_cfg, \ 266 } 267 void uart6_isr_callback(void); 268 #endif /* UART6_CONFIG */ 269 #endif /* BSP_USING_UART6 */ 270 #ifdef __cplusplus 271 } 272 #endif 273 274 #endif 275