1 /* 2 * Copyright (c) 2006-2022, RT-Thread Development Team 3 * 4 * SPDX-License-Identifier: Apache-2.0 5 * 6 * Change Logs: 7 * Date Author Notes 8 * 2021-08-27 AisinoCip add board.h to this bsp 9 */ 10 11 #ifndef __BOARD_H__ 12 #define __BOARD_H__ 13 14 #include <rtthread.h> 15 #include "ACM32Fxx_HAL.h" 16 17 /*-------------------------- UART CONFIG BEGIN --------------------------*/ 18 19 /** After configuring corresponding UART or UART DMA, you can use it. 20 * 21 * STEP 1, define macro define related to the serial port opening based on the serial port number 22 * such as #define BSP_USING_UATR1 23 * 24 * STEP 2, according to the corresponding pin of serial port, modify the related serial port information 25 * such as #define UART1_TX_PORT GPIOX -> GPIOA 26 * #define UART1_RX_PORT GPIOX -> GPIOA 27 * #define UART1_TX_PIN GPIO_PIN_X -> GPIO_PIN_9 28 * #define UART1_RX_PIN GPIO_PIN_X -> GPIO_PIN_10 29 * 30 * STEP 3, if you want using SERIAL DMA, you must open it in the RT-Thread Settings. 31 * RT-Thread Setting -> Components -> Device Drivers -> Serial Device Drivers -> Enable Serial DMA Mode 32 * 33 * STEP 4, according to serial port number to define serial port tx/rx DMA function in the board.h file 34 * such as #define BSP_UART1_RX_USING_DMA 35 * 36 */ 37 38 #if defined(BSP_USING_UART1) 39 #define UART1_TX_PORT GPIOA 40 #define UART1_RX_PORT GPIOA 41 #define UART1_TX_PIN GPIO_PIN_9 42 #define UART1_RX_PIN GPIO_PIN_10 43 44 #if defined(BSP_UART1_RX_USING_DMA) 45 #define UART1_RX_DMA_INSTANCE DMA_Channel0 46 #define UART1_RX_DMA_RCC BIT12 47 #define UART1_RX_DMA_IRQ DMA_IRQn 48 #define UART1_RX_DMA_CHANNEL 0 49 #define UART1_RX_DMA_REQUEST REQ6_UART1_RECV 50 #endif /* BSP_UART1_RX_USING_DMA */ 51 52 #if defined(BSP_UART1_TX_USING_DMA) 53 #define UART1_TX_DMA_INSTANCE DMA_Channel1 54 #define UART1_TX_DMA_RCC BIT12 55 #define UART1_TX_DMA_IRQ DMA_IRQn 56 #define UART1_TX_DMA_CHANNEL 1 57 #define UART1_TX_DMA_REQUEST REQ5_UART1_SEND 58 #endif /* BSP_UART1_TX_USING_DMA */ 59 60 #endif /* BSP_USING_UART1 */ 61 62 #if defined(BSP_USING_UART2) 63 #define UART2_TX_PORT GPIOA 64 #define UART2_RX_PORT GPIOA 65 #define UART2_TX_PIN GPIO_PIN_2 66 #define UART2_RX_PIN GPIO_PIN_3 67 68 #if defined(BSP_UART2_RX_USING_DMA) 69 #define UART2_RX_DMA_INSTANCE DMA_Channel0 70 #define UART2_RX_DMA_RCC BIT12 71 #define UART2_RX_DMA_IRQ DMA_IRQn 72 #define UART2_RX_DMA_CHANNEL 0 73 #define UART2_RX_DMA_REQUEST REQ8_UART2_RECV 74 #endif /* BSP_UART2_RX_USING_DMA */ 75 76 #if defined(BSP_UART2_TX_USING_DMA) 77 #define UART2_TX_DMA_INSTANCE DMA_Channel1 78 #define UART2_TX_DMA_RCC BIT12 79 #define UART2_TX_DMA_IRQ DMA_IRQn 80 #define UART2_TX_DMA_CHANNEL 1 81 #define UART2_TX_DMA_REQUEST REQ7_UART2_SEND 82 #endif /* BSP_UART2_TX_USING_DMA */ 83 #endif /* BSP_USING_UART2 */ 84 85 #if defined(BSP_USING_UART3) 86 #define UART3_TX_PORT GPIOB 87 #define UART3_RX_PORT GPIOB 88 #define UART3_TX_PIN GPIO_PIN_10 89 #define UART3_RX_PIN GPIO_PIN_11 90 91 #if defined(BSP_UART3_RX_USING_DMA) 92 #define UART3_RX_DMA_INSTANCE DMA_Channel0 93 #define UART3_RX_DMA_RCC BIT12 94 #define UART3_RX_DMA_IRQ DMA_IRQn 95 #define UART3_RX_DMA_CHANNEL 2 96 #define UART3_RX_DMA_REQUEST REQ29_UART3_RECV 97 #endif /* BSP_UART3_RX_USING_DMA */ 98 99 #if defined(BSP_UART3_TX_USING_DMA) 100 #define UART3_TX_DMA_INSTANCE DMA_Channel1 101 #define UART3_TX_DMA_RCC BIT12 102 #define UART3_TX_DMA_IRQ DMA_IRQn 103 #define UART3_TX_DMA_CHANNEL 3 104 #define UART3_TX_DMA_REQUEST REQ27_UART3_SEND 105 #endif /* BSP_UART3_TX_USING_DMA */ 106 #endif /* BSP_USING_UART3 */ 107 /*-------------------------- UART CONFIG END --------------------------*/ 108 109 /*-------------------------- SPI CONFIG BEGIN --------------------------*/ 110 #if defined(BSP_USING_SPI1) 111 #define SPI1_CS_PORT GPIOA 112 #define SPI1_CS_PIN GPIO_PIN_2 113 #define SPI1_CS_ALTERNATE GPIO_FUNCTION_3 114 #define SPI1_SCK_PORT GPIOA 115 #define SPI1_SCK_PIN GPIO_PIN_1 116 #define SPI1_SCK_ALTERNATE GPIO_FUNCTION_1 117 #define SPI1_MISO_PORT GPIOB 118 #define SPI1_MISO_PIN GPIO_PIN_0 119 #define SPI1_MISO_ALTERNATE GPIO_FUNCTION_5 120 #define SPI1_MOSI_PORT GPIOB 121 #define SPI1_MOSI_PIN GPIO_PIN_1 122 #define SPI1_MOSI_ALTERNATE GPIO_FUNCTION_5 123 #define SPI1_WP_PORT GPIOA 124 #define SPI1_WP_PIN GPIO_PIN_7 125 #define SPI1_WP_ALTERNATE GPIO_FUNCTION_4 126 #define SPI1_HOLD_PORT GPIOA 127 #define SPI1_HOLD_PIN GPIO_PIN_6 128 #define SPI1_HOLD_ALTERNATE GPIO_FUNCTION_4 129 130 #if defined(BSP_SPI1_RX_USING_DMA) 131 #define SPI1_RX_DMA_INSTANCE DMA_Channel0 132 #define SPI1_RX_DMA_RCC BIT12 133 #define SPI1_RX_DMA_IRQ DMA_IRQn 134 #define SPI1_RX_DMA_CHANNEL 0 135 #define SPI1_RX_DMA_REQUEST REQ2_SPI1_RECV 136 #endif /* BSP_SPI1_RX_USING_DMA */ 137 138 #if defined(BSP_SPI1_TX_USING_DMA) 139 #define SPI1_TX_DMA_INSTANCE DMA_Channel1 140 #define SPI1_TX_DMA_RCC BIT12 141 #define SPI1_TX_DMA_IRQ DMA_IRQn 142 #define SPI1_TX_DMA_CHANNEL 1 143 #define SPI1_TX_DMA_REQUEST REQ1_SPI1_SEND 144 #endif /* BSP_SPI1_TX_USING_DMA */ 145 #endif /* BSP_USING_SPI1 */ 146 147 #if defined(BSP_USING_SPI2) 148 #define SPI2_CS_PORT GPIOB 149 #define SPI2_CS_PIN GPIO_PIN_12 150 #define SPI2_CS_ALTERNATE GPIO_FUNCTION_4 151 #define SPI2_SCK_PORT GPIOB 152 #define SPI2_SCK_PIN GPIO_PIN_13 153 #define SPI2_SCK_ALTERNATE GPIO_FUNCTION_4 154 #define SPI2_MISO_PORT GPIOB 155 #define SPI2_MISO_PIN GPIO_PIN_14 156 #define SPI2_MISO_ALTERNATE GPIO_FUNCTION_4 157 #define SPI2_MOSI_PORT GPIOB 158 #define SPI2_MOSI_PIN GPIO_PIN_15 159 #define SPI2_MOSI_ALTERNATE GPIO_FUNCTION_4 160 #define SPI2_WP_PORT GPIOC 161 #define SPI2_WP_PIN GPIO_PIN_7 162 #define SPI2_WP_ALTERNATE GPIO_FUNCTION_2 163 #define SPI2_HOLD_PORT GPIOC 164 #define SPI2_HOLD_PIN GPIO_PIN_6 165 #define SPI2_HOLD_ALTERNATE GPIO_FUNCTION_2 166 167 #if defined(BSP_SPI2_RX_USING_DMA) 168 #define SPI2_RX_DMA_INSTANCE DMA_Channel2 169 #define SPI2_RX_DMA_RCC BIT12 170 #define SPI2_RX_DMA_IRQ DMA_IRQn 171 #define SPI2_RX_DMA_CHANNEL 2 172 #define SPI2_RX_DMA_REQUEST REQ4_SPI2_RECV 173 #endif /* BSP_SPI2_RX_USING_DMA */ 174 175 #if defined(BSP_SPI2_TX_USING_DMA) 176 #define SPI2_TX_DMA_INSTANCE DMA_Channel3 177 #define SPI2_TX_DMA_RCC BIT12 178 #define SPI2_TX_DMA_IRQ DMA_IRQn 179 #define SPI2_TX_DMA_CHANNEL 3 180 #define SPI2_TX_DMA_REQUEST REQ3_SPI2_SEND 181 #endif /* BSP_SPI2_TX_USING_DMA */ 182 #endif /* BSP_USING_SPI2 */ 183 /*-------------------------- SPI CONFIG END --------------------------*/ 184 185 /*-------------------------- I2C CONFIG BEGIN --------------------------*/ 186 #if defined(BSP_USING_I2C1) 187 #define I2C1_SCL_PORT GPIOB 188 #define I2C1_SCL_PIN GPIO_PIN_6 189 #define I2C1_SCL_ALTERNATE GPIO_FUNCTION_6 190 #define I2C1_SDA_PORT GPIOB 191 #define I2C1_SDA_PIN GPIO_PIN_7 192 #define I2C1_SDA_ALTERNATE GPIO_FUNCTION_6 193 194 #if defined(BSP_I2C1_RX_USING_DMA) 195 #define I2C1_RX_DMA_INSTANCE DMA_Channel0 196 #define I2C1_RX_DMA_RCC BIT12 197 #define I2C1_RX_DMA_IRQ DMA_IRQn 198 #define I2C1_RX_DMA_CHANNEL 0 199 #define I2C1_RX_DMA_REQUEST REQ10_I2C1_RECV 200 #endif /* BSP_I2C1_RX_USING_DMA */ 201 202 #if defined(BSP_I2C1_TX_USING_DMA) 203 #define I2C1_TX_DMA_INSTANCE DMA_Channel1 204 #define I2C1_TX_DMA_RCC BIT12 205 #define I2C1_TX_DMA_IRQ DMA_IRQn 206 #define I2C1_TX_DMA_CHANNEL 1 207 #define I2C1_TX_DMA_REQUEST REQ9_I2C1_SEND 208 #endif /* BSP_I2C1_TX_USING_DMA */ 209 #endif /* BSP_USING_I2C1 */ 210 211 #if defined(BSP_USING_I2C2) 212 #define I2C2_SCL_PORT GPIOB 213 #define I2C2_SCL_PIN GPIO_PIN_10 214 #define I2C2_SCL_ALTERNATE GPIO_FUNCTION_6 215 #define I2C2_SDA_PORT GPIOB 216 #define I2C2_SDA_PIN GPIO_PIN_11 217 #define I2C2_SDA_ALTERNATE GPIO_FUNCTION_6 218 219 #if defined(BSP_I2C2_RX_USING_DMA) 220 #define I2C2_RX_DMA_INSTANCE DMA_Channel0 221 #define I2C2_RX_DMA_RCC BIT12 222 #define I2C2_RX_DMA_IRQ DMA_IRQn 223 #define I2C2_RX_DMA_CHANNEL 0 224 #define I2C2_RX_DMA_REQUEST REQ10_I2C1_RECV 225 #endif /* BSP_I2C2_RX_USING_DMA */ 226 227 #if defined(BSP_I2C2_TX_USING_DMA) 228 #define I2C2_TX_DMA_INSTANCE DMA_Channel1 229 #define I2C2_TX_DMA_RCC BIT12 230 #define I2C2_TX_DMA_IRQ DMA_IRQn 231 #define I2C2_TX_DMA_CHANNEL 1 232 #define I2C2_TX_DMA_REQUEST REQ9_I2C1_SEND 233 #endif /* BSP_I2C2_TX_USING_DMA */ 234 #endif /* BSP_USING_I2C2 */ 235 /*-------------------------- I2C CONFIG END --------------------------*/ 236 237 void rt_hw_board_init(void); 238 #if defined(RT_USING_SPI) 239 rt_err_t rt_hw_spi_device_attach(const char *bus_name, const char *device_name, enum_GPIOx_t cs_gpiox, uint16_t cs_gpio_pin); 240 #endif 241 242 #endif /* __BOARD_H__ */ 243 244