| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442 |
- /*
- * Copyright (C) 2017-2024 Alibaba Group Holding Limited
- *
- * SPDX-License-Identifier: Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
- /*
- This is an example board.h for Board Compment, New Board should flow the macro defines.
- */
- #ifndef __BOARD_H__
- #define __BOARD_H__
- #include <soc.h>
- #ifdef __cplusplus
- extern "C" {
- #endif
- // Common Board Features Define
- /*
- The Common BOARD_XXX Macro Defines Boards supported features which may reference by Solutions.
- Common board macro include:
- . BOARD_NAME
- · UART
- · GPIO
- · PWM
- · ADC
- · BUTTON
- · LED
- · WIFI
- · BT
- · AUDIO
- BOARD_XXX Macro descripted below should be defined if the board support.
- */
- /****************************************************************************/
- /*
- This riscv dummy board include:
- · UART x1
- · GPIO x2
- · PWM x2
- · ADC x1
- · BUTTON x2
- · LED x2
- · WIFI x0
- · BT x0
- · AUDIO x1
- */
- #ifndef CONFIG_BOARD_UART
- #define CONFIG_BOARD_UART 1
- #endif
- #ifndef CONFIG_BOARD_GPIO
- #define CONFIG_BOARD_GPIO 0
- #endif
- #ifndef CONFIG_BOARD_PWM
- #define CONFIG_BOARD_PWM 0
- #endif
- #ifndef CONFIG_BOARD_ADC
- #define CONFIG_BOARD_ADC 0
- #endif
- #ifndef CONFIG_BOARD_BUTTON
- #define CONFIG_BOARD_BUTTON 0
- #endif
- #ifndef CONFIG_BOARD_LED
- #define CONFIG_BOARD_LED 0
- #endif
- #ifndef CONFIG_BOARD_WIFI
- #define CONFIG_BOARD_WIFI 0
- #endif
- #ifndef CONFIG_BOARD_BT
- #define CONFIG_BOARD_BT 0
- #endif
- #ifndef CONFIG_BOARD_AUDIO
- #define CONFIG_BOARD_AUDIO 0
- #endif
- #define BOARD_NAME "RISCV_DUMMY"
- /* the board pins, can be used as uart, gpio, pwd... */
- #define BOARD_PIN0 (0)
- #define BOARD_PIN1 (1)
- #define BOARD_PIN2 (2)
- #define BOARD_PIN3 (3)
- #define BOARD_PIN4 (4)
- #define BOARD_PIN5 (5)
- #define BOARD_PIN6 (6)
- #define BOARD_PIN7 (7)
- #define BOARD_PIN8 (8)
- #define BOARD_PIN9 (9)
- #define BOARD_PIN10 (10)
- #define BOARD_PIN11 (11)
- #define BOARD_PIN12 (12)
- //...
- #if defined(CONFIG_BOARD_UART) && CONFIG_BOARD_UART
- // UART
- /*
- The total supported uart numbers on this board, 0 meas No uart support.
- the BOARD_UART<x>_XXX, x in rang of (0, BOARD_UART_NUM - 1)
- */
- #ifndef BOARD_UART_NUM
- #define BOARD_UART_NUM (1)
- #endif
- #if defined(BOARD_UART_NUM) && BOARD_UART_NUM > 0
- /* the board uart0 tx pin */
- #define BOARD_UART0_TX_PIN (BOARD_PIN0)
- /* the borad uart0 rx pin */
- #define BOARD_UART0_RX_PIN (BOARD_PIN1)
- /* The real UART port reference to board logic port 0 */
- #define BOARD_UART0_IDX (0)
- /* The default baudrate for uart0 */
- #define BOARD_UART0_BAUD (115200)
- //#define BOARD_UART1_IDX (1)
- //#define BOARD_UART1_BAUD (115200)
- // ...
- #endif // defined(BOARD_UART_NUM) && BOARD_UART_NUM > 0
- #endif // defined(CONFIG_BOARD_UART) && CONFIG_BOARD_UART
- #if defined(CONFIG_BOARD_GPIO) && CONFIG_BOARD_GPIO
- // GPIO
- /*
- The total supported GPIO Pin numbers on this board, 0 meas No uart support.
- the BOARD_GPIO_PIN<x>, x in rang of (0, BOARD_GPIO_PIN_NUM - 1)
- */
- #ifndef BOARD_GPIO_PIN_NUM
- #define BOARD_GPIO_PIN_NUM (2)
- #endif
- #if defined(BOARD_GPIO_PIN_NUM) && BOARD_GPIO_PIN_NUM > 0
- /* The real gpio reference to board logic gpio pin */
- #define BOARD_GPIO_PIN0 (BOARD_PIN2)
- #define BOARD_GPIO_PIN1 (BOARD_PIN3)
- //#define BOARD_GPIO_PIN2 (x)
- //#define BOARD_GPIO_PIN3 (x)
- #endif // defined(BOARD_GPIO_PIN_NUM) && BOARD_GPIO_PIN_NUM > 0
- #endif // defined(CONFIG_BOARD_GPIO) && CONFIG_BOARD_GPIO
- #if defined(CONFIG_BOARD_PWM) && CONFIG_BOARD_PWM
- // PWM
- /* the board supported pwm channels */
- #ifndef BOARD_PWM_NUM
- #define BOARD_PWM_NUM (2)
- #endif
- #if defined(BOARD_PWM_NUM) && BOARD_PWM_NUM > 0
- /* the board pwm pin */
- #define BOARD_PWM0_PIN (BOARD_PIN4)
- /* The real pwm channel reference to board logic pwm channel */
- #define BOARD_PWM0_CH (0)
- #define BOARD_PWM1_PIN (BOARD_PIN5)
- #define BOARD_PWM1_CH (1)
- #endif // defined(BOARD_PWM_NUM) && BOARD_PWM_NUM > 0
- #endif // defined(CONFIG_BOARD_PWM) && CONFIG_BOARD_PWM
- #if defined(CONFIG_BOARD_ADC) && CONFIG_BOARD_ADC > 0
- // ADC
- /* the board supported adc channels */
- #ifndef BOARD_ADC_NUM
- #define BOARD_ADC_NUM (1)
- #endif
- #if defined(BOARD_ADC_NUM) && BOARD_ADC_NUM > 0
- /* the board adc pin */
- #define BOARD_ADC0_PIN (BOARD_PIN6)
- /* The real adc channel reference to board logic adc channel */
- #define BOARD_ADC0_CH (0)
- #endif // defined(BOARD_ADC_NUM) && BOARD_ADC_NUM > 0
- #endif // defined(CONFIG_BOARD_ADC) && CONFIG_BOARD_ADC > 0
- #if defined(CONFIG_BOARD_BUTTON) && CONFIG_BOARD_BUTTON > 0
- // BUTTON
- #ifndef BOARD_BUTTON_NUM
- /*
- the board supported buttons, include gpio button and adc button,
- BOARD_BUTTON_NUM = BOARD_BUTTON_GPIO_NUM + BOARD_BUTTON_ADC_NUM.
- */
- #define BOARD_BUTTON_NUM (4)
- #endif
- #if defined(BOARD_BUTTON_NUM) && BOARD_BUTTON_NUM > 0
- #define BOARD_BUTTON0_PIN (BOARD_PIN7)
- #define BOARD_BUTTON1_PIN (BOARD_PIN8)
- #define BOARD_BUTTON2_PIN (BOARD_PIN9)
- #define BOARD_BUTTON3_PIN (BOARD_PIN10)
- // GPIO BUTTON
- /* the board supported GPIO Buttons */
- #ifndef BOARD_BUTTON_GPIO_NUM
- #define BOARD_BUTTON_GPIO_NUM (2)
- #endif
- #if defined(BOARD_BUTTON_GPIO_NUM) && BOARD_BUTTON_GPIO_NUM > 0
- /* the board logic button id, in range of (0, BOARD_BUTTON_GPIO_NUM - 1) */
- #define BOARD_BUTTON0 (0)
- /* for gpio button, define the pin numner. if the gpio pin used as gpio button, it shoudn't reference as BOARD_GPIO_PINx
- */
- #define BOARD_BUTTON0_GPIO_PIN (BOARD_BUTTON0_PIN)
- #define BOARD_BUTTON1 (1)
- #define BOARD_BUTTON1_GPIO_PIN (BOARD_BUTTON1_PIN)
- #endif // defined(BOARD_BUTTON_GPIO_NUM) && BOARD_BUTTON_GPIO_NUM > 0
- // ADC BUTTON
- /* the board supported adc Buttons */
- #ifndef BOARD_BUTTON_ADC_NUM
- #define BOARD_BUTTON_ADC_NUM (2)
- #endif
- #if defined(BOARD_BUTTON_ADC_NUM) && BOARD_BUTTON_ADC_NUM > 0
- /* the board logic adc button id, in range of (BOARD_BUTTON_GPIO_NUM, BOARD_BUTTON_NUM - 1), if not suuport GPIO Button,
- * BOARD_BUTTON_GPIO_NUM should be 0 */
- #define BOARD_BUTTON2 (BOARD_BUTTON_GPIO_NUM + 0)
- #define BOARD_BUTTON2_ADC_PIN (BOARD_BUTTON2_PIN)
- /* the adc channel used for button2, if the adc channel used as adc button, it shoudn't reference as BOARD_ADCx_CH*/
- #define BOARD_BUTTON2_ADC_CH (1)
- /* the adc device name */
- #define BOARD_BUTTON2_ADC_NAME "adc1"
- /* adc voltage reference */
- #define BOARD_BUTTON2_ADC_REF (100)
- /* adc voltage range */
- #define BOARD_BUTTON2_ADC_RANG (500)
- #define BOARD_BUTTON3 (BOARD_BUTTON_GPIO_NUM + 1)
- #define BOARD_BUTTON3_ADC_PIN (BOARD_BUTTON3_PIN)
- #define BOARD_BUTTON3_ADC_CH (1)
- #define BOARD_BUTTON3_ADC_NAME "adc1"
- #define BOARD_BUTTON3_ADC_REF (600)
- #define BOARD_BUTTON3_ADC_RANG (500)
- //#define BOARD_ADC_BUTTON2 (2)
- //#define BOARD_ADC_BUTTON2_CH (1)
- //#define BOARD_ADC_BUTTON2_NAME "adc1"
- //#define BOARD_ADC_BUTTON2_REF xxx
- //#define BOARD_ADC_BUTTON2_RANG xxx
- #endif // defined(BOARD_BUTTON_ADC_NUM) && BOARD_BUTTON_ADC_NUM > 0
- #endif // defined(BOARD_BUTTON_NUM) && BOARD_BUTTON_NUM > 0
- #endif // defined(BOARD_BUTTON_NUM) && BOARD_BUTTON_NUM > 0
- #if defined(CONFIG_BOARD_LED) && CONFIG_BOARD_LED > 0
- // LED
- /* the board supported leds */
- #ifndef BOARD_LED_NUM
- #define BOARD_LED_NUM (2)
- #endif
- #define BOARD_LED0_PIN BOARD_PIN11
- #define BOARD_LED1_PIN BOARD_PIN12
- // PWM LED
- /* the board supported pwm leds */
- #ifndef BOARD_LED_PWM_NUM
- #define BOARD_LED_PWM_NUM (1)
- #endif
- #if defined(BOARD_LED_PWM_NUM) && BOARD_LED_PWM_NUM > 0
- #define BOARD_LED0_PWM_PIN (BOARD_LED0_PIN)
- /* the pwm channel used for led0, if the pwm channel used as led0, it shoudn't reference as BOARD_PWMx_CH */
- #define BOARD_LED0_PWM_CH (0)
- #endif // defined(BOARD_LED_PWM_NUM) && BOARD_LED_PWM_NUM > 0
- // GPIO LED
- #ifndef BOARD_LED_GPIO_NUM
- #define BOARD_LED_GPIO_NUM (1)
- #endif
- #if defined(BOARD_LED_GPIO_NUM) && BOARD_LED_GPIO_NUM > 0
- /* the gpio pin used for led0, if the gpio pin used as led, it shoudn't reference as BOARD_GPIO_PINx */
- #define BOARD_LED1_GPIO_PIN (BOARD_LED1_PIN)
- #endif // defined(BOARD_LED_GPIO_NUM) && BOARD_LED_GPIO_NUM > 0
- #endif // defined(CONFIG_BOARD_LED) && CONFIG_BOARD_LED > 0
- #if defined(CONFIG_BOARD_BT) && CONFIG_BOARD_BT > 0
- // BT
- /* the board support bluetooth */
- #ifndef BOARD_BT_SUPPORT
- #define BOARD_BT_SUPPORT 1
- #endif
- #endif // defined(CONFIG_BOARD_BT) && CONFIG_BOARD_BT > 0
- #if defined(CONFIG_BOARD_WIFI) && CONFIG_BOARD_WIFI > 0
- // WIFI
- /* the board support wifi */
- #ifndef BOARD_WIFI_SUPPORT
- #define BOARD_WIFI_SUPPORT 1
- #endif
- #endif // defined(CONFIG_BOARD_WIFI) && CONFIG_BOARD_WIFI > 0
- #if defined(CONFIG_BOARD_AUDIO) && CONFIG_BOARD_AUDIO > 0
- // Audio
- /* the board support audio */
- #ifndef BOARD_AUDIO_SUPPORT
- #define BOARD_AUDIO_SUPPORT 1
- #endif
- #endif // defined(CONFIG_BOARD_AUDIO) && CONFIG_BOARD_AUDIO > 0
- /****************************************************************************/
- // Common solutions defines
- // Console config, Almost all solutions and demos use these.
- #ifndef CONSOLE_UART_IDX
- #define CONSOLE_UART_IDX (BOARD_UART0_IDX)
- #endif
- #ifndef CONFIG_CLI_USART_BAUD
- #define CONFIG_CLI_USART_BAUD (BOARD_UART0_BAUD)
- #endif
- #ifndef CONFIG_CONSOLE_UART_BUFSIZE
- #define CONFIG_CONSOLE_UART_BUFSIZE (128)
- #endif
- /****************************************************************************/
- // Commom test demos defines
- // i2c
- #define EXAMPLE_IIC_IDX 0 // 1
- #define EXAMPLE_PIN_IIC_SDA 0 // PC1
- #define EXAMPLE_PIN_IIC_SCL 0 // PC0
- #define EXAMPLE_PIN_IIC_SDA_FUNC 0 // PC1_I2C1_SDA
- #define EXAMPLE_PIN_IIC_SCL_FUNC 0 // PC0_I2C1_SCL
- // adc
- #define EXAMPLE_ADC_CH0 0 // PA8
- #define EXAMPLE_ADC_CH0_FUNC 0 // PA8_ADC_A0
- #define EXAMPLE_ADC_CH12 0 // PA26
- #define EXAMPLE_ADC_CH12_FUNC 0 // PA26_ADC_A12
- /****************************************************************************/
- // Vendor board defines
- /* other board specific defines */
- //#define CUSTOM_BOARD_xxx
- /****************************************************************************/
- /**
- * @brief init the board for default: pin mux, etc.
- * re-implement if need.
- * @return
- */
- void board_init(void);
- /**
- * @brief init the board gpio pin for default: pin mux, etc.
- * re-implement if need.
- * @return
- */
- void board_gpio_pin_init(void);
- /**
- * @brief init the board uart for default: pin mux, etc.
- * re-implement if need.
- * @return
- */
- void board_uart_init(void);
- /**
- * @brief init the board pwm for default: pin mux, etc.
- * re-implement if need.
- * @return
- */
- void board_pwm_init(void);
- /**
- * @brief init the board adc for default: pin mux, etc.
- * re-implement if need.
- * @return
- */
- void board_adc_init(void);
- /**
- * @brief init the board button for default: pin mux, etc.
- * re-implement if need.
- * @return
- */
- void board_button_init(void);
- /**
- * @brief init the board led for default: pin mux, etc.
- * re-implement if need.
- * @return
- */
- void board_led_init(void);
- /**
- * @brief init the board wifi for default: pin mux, etc.
- * re-implement if need.
- * @return
- */
- void board_wifi_init(void);
- /**
- * @brief init the board bt for default: pin mux, etc.
- * re-implement if need.
- * @return
- */
- void board_bt_init(void);
- /**
- * @brief init the board audio for default: pin mux, etc.
- * re-implement if need.
- * @return
- */
- void board_audio_init(void);
- #ifdef __cplusplus
- }
- #endif
- #endif /* __BOARD_H__ */
|