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