* Author: @CompanyNameTag
* Create: 2020-02-19
*/
-#ifndef BOARD_LEINIAO_CONFIG_H
-#define BOARD_LEINIAO_CONFIG_H
-
-#include "pinctrl_porting.h"
-#include "gpio_porting.h"
-#include "platform_types.h"
-
-/**
- * @addtogroup connectivity_config_boards
- * @{
- */
-/**
- * @brief Global evb pio functions.
- */
-const hal_pio_config_t g_pio_function_config[PIN_MAX_NUMBER] = {
- { HAL_PIO_FUNC_QSPI0, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_EGPIO0
- { HAL_PIO_FUNC_QSPI0, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_ENBALE }, // S_EGPIO1
- { HAL_PIO_FUNC_QSPI0, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_EGPIO2
- { HAL_PIO_FUNC_QSPI0, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_EGPIO3
- { HAL_PIO_FUNC_QSPI0, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_EGPIO4 clk
- { HAL_PIO_FUNC_QSPI0, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_EGPIO5 cs
- { HAL_PIO_FUNC_OPI, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_EGPIO6
- { HAL_PIO_FUNC_OPI, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_ENBALE }, // S_EGPIO7
- { HAL_PIO_FUNC_OPI, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_ENBALE }, // S_EGPIO8
- { HAL_PIO_FUNC_OPI, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_ENBALE }, // S_EGPIO9
- { HAL_PIO_FUNC_OPI, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_ENBALE }, // S_EGPIO10
- { HAL_PIO_FUNC_OPI, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_ENBALE }, // S_EGPIO11
- { HAL_PIO_FUNC_OPI, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_ENBALE }, // S_EGPIO12
- { HAL_PIO_FUNC_OPI, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_ENBALE }, // S_EGPIO13
- { HAL_PIO_FUNC_OPI, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_ENBALE }, // S_EGPIO14
- { HAL_PIO_FUNC_OPI, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_ENBALE }, // S_EGPIO15
- { HAL_PIO_FUNC_OPI, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_ENBALE }, // S_EGPIO16
- { HAL_PIO_FUNC_OPI, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_ENBALE }, // S_EGPIO17
- { HAL_PIO_FUNC_OPI, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_ENBALE }, // S_EGPIO18
- { HAL_PIO_FUNC_OPI, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_ENBALE }, // S_EGPIO19
- { HAL_PIO_FUNC_OPI, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_ENBALE }, // S_EGPIO20
- { HAL_PIO_FUNC_OPI, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_ENBALE }, // S_EGPIO21
- { HAL_PIO_FUNC_OPI, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_EGPIO22 clk
- { HAL_PIO_FUNC_OPI, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_EGPIO23 ce
- { HAL_PIO_FUNC_OPI, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_ENBALE }, // S_EGPIO24
- { HAL_PIO_FUNC_OPI, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_ENBALE }, // S_EGPIO25
-
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_HGPIO0 NC
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_HGPIO1 NC
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_HGPIO2 NC
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_HGPIO3 NC
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_HGPIO4 NC
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_HGPIO5 NC
-#if (defined CFG_DRIVERS_NANDFLASH)
- { HAL_PIO_FUNC_QSPI1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_ENBALE }, // S_HGPIO6
- { HAL_PIO_FUNC_QSPI1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_ENBALE }, // S_HGPIO7
- { HAL_PIO_FUNC_QSPI1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_ENBALE }, // S_HGPIO8
- { HAL_PIO_FUNC_QSPI1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_ENBALE }, // S_HGPIO9
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_DISABLE }, // S_HGPIO10
- { HAL_PIO_FUNC_QSPI1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_DISABLE }, // S_HGPIO11 cs0
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_DISABLE }, // S_HGPIO12 cs1
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_DISABLE }, // S_HGPIO13
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_DISABLE }, // S_HGPIO14
- { HAL_PIO_FUNC_QSPI1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_DISABLE }, // S_HGPIO15 clk
-#else
- { HAL_PIO_FUNC_EMMC, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_ENBALE }, // S_HGPIO6
- { HAL_PIO_FUNC_EMMC, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_ENBALE }, // S_HGPIO7
- { HAL_PIO_FUNC_EMMC, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_ENBALE }, // S_HGPIO8
- { HAL_PIO_FUNC_EMMC, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_ENBALE }, // S_HGPIO9
- { HAL_PIO_FUNC_EMMC, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_ENBALE }, // S_HGPIO10
- { HAL_PIO_FUNC_EMMC, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_ENBALE }, // S_HGPIO11
- { HAL_PIO_FUNC_EMMC, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_ENBALE }, // S_HGPIO12
- { HAL_PIO_FUNC_EMMC, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_ENBALE }, // S_HGPIO13
- { HAL_PIO_FUNC_EMMC, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_ENBALE }, // S_HGPIO14
- { HAL_PIO_FUNC_EMMC, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_HGPIO15 emmc clk
-#endif
- { HAL_PIO_FUNC_SPI0, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_MGPIO0 NC
- { HAL_PIO_FUNC_I2C2_M3, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_ENBALE }, // S_MGPIO1 I2C2 SCL Sensor 6轴 指南针 心率
- { HAL_PIO_FUNC_I2C2_M3, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_ENBALE }, // S_MGPIO2 I2C2 SDA Sensor
- { HAL_PIO_FUNC_SPI0, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_MGPIO3 NC
-
-// #if (defined BRANDY_PRODUCT_EVB4)
- { HAL_PIO_FUNC_SPI0, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_MGPIO4 NC
-// #else
- // { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO4 NC
-// #endif
-
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_MGPIO5 NC
- { HAL_PIO_FUNC_SPI1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_ENBALE }, // S_MGPIO6 SPI1 DI
- { HAL_PIO_FUNC_SPI1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_ENBALE }, // S_MGPIO7 SPI1 DO
- { HAL_PIO_FUNC_SPI1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_ENBALE }, // S_MGPIO8 SPI1 CLK
- { HAL_PIO_FUNC_SPI1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_ENBALE }, // S_MGPIO9 SPI1 CS0
- { HAL_PIO_FUNC_SPI1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_MGPIO10 SPI1 CS1 NC
-
- { HAL_PIO_FUNC_I2C0_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_ENBALE }, // S_MGPIO11 i2c0 SCL NC
- { HAL_PIO_FUNC_I2C0_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_ENBALE }, // S_MGPIO12 I2C0 SDA
- { HAL_PIO_FUNC_I2C1_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO13 I2C1 SCL touch i2c
- { HAL_PIO_FUNC_I2C1_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO14 I2C1 SDA
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_MGPIO15 I2C2 SCL Sensor 6轴 指南针 心率
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_MGPIO16 I2C2 SDA Sensor
- { HAL_PIO_FUNC_I2C3_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO17 i2c3 SCL smart pa\ 预留马达控制 \安全芯片
- { HAL_PIO_FUNC_I2C3_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO18 I2C3 SDA
- { HAL_PIO_FUNC_UART1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_DISABLE }, // S_MGPIO19 uart1 tx
- { HAL_PIO_FUNC_UART1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_ENBALE }, // S_MGPIO20 uart1 rx
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_MGPIO21 uart1 rts
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_ENBALE }, // S_MGPIO22 uart1 cts
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_DISABLE }, // S_MGPIO23 NC
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_MGPIO24 NC
- { HAL_PIO_FUNC_SPI2_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_MGPIO25 NC
- { HAL_PIO_FUNC_SPI2_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_MGPIO26 NC
-#if (defined QSPI_DISPLAY)
- { HAL_PIO_FUNC_QSPI2, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO27
- { HAL_PIO_FUNC_QSPI2, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO28
- { HAL_PIO_FUNC_QSPI2, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO29
- { HAL_PIO_FUNC_QSPI2, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO30
- { HAL_PIO_FUNC_QSPI2, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO31
- { HAL_PIO_FUNC_QSPI2, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO32
-#else
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_MGPIO27
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_MGPIO28
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_MGPIO29
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_MGPIO30
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_MGPIO31
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_MGPIO32
-#endif
- { HAL_PIO_FUNC_UART_HS_UART, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_MGPIO33 huart tx
- { HAL_PIO_FUNC_UART_HS_UART, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_ENBALE }, // S_MGPIO34 huart rx
- { HAL_PIO_FUNC_UART_HS_UART, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO35
- { HAL_PIO_FUNC_UART_HS_UART, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO36
-#if 0
- { HAL_PIO_FUNC_UART2_M2, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_MGPIO37 uart tx
- { HAL_PIO_FUNC_UART2_M2, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_ENBALE }, // S_MGPIO38 uart rx
-#else
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_MGPIO37 uart tx NC
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_MGPIO38 uart rx NC
-#endif
-
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_L0 NC
-
- { HAL_PIO_FUNC_I2S1_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_L1 i2s1
- { HAL_PIO_FUNC_I2S1_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_L2
- { HAL_PIO_FUNC_I2S1_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_L3
- { HAL_PIO_FUNC_I2S1_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_L4
-
- { HAL_PIO_FUNC_I2S0_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_L5
- { HAL_PIO_FUNC_I2S0_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_L6 i2s0
- { HAL_PIO_FUNC_I2S0_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_L7
- { HAL_PIO_FUNC_I2S0_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_L8
-
-#if (defined FT_BT_UART)
- { HAL_PIO_FUNC_UART2_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_L9 uart2 txd
- { HAL_PIO_FUNC_UART2_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_ENBALE }, // S_AGPIO_L10 uart2 rxd
-#else
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_L9 dsp uart TP35
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_L10 dsp uart TP36
-#endif
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_ENBALE }, // S_AGPIO_L11 G_INT1
-
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_ENBALE }, // S_AGPIO_L12 i2c data HX3507_SDIO
+ #ifndef BOARD_LEINIAO_CONFIG_H
+ #define BOARD_LEINIAO_CONFIG_H
+
+ #include "pinctrl_porting.h"
+ #include "gpio_porting.h"
+ #include "platform_types.h"
+
+ /**
+ * @addtogroup connectivity_config_boards
+ * @{
+ */
+ /**
+ * @brief Global evb pio functions.
+ */
+ const hal_pio_config_t g_pio_function_config[PIN_MAX_NUMBER] = {
+ { HAL_PIO_FUNC_QSPI0, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_EGPIO0
+ { HAL_PIO_FUNC_QSPI0, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_ENBALE }, // S_EGPIO1
+ { HAL_PIO_FUNC_QSPI0, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_EGPIO2
+ { HAL_PIO_FUNC_QSPI0, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_EGPIO3
+ { HAL_PIO_FUNC_QSPI0, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_EGPIO4 clk
+ { HAL_PIO_FUNC_QSPI0, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_EGPIO5 cs
+ { HAL_PIO_FUNC_OPI, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_EGPIO6
+ { HAL_PIO_FUNC_OPI, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_ENBALE }, // S_EGPIO7
+ { HAL_PIO_FUNC_OPI, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_ENBALE }, // S_EGPIO8
+ { HAL_PIO_FUNC_OPI, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_ENBALE }, // S_EGPIO9
+ { HAL_PIO_FUNC_OPI, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_ENBALE }, // S_EGPIO10
+ { HAL_PIO_FUNC_OPI, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_ENBALE }, // S_EGPIO11
+ { HAL_PIO_FUNC_OPI, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_ENBALE }, // S_EGPIO12
+ { HAL_PIO_FUNC_OPI, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_ENBALE }, // S_EGPIO13
+ { HAL_PIO_FUNC_OPI, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_ENBALE }, // S_EGPIO14
+ { HAL_PIO_FUNC_OPI, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_ENBALE }, // S_EGPIO15
+ { HAL_PIO_FUNC_OPI, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_ENBALE }, // S_EGPIO16
+ { HAL_PIO_FUNC_OPI, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_ENBALE }, // S_EGPIO17
+ { HAL_PIO_FUNC_OPI, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_ENBALE }, // S_EGPIO18
+ { HAL_PIO_FUNC_OPI, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_ENBALE }, // S_EGPIO19
+ { HAL_PIO_FUNC_OPI, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_ENBALE }, // S_EGPIO20
+ { HAL_PIO_FUNC_OPI, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_ENBALE }, // S_EGPIO21
+ { HAL_PIO_FUNC_OPI, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_EGPIO22 clk
+ { HAL_PIO_FUNC_OPI, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_EGPIO23 ce
+ { HAL_PIO_FUNC_OPI, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_ENBALE }, // S_EGPIO24
+ { HAL_PIO_FUNC_OPI, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_ENBALE }, // S_EGPIO25
+
+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_HGPIO0 NC
+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_HGPIO1 NC
+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_HGPIO2 NC
+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_HGPIO3 NC
+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_HGPIO4 NC
+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_HGPIO5 NC
+ #if (defined CFG_DRIVERS_NANDFLASH)
+ { HAL_PIO_FUNC_QSPI1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_ENBALE }, // S_HGPIO6
+ { HAL_PIO_FUNC_QSPI1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_ENBALE }, // S_HGPIO7
+ { HAL_PIO_FUNC_QSPI1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_ENBALE }, // S_HGPIO8
+ { HAL_PIO_FUNC_QSPI1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_ENBALE }, // S_HGPIO9
+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_DISABLE }, // S_HGPIO10
+ { HAL_PIO_FUNC_QSPI1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_DISABLE }, // S_HGPIO11 cs0
+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_DISABLE }, // S_HGPIO12 cs1
+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_DISABLE }, // S_HGPIO13
+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_DISABLE }, // S_HGPIO14
+ { HAL_PIO_FUNC_QSPI1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_DISABLE }, // S_HGPIO15 clk
+ #else
+ { HAL_PIO_FUNC_EMMC, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_ENBALE }, // S_HGPIO6
+ { HAL_PIO_FUNC_EMMC, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_ENBALE }, // S_HGPIO7
+ { HAL_PIO_FUNC_EMMC, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_ENBALE }, // S_HGPIO8
+ { HAL_PIO_FUNC_EMMC, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_ENBALE }, // S_HGPIO9
+ { HAL_PIO_FUNC_EMMC, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_ENBALE }, // S_HGPIO10
+ { HAL_PIO_FUNC_EMMC, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_ENBALE }, // S_HGPIO11
+ { HAL_PIO_FUNC_EMMC, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_ENBALE }, // S_HGPIO12
+ { HAL_PIO_FUNC_EMMC, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_ENBALE }, // S_HGPIO13
+ { HAL_PIO_FUNC_EMMC, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_ENBALE }, // S_HGPIO14
+ { HAL_PIO_FUNC_EMMC, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_HGPIO15 emmc clk
+ #endif
+ { HAL_PIO_FUNC_SPI0, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_MGPIO0 NC
+ { HAL_PIO_FUNC_I2C2_M3, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_ENBALE }, // S_MGPIO1 I2C2 SCL Sensor 6轴 指南针 心率
+ { HAL_PIO_FUNC_I2C2_M3, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_ENBALE }, // S_MGPIO2 I2C2 SDA Sensor
+ { HAL_PIO_FUNC_SPI0, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_MGPIO3 NC
+
+ // #if (defined BRANDY_PRODUCT_EVB4)
+ { HAL_PIO_FUNC_SPI0, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_MGPIO4 NC
+ // #else
+ // { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO4 NC
+ // #endif
+
+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_MGPIO5 NC
+ { HAL_PIO_FUNC_SPI1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_ENBALE }, // S_MGPIO6 SPI1 DI
+ { HAL_PIO_FUNC_SPI1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_ENBALE }, // S_MGPIO7 SPI1 DO
+ { HAL_PIO_FUNC_SPI1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_ENBALE }, // S_MGPIO8 SPI1 CLK
+ { HAL_PIO_FUNC_SPI1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_ENBALE }, // S_MGPIO9 SPI1 CS0
+ { HAL_PIO_FUNC_SPI1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_MGPIO10 SPI1 CS1 NC
+
+ { HAL_PIO_FUNC_I2C0_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_ENBALE }, // S_MGPIO11 i2c0 SCL NC
+ { HAL_PIO_FUNC_I2C0_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_ENBALE }, // S_MGPIO12 I2C0 SDA
+ { HAL_PIO_FUNC_I2C1_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO13 I2C1 SCL touch i2c
+ { HAL_PIO_FUNC_I2C1_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO14 I2C1 SDA
+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_MGPIO15 I2C2 SCL Sensor 6轴 指南针 心率
+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_MGPIO16 I2C2 SDA Sensor
+ { HAL_PIO_FUNC_I2C3_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO17 i2c3 SCL smart pa\ 预留马达控制 \安全芯片
+ { HAL_PIO_FUNC_I2C3_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO18 I2C3 SDA
+ { HAL_PIO_FUNC_UART1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_DISABLE }, // S_MGPIO19 uart1 tx
+ { HAL_PIO_FUNC_UART1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_ENBALE }, // S_MGPIO20 uart1 rx
+ #ifdef SIO_UART_DISABLE_FLOW_CTRL
+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_MGPIO21 uart1 rts
+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_ENBALE }, // S_MGPIO22 uart1 cts
+ #else
+ { HAL_PIO_FUNC_UART1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_MGPIO21 uart1 rts
+ { HAL_PIO_FUNC_UART1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_ENBALE }, // S_MGPIO22 uart1 cts
+ #endif
+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_DISABLE }, // S_MGPIO23 NC
+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_MGPIO24 NC
+ { HAL_PIO_FUNC_SPI2_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_MGPIO25 NC
+ { HAL_PIO_FUNC_SPI2_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_MGPIO26 NC
+ #if (defined QSPI_DISPLAY)
+ { HAL_PIO_FUNC_QSPI2, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO27
+ { HAL_PIO_FUNC_QSPI2, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO28
+ { HAL_PIO_FUNC_QSPI2, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO29
+ { HAL_PIO_FUNC_QSPI2, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO30
+ { HAL_PIO_FUNC_QSPI2, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO31
+ { HAL_PIO_FUNC_QSPI2, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO32
+ #else
+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_MGPIO27
+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_MGPIO28
+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_MGPIO29
+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_MGPIO30
+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_MGPIO31
+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_MGPIO32
+ #endif
+ { HAL_PIO_FUNC_UART_HS_UART, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_MGPIO33 huart tx
+ { HAL_PIO_FUNC_UART_HS_UART, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_ENBALE }, // S_MGPIO34 huart rx
+ { HAL_PIO_FUNC_UART_HS_UART, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO35
+ { HAL_PIO_FUNC_UART_HS_UART, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO36
+ #if 0
+ { HAL_PIO_FUNC_UART2_M2, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_MGPIO37 uart tx
+ { HAL_PIO_FUNC_UART2_M2, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_ENBALE }, // S_MGPIO38 uart rx
+ #else
+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_MGPIO37 uart tx NC
+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_MGPIO38 uart rx NC
+ #endif
+
+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_L0 NC
+
+ { HAL_PIO_FUNC_I2S1_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_L1 i2s1
+ { HAL_PIO_FUNC_I2S1_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_L2
+ { HAL_PIO_FUNC_I2S1_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_L3
+ { HAL_PIO_FUNC_I2S1_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_L4
+
+ { HAL_PIO_FUNC_I2S0_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_L5
+ { HAL_PIO_FUNC_I2S0_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_L6 i2s0
+ { HAL_PIO_FUNC_I2S0_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_L7
+ { HAL_PIO_FUNC_I2S0_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_L8
+
+ #if (defined FT_BT_UART)
+ { HAL_PIO_FUNC_UART2_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_L9 uart2 txd
+ { HAL_PIO_FUNC_UART2_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_ENBALE }, // S_AGPIO_L10 uart2 rxd
+ #else
+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_L9 dsp uart TP35
+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_L10 dsp uart TP36
+ #endif
+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_ENBALE }, // S_AGPIO_L11 G_INT1
+
+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_ENBALE }, // S_AGPIO_L12 i2c data HX3507_SDIO
{ HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_L13 i2c CLK HX3507_SCLK
-
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_DISABLE }, // S_AGPIO_L14 NC
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_AGPIO_L15 NC
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_L16 NC
-
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_AGPIO_L17 HX3507_INT not use
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_L18 VDDEN //暂时无用,采用VDDIO 默认开启 EXt V3.0 EXt V1.8
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_DISABLE }, // S_AGPIO_L19 G_INT2 //暂时不用
-
-
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_DISABLE }, // S_AGPIO_L20 0.2C_CHRG
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_L21 NTC_VDD_ON给低打开 NTC上拉电源
-#ifdef QSPI_DISPLAY
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_L22 QSPI TE
-#else
- { HAL_PIO_FUNC_TE, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_L22 MIPI TE
-#endif
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_L23 CAT_1_PWR_ON 控制CAT_1开机脚,或者控制 CAT1电源 拉高有效
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_L24 LCM_EN
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_L25 //////////// audio pa reset
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_L26 心率复位 PPG reset
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_L27 LCM reset
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_ENBALE }, // S_AGPIO_L28 CAT_1复位 CAT1_RESET_N 拉低有效 key4
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_L29 charge done info 检测是否充满电
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_L30 KP_MKIN1 唤醒 CAT1 ,输出
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_L31 KP_MKOUIT1 唤醒 蓝牙 ,输入
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_L32 NC
-
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_R0 PRG_LED_POWER ON 心率等电源控制脚
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_R1 SE_REST 安全芯片复位唤醒脚
-// #if VIB_USE_PWM
- // { HAL_PIO_FUNC_PWMP1_M2, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_AGPIO_R2 VIBR_PWM 马达控制脚 兼容预留马达驱动复位脚
- // { HAL_PIO_FUNC_PWMN1_M3, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_AGPIO_R2 VIBR_PWM 马达控制脚 兼容预留马达驱动复位脚
-// #else
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_AGPIO_R2 VIBR_PWM 马达控制脚 兼容预留马达驱动复位脚
-// #endif
-#ifdef BOARD_N9
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_ENBALE }, // S_AGPIO_R3 NC
-#else
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_DISABLE },
-#endif
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_DISABLE }, // S_AGPIO_R4 tp reset
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_R5 touch int
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_R6 PRG_INT 心率中断
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_R7 GYRO_INT2
-#ifdef SUPPORT_GYRO_SERVICE
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_R8 GYRO_INT1
-#else
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_R8 GYRO_INT1
-#endif
-
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_R9 BAT_CHARGE_OFF 关掉充电 温度高的时候
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_ENBALE }, // S_AGPIO_R10 Key2 ///////////////////HAL_PIO_IE_ENBALE input enable
-
-#if CORE == APPS
- { HAL_PIO_FUNC_INVALID, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // ULP_GPIO0 mode not config
- { HAL_PIO_FUNC_INVALID, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // ULP_GPIO1 mode not config
- { HAL_PIO_FUNC_INVALID, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // ULP_GPIO2 mode not config
- { HAL_PIO_FUNC_INVALID, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // ULP_GPIO3 mode not config
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // ULP_GPIO4
- { HAL_PIO_FUNC_SWD, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // ULP_GPIO5
- { HAL_PIO_FUNC_SWD, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // ULP_GPIO6
-#endif
-};
-/**
- * @}
- */
-
-
-/**
- * @addtogroup connectivity_config_boards
- * @{
- */
-/**
- * @brief Global evb gpio functions.
- *
- *
- * typedef struct {
- pin_t gpio;
- hal_gpio_direction_t direction;
- hal_gpio_level_t level;
- uint32_t triger;
- hal_gpio_callback_t callback;
-} hal_gpio_config_t;
- */
-
-
-//默认开启Cat1 然后再根据配置决定是否关闭.
-//默认不开启 ppg checkid失败,原因未知,暂时开机开启cat1
-#define DEFAULT_POWERON_CAT1 1
-
-//需要配置默认输出的,以及需要配置默认输入中断函数的。
-const hal_gpio_config_t g_gpio_function_config[PIN_MAX_NUMBER] = {
-
-#if DEFAULT_POWERON_CAT1
- // S_AGPIO_L23 CAT_1_PWR_ON ----- high power on
- { S_AGPIO_L23, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_HIGH, 0, NULL },
- // S_AGPIO_L28 Cat1 reset ---- low reset
- { S_AGPIO_L24, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_HIGH, 0, NULL },
-#else
- // S_AGPIO_L23 CAT_1_PWR_ON ----- high power on
- { S_AGPIO_L23, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_LOW, 0, NULL },
- // S_AGPIO_L28 Cat1 reset ---- low reset
- // { S_AGPIO_L24, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_LOW, 0, NULL },
-#endif
- // S_AGPIO_L17 HX3507_INT
- // { S_AGPIO_L17, HAL_GPIO_DIRECTION_INPUT, HAL_GPIO_LEVEL_LOW, 0, NULL },
- // S_AGPIO_L12 SDIO_BT
- // { S_AGPIO_L12, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_LOW, 0, NULL },
- // // S_AGPIO_L13 SCLK_BT
- // { S_AGPIO_L13, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_LOW, 0, NULL },
-
- // S_AGPIO_L26 心率复位 PPG reset
- // { S_AGPIO_L26, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_LOW, 0, NULL },
- // S_AGPIO_R0 PRG_LED_POWER ON 心率等电源控制脚
- // { S_AGPIO_R0, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_LOW, 0, NULL },
-
- //S_AGPIO_L21 NTC_VDD_ON 给低打开 NTC上拉电源 ,默认关闭
- { S_AGPIO_L21, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_HIGH, 0, NULL },
-#if 0 //默认正常充电
-// #define GPIO_PIN_ENABLE_CHARGE S_AGPIO_R9 //low enable
-// #define GPIO_PIN_ENABLE_CHARGE_0_2C S_AGPIO_L20 //low 0.2c 低电流充电
- { S_AGPIO_R9, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_LOW, 0, NULL },
- { S_AGPIO_L20, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_LOW, 0, NULL },
-#else
- { S_AGPIO_R9, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_LOW, 0, NULL },
- { S_AGPIO_L20, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_HIGH, 0, NULL },
-#endif
-
- //{ S_AGPIO_L16, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_HIGH, 0, NULL },
-//默认关闭马达
- { S_AGPIO_L32, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_LOW, 0, NULL },
- { S_AGPIO_R0, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_LOW, 0, NULL },
- { S_HGPIO4, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_LOW, 0, NULL },
- { S_HGPIO0, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_LOW, 0, NULL },
-
-
-//默认开启 EXT LDO V3.0 V1.8
- // { S_AGPIO_L18, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_HIGH, 0, NULL },
- { S_AGPIO_L14, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_HIGH, 0, NULL },
-
-
-#ifdef SUPPORT_CYWEE_SERVICE
- /**G sensor G_INT1 S_AGPIO_L11 G_INT2 S_AGPIO_L19 采用timer 时这些中断要屏蔽*/
- { S_AGPIO_L11, HAL_GPIO_DIRECTION_INPUT, NULL, GPIO_INTERRUPT_RISING_EDGE, cywee_int_callback },
- //{ S_AGPIO_L19, HAL_GPIO_DIRECTION_INPUT, NULL, GPIO_INTERRUPT_DEDGE, cywee_int_callback },
-#endif
- /**S_AGPIO_R1 GPO alipay默认resetpin*/
- // { S_AGPIO_R1, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_HIGH, 0, NULL },
-#ifdef SUPPORT_CAT1_SERVICE
- /**cat1 ring input key*/
- // { S_AGPIO_L31, HAL_GPIO_DIRECTION_INPUT, NULL, GPIO_INTERRUPT_DEDGE, cat1_ring_isr_callback},
- // { S_AGPIO_L31, HAL_GPIO_DIRECTION_INPUT, NULL, GPIO_INTERRUPT_RISING_EDGE, cat1_ring_isr_callback},
-
-#endif
-};
-/**
- * @}
- */
-#endif
+
+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_DISABLE }, // S_AGPIO_L14 NC
+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_AGPIO_L15 NC
+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_L16 NC
+
+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_AGPIO_L17 HX3507_INT not use
+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_L18 VDDEN //暂时无用,采用VDDIO 默认开启 EXt V3.0 EXt V1.8
+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_DISABLE }, // S_AGPIO_L19 G_INT2 //暂时不用
+
+
+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_DISABLE }, // S_AGPIO_L20 0.2C_CHRG
+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_L21 NTC_VDD_ON给低打开 NTC上拉电源
+ #ifdef QSPI_DISPLAY
+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_L22 QSPI TE
+ #else
+ { HAL_PIO_FUNC_TE, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_L22 MIPI TE
+ #endif
+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_L23 CAT_1_PWR_ON 控制CAT_1开机脚,或者控制 CAT1电源 拉高有效
+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_L24 LCM_EN
+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_L25 //////////// audio pa reset
+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_L26 心率复位 PPG reset
+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_L27 LCM reset
+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_ENBALE }, // S_AGPIO_L28 CAT_1复位 CAT1_RESET_N 拉低有效 key4
+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_L29 charge done info 检测是否充满电
+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_L30 KP_MKIN1 唤醒 CAT1 ,输出
+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_L31 KP_MKOUIT1 唤醒 蓝牙 ,输入
+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_L32 NC
+
+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_R0 PRG_LED_POWER ON 心率等电源控制脚
+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_R1 SE_REST 安全芯片复位唤醒脚
+ // #if VIB_USE_PWM
+ // { HAL_PIO_FUNC_PWMP1_M2, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_AGPIO_R2 VIBR_PWM 马达控制脚 兼容预留马达驱动复位脚
+ // { HAL_PIO_FUNC_PWMN1_M3, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_AGPIO_R2 VIBR_PWM 马达控制脚 兼容预留马达驱动复位脚
+ // #else
+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_AGPIO_R2 VIBR_PWM 马达控制脚 兼容预留马达驱动复位脚
+ // #endif
+ #ifdef BOARD_N9
+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_ENBALE }, // S_AGPIO_R3 NC
+ #else
+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_DISABLE },
+ #endif
+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_DISABLE }, // S_AGPIO_R4 tp reset
+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_R5 touch int
+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_R6 PRG_INT 心率中断
+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_R7 GYRO_INT2
+ #ifdef SUPPORT_GYRO_SERVICE
+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_R8 GYRO_INT1
+ #else
+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_R8 GYRO_INT1
+ #endif
+
+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_R9 BAT_CHARGE_OFF 关掉充电 温度高的时候
+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_ENBALE }, // S_AGPIO_R10 Key2 ///////////////////HAL_PIO_IE_ENBALE input enable
+
+ #if CORE == APPS
+ { HAL_PIO_FUNC_INVALID, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // ULP_GPIO0 mode not config
+ { HAL_PIO_FUNC_INVALID, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // ULP_GPIO1 mode not config
+ { HAL_PIO_FUNC_INVALID, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // ULP_GPIO2 mode not config
+ { HAL_PIO_FUNC_INVALID, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // ULP_GPIO3 mode not config
+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // ULP_GPIO4
+ { HAL_PIO_FUNC_SWD, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // ULP_GPIO5
+ { HAL_PIO_FUNC_SWD, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // ULP_GPIO6
+ #endif
+ };
+ /**
+ * @}
+ */
+
+
+ /**
+ * @addtogroup connectivity_config_boards
+ * @{
+ */
+ /**
+ * @brief Global evb gpio functions.
+ *
+ *
+ * typedef struct {
+ pin_t gpio;
+ hal_gpio_direction_t direction;
+ hal_gpio_level_t level;
+ uint32_t triger;
+ hal_gpio_callback_t callback;
+ } hal_gpio_config_t;
+ */
+
+
+ //默认开启Cat1 然后再根据配置决定是否关闭.
+ //默认不开启 ppg checkid失败,原因未知,暂时开机开启cat1
+ #define DEFAULT_POWERON_CAT1 1
+
+ //需要配置默认输出的,以及需要配置默认输入中断函数的。
+ const hal_gpio_config_t g_gpio_function_config[PIN_MAX_NUMBER] = {
+
+ #if DEFAULT_POWERON_CAT1
+ // S_AGPIO_L23 CAT_1_PWR_ON ----- high power on
+ { S_AGPIO_L23, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_HIGH, 0, NULL },
+ // S_AGPIO_L28 Cat1 reset ---- low reset
+ { S_AGPIO_L24, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_HIGH, 0, NULL },
+ #else
+ // S_AGPIO_L23 CAT_1_PWR_ON ----- high power on
+ { S_AGPIO_L23, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_LOW, 0, NULL },
+ // S_AGPIO_L28 Cat1 reset ---- low reset
+ // { S_AGPIO_L24, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_LOW, 0, NULL },
+ #endif
+ // S_AGPIO_L17 HX3507_INT
+ // { S_AGPIO_L17, HAL_GPIO_DIRECTION_INPUT, HAL_GPIO_LEVEL_LOW, 0, NULL },
+ // S_AGPIO_L12 SDIO_BT
+ // { S_AGPIO_L12, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_LOW, 0, NULL },
+ // // S_AGPIO_L13 SCLK_BT
+ #ifdef SIO_UART_DISABLE_FLOW_CTRL
+ { S_AGPIO_L13, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_HIGH, 0, NULL },
+ #else
+ { S_AGPIO_L13, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_LOW, 0, NULL },
+ #endif
+ // { S_AGPIO_L13, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_LOW, 0, NULL },
+
+ // S_AGPIO_L26 心率复位 PPG reset
+ // { S_AGPIO_L26, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_LOW, 0, NULL },
+ // S_AGPIO_R0 PRG_LED_POWER ON 心率等电源控制脚
+ // { S_AGPIO_R0, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_LOW, 0, NULL },
+
+ //S_AGPIO_L21 NTC_VDD_ON 给低打开 NTC上拉电源 ,默认关闭
+ { S_AGPIO_L21, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_HIGH, 0, NULL },
+ #if 0 //默认正常充电
+ // #define GPIO_PIN_ENABLE_CHARGE S_AGPIO_R9 //low enable
+ // #define GPIO_PIN_ENABLE_CHARGE_0_2C S_AGPIO_L20 //low 0.2c 低电流充电
+ { S_AGPIO_R9, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_LOW, 0, NULL },
+ { S_AGPIO_L20, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_LOW, 0, NULL },
+ #else
+ { S_AGPIO_R9, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_LOW, 0, NULL },
+ { S_AGPIO_L20, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_HIGH, 0, NULL },
+ #endif
+
+ //{ S_AGPIO_L16, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_HIGH, 0, NULL },
+ //默认关闭马达
+ { S_AGPIO_L32, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_LOW, 0, NULL },
+ { S_AGPIO_R0, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_LOW, 0, NULL },
+ { S_HGPIO4, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_LOW, 0, NULL },
+ { S_HGPIO0, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_LOW, 0, NULL },
+
+
+ //默认开启 EXT LDO V3.0 V1.8
+ // { S_AGPIO_L18, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_HIGH, 0, NULL },
+ { S_AGPIO_L14, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_HIGH, 0, NULL },
+
+
+ #ifdef SUPPORT_CYWEE_SERVICE
+ /**G sensor G_INT1 S_AGPIO_L11 G_INT2 S_AGPIO_L19 采用timer 时这些中断要屏蔽*/
+ { S_AGPIO_L11, HAL_GPIO_DIRECTION_INPUT, NULL, GPIO_INTERRUPT_RISING_EDGE, cywee_int_callback },
+ //{ S_AGPIO_L19, HAL_GPIO_DIRECTION_INPUT, NULL, GPIO_INTERRUPT_DEDGE, cywee_int_callback },
+ #endif
+ /**S_AGPIO_R1 GPO alipay默认resetpin*/
+ // { S_AGPIO_R1, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_HIGH, 0, NULL },
+ #ifdef SUPPORT_CAT1_SERVICE
+ /**cat1 ring input key*/
+ // { S_AGPIO_L31, HAL_GPIO_DIRECTION_INPUT, NULL, GPIO_INTERRUPT_DEDGE, cat1_ring_isr_callback},
+ // { S_AGPIO_L31, HAL_GPIO_DIRECTION_INPUT, NULL, GPIO_INTERRUPT_RISING_EDGE, cat1_ring_isr_callback},
+
+ #endif
+ };
+ /**
+ * @}
+ */
+ #endif
+
\ No newline at end of file
* History: \n
* 2022-06-06, Create file. \n
*/
-#include <stdio.h>
-#include "dma_porting.h"
-#include "debug_print.h"
-#include "hal_uart_v120.h"
-#include "uart_porting.h"
-#ifdef SUPPORT_HAL_PINCTRL
-#include "pinctrl_porting.h"
-#include "pinctrl.h"
-#endif
-#include "uart.h"
-#include "oal_interface.h"
-#include "platform_core.h"
-#include "securec.h"
-#include "soc_osal.h"
-#ifdef SUPPORT_CLOCKS_CORE
-#include "clocks_core_common.h"
-#endif
-#if defined(SUPPORT_TEST_COMMON)
-#include "test_suite_uart.h"
-#endif
-#if defined(SUPPORT_AT_CMD)
-#include "at_cmd_api.h"
-#endif
-#ifndef BUILD_APPLICATION_SSB
-#include "log_uart.h"
-#include "cmsis_os.h"
-#endif
-#if defined(SW_RTT_DEBUG)
-#include "SEGGER_RTT.h"
-#endif
-
-#ifdef BUILD_APPLICATION_SSB
-#define UART_RX_BUFFER_SIZE 1
-#else
-
-/**
- * UART_RX_BUFFER SIZE 似乎只能是 56 更多没用
+ #include <stdio.h>
+ #include "dma_porting.h"
+ #include "debug_print.h"
+ #include "hal_uart_v120.h"
+ #include "uart_porting.h"
+ #ifdef SUPPORT_HAL_PINCTRL
+ #include "pinctrl_porting.h"
+ #include "pinctrl.h"
+ #endif
+ #include "uart.h"
+ #include "oal_interface.h"
+ #include "platform_core.h"
+ #include "securec.h"
+ #include "soc_osal.h"
+ #ifdef SUPPORT_CLOCKS_CORE
+ #include "clocks_core_common.h"
+ #endif
+ #if defined(SUPPORT_TEST_COMMON)
+ #include "test_suite_uart.h"
+ #endif
+ #if defined(SUPPORT_AT_CMD)
+ #include "at_cmd_api.h"
+ #endif
+ #ifndef BUILD_APPLICATION_SSB
+ #include "log_uart.h"
+ #include "cmsis_os.h"
+ #endif
+ #if defined(SW_RTT_DEBUG)
+ #include "SEGGER_RTT.h"
+ #endif
+
+ #ifdef BUILD_APPLICATION_SSB
+ #define UART_RX_BUFFER_SIZE 1
+ #else
+
+
+// #include "lwipopts_default.h"
+ /**
+ * UART_RX_BUFFER SIZE 似乎只能是 56 更多没用
+ */
+ #define UART_RX_BUFFER_SIZE 56
+
+ #endif
+
+ #define AT_BLE_HEADER_LENGTH 49
+ #define AT_CMD_BUFSIZE_MAX 256
+ #define UARTILPR 0x20
+ #define UARTIBRD 0x24
+ #define UARTFBRD 0x28
+ #define UARTLCRH 0x2c
+ #define UARTCR 0x30
+ #define UARTIFLS 0x34
+ #define UARTIMSC 0x38
+ #define UARTDMACR 0x48
+ #define UARTRESET (M_CTL_RB_BASE + 0x0168)
+ #define UARTBUS0 0x1
+ #define UARTBUS1 0x0
+
+ /**
+ * CUSTOM_UART_RATE = 500000 可以看蓝牙日志
+ * 2000000 可以加快下载文件速度
*/
-#define UART_RX_BUFFER_SIZE 56
-
-#endif
-
-#define AT_BLE_HEADER_LENGTH 49
-#define AT_CMD_BUFSIZE_MAX 256
-#define UARTILPR 0x20
-#define UARTIBRD 0x24
-#define UARTFBRD 0x28
-#define UARTLCRH 0x2c
-#define UARTCR 0x30
-#define UARTIFLS 0x34
-#define UARTIMSC 0x38
-#define UARTDMACR 0x48
-#define UARTRESET (M_CTL_RB_BASE + 0x0168)
-#define UARTBUS0 0x1
-#define UARTBUS1 0x0
-
-/**
- * CUSTOM_UART_RATE = 500000 可以看蓝牙日志
- * 2000000 可以加快下载文件速度
-*/
-#define CUSTOM_UART_RATE 500000
-typedef struct {
- pin_mode_t tx_pin_mode;
- pin_mode_t rx_pin_mode;
- pin_mode_t cts_pin_mode;
- pin_mode_t rts_pin_mode;
-} uart_pin_mode_t;
-
-typedef struct uart_config {
- uart_pin_config_t pin;
- uart_pin_mode_t pin_mode;
- core_irq_t irq_num;
- osal_irq_handler irq_func;
- uart_rx_callback_t rx_callback;
- uart_attr_t line_config;
- uart_buffer_config_t buffer_config;
-#ifndef BUILD_APPLICATION_SSB
- osal_mutex uart_mutex;
- bool support_mutex;
-#endif
-} uart_config_t;
-
-const uintptr_t g_uart_base_addrs[UART_BUS_MAX_NUM] = {
- (uintptr_t)UART0_BASE,
- (uintptr_t)UART1_BASE,
-};
-
-uintptr_t uart_porting_base_addr_get(uart_bus_t bus)
-{
- return g_uart_base_addrs[bus];
-}
-
-static bool g_sw_debug_uart_enabled = false;
-uint8_t g_uart0_rx_buffer[UART_RX_BUFFER_SIZE];
-uint8_t g_uart1_rx_buffer[UART_RX_BUFFER_SIZE];
-// #ifdef DISABLE_UART_LOG
-uint8_t g_uart2_rx_buffer[UART_RX_BUFFER_SIZE];
-// #endif
-#if defined(SUPPORT_AT_CMD)
-static void at_cmd_uart_rx_callback(const void *buf, uint16_t buf_len, bool remaining);
-#endif
-
-void log_factory_at_callback(const void *buffer, uint16_t length, bool remaining);
-
-static uart_config_t g_uart_config[UART_BUS_MAX_NUMBER] = {
-#ifdef BUILD_APPLICATION_SSB
- /* UART_BUS_0 for debug print */
- {
- {
- .tx_pin = S_MGPIO19,
- .rx_pin = S_MGPIO20,
- .cts_pin = PIN_NONE,
- .rts_pin = PIN_NONE
- },
- {
- .tx_pin_mode = (pin_mode_t)HAL_PIO_FUNC_UART1,
- .rx_pin_mode = (pin_mode_t)HAL_PIO_FUNC_UART1,
- .cts_pin_mode = (pin_mode_t)HAL_PIO_FUNC_MAX,
- .rts_pin_mode = (pin_mode_t)HAL_PIO_FUNC_MAX
- },
- UART_0_IRQN,
- (osal_irq_handler)irq_uart0_handler,
- NULL,
- {
- .baud_rate = 115200,
- .data_bits = UART_DATA_BIT_8,
- .parity = UART_PARITY_NONE,
- .stop_bits = UART_STOP_BIT_1,
- },
- {
- .rx_buffer_size = UART_RX_BUFFER_SIZE,
- .rx_buffer = g_uart0_rx_buffer,
- }
- },
- /* UART_BUS_1 for codeloader */
- {
- {
- .tx_pin = S_MGPIO33,
- .rx_pin = S_MGPIO34,
- .cts_pin = PIN_NONE,
- .rts_pin = PIN_NONE
- },
- {
- .tx_pin_mode = (pin_mode_t)HAL_PIO_FUNC_UART_HS_UART,
- .rx_pin_mode = (pin_mode_t)HAL_PIO_FUNC_UART_HS_UART,
- .cts_pin_mode = (pin_mode_t)HAL_PIO_FUNC_MAX,
- .rts_pin_mode = (pin_mode_t)HAL_PIO_FUNC_MAX,
- },
- UART_1_IRQN,
- (osal_irq_handler)irq_uart1_handler,
- NULL,
- {
- .baud_rate = 115200,
- .data_bits = UART_DATA_BIT_8,
- .parity = UART_PARITY_NONE,
- .stop_bits = UART_STOP_BIT_1,
- },
- {
- .rx_buffer_size = UART_RX_BUFFER_SIZE,
- .rx_buffer = g_uart1_rx_buffer,
- }
- }
-#else
- /** UART_BUS_0, which is used to at cmd and debug print in wstp version,
- * and which is used to testustie and debug print in testsuite version
- */
- #if defined(SUPPORT_PPP_SERVICE_POLLING)
- {
- {
- .tx_pin = PIN_NONE,
- .rx_pin = PIN_NONE,
- .cts_pin = PIN_NONE,
- .rts_pin = PIN_NONE
- },//pin
- {
- .tx_pin_mode = (pin_mode_t)HAL_PIO_FUNC_MAX,
- .rx_pin_mode = (pin_mode_t)HAL_PIO_FUNC_MAX,
- .cts_pin_mode = (pin_mode_t)HAL_PIO_FUNC_MAX,
- .rts_pin_mode = (pin_mode_t)HAL_PIO_FUNC_MAX
- },//pin_mode
- UART_0_IRQN,//irq_num
- (osal_irq_handler)irq_uart0_handler,//irq_func
- NULL,//rx_callback
- {
- .baud_rate = 115200,
- .data_bits = UART_DATA_BIT_8,
- .parity = UART_PARITY_NONE,
- .stop_bits = UART_STOP_BIT_1,
- },//line_config
- {
- .rx_buffer_size = UART_RX_BUFFER_SIZE,
- .rx_buffer = g_uart0_rx_buffer,
- },
- NULL, //uart_mutex
- false, //support_mutex
- },
- #elif defined(SUPPORT_PPP_SERVICE_INTERRUPT) || defined(SUPPORT_CAT1_SERVICE)
- {
- {
- .tx_pin = S_MGPIO19,
- .rx_pin = S_MGPIO20,
- .cts_pin = PIN_NONE,
- .rts_pin = PIN_NONE
- },
- {
- .tx_pin_mode = (pin_mode_t)HAL_PIO_FUNC_UART1,
- .rx_pin_mode = (pin_mode_t)HAL_PIO_FUNC_UART1,
- .cts_pin_mode = (pin_mode_t)HAL_PIO_FUNC_MAX,
- .rts_pin_mode = (pin_mode_t)HAL_PIO_FUNC_MAX
- },
- UART_0_IRQN,
- (osal_irq_handler)irq_uart0_handler,
- NULL,
- {
- .baud_rate = 921600,
- .data_bits = UART_DATA_BIT_8,
- .parity = UART_PARITY_NONE,
- .stop_bits = UART_STOP_BIT_1,
- },
- {
- .rx_buffer_size = UART_RX_BUFFER_SIZE,
- .rx_buffer = g_uart0_rx_buffer,
- },
- NULL,
- false,
- },
- #else // SUPPORT_CAT1_SERVICE
- {
- {
- .tx_pin = S_MGPIO19,
- .rx_pin = S_MGPIO20,
- .cts_pin = PIN_NONE,
- .rts_pin = PIN_NONE
- },
- {
- .tx_pin_mode = (pin_mode_t)HAL_PIO_FUNC_UART1,
- .rx_pin_mode = (pin_mode_t)HAL_PIO_FUNC_UART1,
- .cts_pin_mode = (pin_mode_t)HAL_PIO_FUNC_MAX,
- .rts_pin_mode = (pin_mode_t)HAL_PIO_FUNC_MAX
- },
- UART_0_IRQN,
- (osal_irq_handler)irq_uart0_handler,
-#if defined(SUPPORT_TEST_COMMON)
- test_suite_uart_rx_callback,
-#elif defined(SUPPORT_AT_CMD)
- at_cmd_uart_rx_callback,
-#else
- NULL,
-#endif
- {
- .baud_rate = CUSTOM_UART_RATE,
- .data_bits = UART_DATA_BIT_8,
- .parity = UART_PARITY_NONE,
- .stop_bits = UART_STOP_BIT_1,
- },
- {
- .rx_buffer_size = UART_RX_BUFFER_SIZE,
- .rx_buffer = g_uart0_rx_buffer,
- },
- NULL,
-#if defined(SUPPORT_TEST_COMMON)
- false,
-#else
- true,
-#endif
- },
-
-#endif // SUPPORT_CAT1_SERVICE
- /* UART_BUS_1 is used to hso uart */
- {
- {
- .tx_pin = S_MGPIO33,
- .rx_pin = S_MGPIO34,
- .cts_pin = PIN_NONE,
- .rts_pin = PIN_NONE
- },
- {
- .tx_pin_mode = (pin_mode_t)HAL_PIO_FUNC_UART_HS_UART,
- .rx_pin_mode = (pin_mode_t)HAL_PIO_FUNC_UART_HS_UART,
- .cts_pin_mode = (pin_mode_t)HAL_PIO_FUNC_MAX,
- .rts_pin_mode = (pin_mode_t)HAL_PIO_FUNC_MAX
- },
- UART_1_IRQN,
- (osal_irq_handler)irq_uart1_handler,
-#ifndef FT_SINGLE_UART
-#if SYS_DEBUG_MODE_ENABLE == YES
- log_uart_rx_callback,
-#else
- NULL,
-#endif
-#else
- log_factory_at_callback,
-#endif
- {
- .baud_rate = CUSTOM_UART_RATE,
- .data_bits = UART_DATA_BIT_8,
- .parity = UART_PARITY_NONE,
- .stop_bits = UART_STOP_BIT_1,
- },
- {
- .rx_buffer_size = UART_RX_BUFFER_SIZE,
- .rx_buffer = g_uart1_rx_buffer,
- },
- NULL,
- false
- }
-// #ifdef DISABLE_UART_LOG
- ,
- /* UART_BUS_2 is used to hso uart */
- {
-
- {
- .tx_pin = PIN_NONE,
- .rx_pin = PIN_NONE,
- .cts_pin = PIN_NONE,
- .rts_pin = PIN_NONE
- },
- {
- .tx_pin_mode = (pin_mode_t)HAL_PIO_FUNC_MAX,
- .rx_pin_mode = (pin_mode_t)HAL_PIO_FUNC_MAX,
- .cts_pin_mode = (pin_mode_t)HAL_PIO_FUNC_MAX,
- .rts_pin_mode = (pin_mode_t)HAL_PIO_FUNC_MAX
- },
- RESERVED_80_IRQn,
- NULL,
- NULL,
- {
- .baud_rate = CUSTOM_UART_RATE,
- .data_bits = UART_DATA_BIT_8,
- .parity = UART_PARITY_NONE,
- .stop_bits = UART_STOP_BIT_1,
- },
- {
- .rx_buffer_size = UART_RX_BUFFER_SIZE,
- .rx_buffer = g_uart2_rx_buffer,
- },
- NULL,
- false
- }
-
-// #endif
-#endif
-};
-static uart_recovery_regs_t g_uart_recovery_reg[UART_BUS_MAX_NUMBER] = { 0 };
-
-#ifdef FT_SINGLE_UART
-void log_factory_at_callback(const void *buffer, uint16_t length, bool remaining)
-{
-#ifdef XTS_SUPPORT
- #if SYS_DEBUG_MODE_ENABLE == YES
- log_uart_rx_callback(buffer, length, remaining);
- #endif
- if (zdiag_is_enable() == false) {
- #ifdef SUPPORT_AT_CMD
- at_cmd_msg_receive_handler((uint8_t *)buffer, length);
- #endif
- hal_uart_clear_pending(UART_BUS_1);
- }
- return;
-#endif
-
-#ifndef SUPPORT_RECOVERY_DISPLAY //判定是否是在编译RECOVERY image,本参数不支持RECOVERY
-#ifdef CUSTOM_UTILS
- if (uapi_custom_uart_rx_enable_flag() == false)
-#endif
- {
- if (buffer != NULL && ((uint8_t*)buffer)[0]=='A' && ((uint8_t*)buffer)[1]=='T')
- {
- if (zdiag_is_enable() == false) {
- at_cmd_msg_receive_handler((uint8_t *)buffer, length);
- hal_uart_clear_pending(UART_BUS_1);
- }
- }else{
- hal_uart_clear_pending(UART_BUS_1);
- }
- return ;
- }
-#endif
-#if SYS_DEBUG_MODE_ENABLE == YES
- log_uart_rx_callback(buffer, length, remaining);
-#endif
- if (zdiag_is_enable() == false) {
- at_cmd_msg_receive_handler((uint8_t *)buffer, length);
- hal_uart_clear_pending(UART_BUS_1);
- }
-}
-#endif
-
-void uart_port_register_hal_funcs(uart_bus_t bus)
-{
- hal_uart_register_funcs(bus, hal_uart_v120_funcs_get());
-}
-
-void uart_port_unregister_hal_funcs(uart_bus_t bus)
-{
- hal_uart_unregister_funcs(bus);
-}
-
-uint32_t uart_port_get_clock_value(uart_bus_t bus)
-{
- return uart_get_clock_value(bus);
-}
-
-void uart_port_config_pinmux(uart_bus_t bus)
-{
- if (bus == UART_BUS_1) {
- uapi_pin_set_mode(g_uart_config[UART_BUS_1].pin.tx_pin, g_uart_config[UART_BUS_1].pin_mode.tx_pin_mode);
- uapi_pin_set_mode(g_uart_config[UART_BUS_1].pin.rx_pin, g_uart_config[UART_BUS_1].pin_mode.rx_pin_mode);
- } else if (bus == UART_BUS_0) {
- uapi_pin_set_mode(g_uart_config[UART_BUS_0].pin.tx_pin, g_uart_config[UART_BUS_0].pin_mode.tx_pin_mode);
- uapi_pin_set_mode(g_uart_config[UART_BUS_0].pin.rx_pin, g_uart_config[UART_BUS_0].pin_mode.rx_pin_mode);
- }
-}
-
-void uart_port_register_irq(uart_bus_t bus)
-{
- osal_irq_request(g_uart_config[bus].irq_num, g_uart_config[bus].irq_func, NULL, NULL, NULL);
- osal_irq_set_priority(g_uart_config[bus].irq_num, irq_prio(g_uart_config[bus].irq_num));
- osal_irq_enable(g_uart_config[bus].irq_num);
-}
-
-void uart_port_unregister_irq(uart_bus_t bus)
-{
- osal_irq_disable(g_uart_config[bus].irq_num);
-}
-
-void irq_uart0_handler(void)
-{
- hal_uart_irq_handler(UART_BUS_0);
-}
-
-void irq_uart1_handler(void)
-{
- hal_uart_irq_handler(UART_BUS_1);
-}
-
-#ifdef SUPPORT_AT_CMD
-static void at_cmd_uart_rx_callback(const void *buf, uint16_t buf_len, bool remaining)
-{
- unused(remaining);
- #ifndef FT_SINGLE_UART
- at_cmd_msg_receive_handler((uint8_t *)buf, buf_len);
- #endif
- // #ifdef SUPPORT_CAT1_SERVICE
- // cat1_uart_receive_handler((uint8_t *)buf, buf_len);
- // #endif
- hal_uart_clear_pending(SW_DEBUG_UART_BUS);
-}
-#endif
-
-void uart_config_init(void)
-{
- for (uint8_t i = 0; i < UART_BUS_MAX_NUM; i++) {
- if ((g_uart_config[i].pin.tx_pin != PIN_NONE) || (g_uart_config[i].pin.rx_pin != PIN_NONE)) {
- uapi_uart_init(i, &(g_uart_config[i].pin), &(g_uart_config[i].line_config), NULL,
- &(g_uart_config[i].buffer_config));
- }
- if (g_uart_config[i].rx_callback != NULL) {
- uapi_uart_register_rx_callback(i, UART_RX_CONDITION_FULL_OR_SUFFICIENT_DATA_OR_IDLE,
- (uint32_t)(g_uart_config[i].buffer_config.rx_buffer_size),
- g_uart_config[i].rx_callback);
- }
-
-#ifndef BUILD_APPLICATION_SSB
- if (g_uart_config[i].support_mutex == true) {
- osal_mutex_init(&(g_uart_config[i].uart_mutex));
- }
-#endif
- }
-}
-
-#if (defined SW_UART_DEBUG)||(defined FT_SINGLE_UART)
-void sw_debug_uart_deinit(void)
-{
- uapi_uart_deinit(SW_DEBUG_UART_BUS);
-}
-
-void sw_debug_uart_init(uint32_t baud_rate)
-{
- g_uart_config[SW_DEBUG_UART_BUS].line_config.baud_rate = baud_rate;
- uapi_uart_init(SW_DEBUG_UART_BUS, &(g_uart_config[SW_DEBUG_UART_BUS].pin),
- &(g_uart_config[SW_DEBUG_UART_BUS].line_config), NULL,
- &(g_uart_config[SW_DEBUG_UART_BUS].buffer_config));
-}
-
-void sw_debug_uart_reset_baund(void)
-{
- while (uapi_uart_has_pending_transmissions(SW_DEBUG_UART_BUS)) { }
- uapi_uart_set_attr(SW_DEBUG_UART_BUS, &g_uart_config[SW_DEBUG_UART_BUS].line_config);
-}
-#endif
-
-void print_str(const char *str, ...)
-{
- static uint8_t s[1024]; // 1024 means string max length.
- va_list args;
- int32_t str_len;
-
- if ((str == NULL) || (strlen(str) == 0)) {
- return;
- }
-
- va_start(args, str);
- str_len = vsprintf_s((char *)s, sizeof(s), str, args);
- va_end(args);
-
- if (str_len < 0) {
- return;
- }
-#if defined(SW_RTT_DEBUG)
- SEGGER_RTT_Write(0, (const char *)s, str_len);
-#elif defined(SW_UART_DEBUG)
- if (hal_uart_get_funcs(SW_DEBUG_UART_BUS) == NULL) {
- return;
- }
- uapi_uart_write(SW_DEBUG_UART_BUS, (const void *)s, (uint32_t)str_len, 0);
-#else
-#endif
-}
-
-void hal_uart_clear_pending(uart_bus_t uart)
-{
- switch (uart) {
- case UART_BUS_0:
- int_clear_pending_irq(UART_0_IRQN);
- break;
- case UART_BUS_1:
- int_clear_pending_irq(UART_1_IRQN);
- break;
- default:
- break;
- }
-}
-
-#if defined(CONFIG_UART_SUPPORT_DMA)
-uint8_t uart_port_get_dma_trans_dest_handshaking(uart_bus_t bus)
-{
- switch (bus) {
- case UART_BUS_0:
- return (uint8_t)HAL_DMA_HANDSHAKING_UART_L_TX;
- case UART_BUS_1:
- return (uint8_t)HAL_DMA_HANDSHAKING_UART_H0_TX;
- default:
- return (uint8_t)HAL_DMA_HANDSHAKING_MAX_NUM;
- }
-}
-
-uint8_t uart_port_get_dma_trans_src_handshaking(uart_bus_t bus)
-{
- switch (bus) {
- case UART_BUS_0:
- return (uint8_t)HAL_DMA_HANDSHAKING_UART_L_RX;
- case UART_BUS_1:
- return (uint8_t)HAL_DMA_HANDSHAKING_UART_H0_RX;
- default:
- return (uint8_t)HAL_DMA_HANDSHAKING_MAX_NUM;
- }
-}
-#endif /* CONFIG_UART_SUPPORT_DMA */
-
-uint32_t uart_porting_lock(uart_bus_t bus)
-{
-#ifndef BUILD_APPLICATION_SSB
- if ((g_uart_config[bus].support_mutex == true) && (osKernelGetState() == osKernelRunning) &&
- (osal_in_interrupt() == 0)) {
- return (uint32_t)osal_mutex_lock_timeout(&(g_uart_config[bus].uart_mutex), OSAL_MUTEX_WAIT_FOREVER);
- }
-#else
- UNUSED(bus);
-#endif
- return ERRCODE_SUCC;
-}
-
-void uart_porting_unlock(uart_bus_t bus, uint32_t irq_sts)
-{
-#ifndef BUILD_APPLICATION_SSB
- unused(irq_sts);
- if ((g_uart_config[bus].support_mutex == true) && (osKernelGetState() == osKernelRunning) &&
- (osal_in_interrupt() == 0)) {
- osal_mutex_unlock(&(g_uart_config[bus].uart_mutex));
- }
-#else
- UNUSED(bus);
- UNUSED(irq_sts);
-#endif
-}
-
-void uart_save_reg(uart_bus_t bus)
-{
- uint32_t base = uart_porting_base_addr_get(bus);
- g_uart_recovery_reg[bus].uartilpr = readw(base + UARTILPR);
- g_uart_recovery_reg[bus].uartibrd = readw(base + UARTIBRD);
- g_uart_recovery_reg[bus].uartfbrd = readw(base + UARTFBRD);
- g_uart_recovery_reg[bus].uartlcr_h = readw(base + UARTLCRH);
- g_uart_recovery_reg[bus].uartcr = readw(base + UARTCR);
- g_uart_recovery_reg[bus].uartifls = readw(base + UARTIFLS);
- g_uart_recovery_reg[bus].uartimsc = readw(base + UARTIMSC);
- g_uart_recovery_reg[bus].uartdmacr = readw(base + UARTDMACR);
-}
-
-void uart_recovery_reg(uart_bus_t bus)
-{
- uint16_t uart_bit = UARTBUS0;
- if (bus == UART_BUS_0) {
- uart_bit = UARTBUS0;
- } else if (bus == UART_BUS_1) {
- uart_bit = UARTBUS1;
- }
- reg16_clrbit(UARTRESET, uart_bit);
- reg16_setbit(UARTRESET, uart_bit);
- uint32_t base = uart_porting_base_addr_get(bus);
- writew(base + UARTILPR, g_uart_recovery_reg[bus].uartilpr);
- writew(base + UARTIBRD, g_uart_recovery_reg[bus].uartibrd);
- writew(base + UARTFBRD, g_uart_recovery_reg[bus].uartfbrd);
- writew(base + UARTLCRH, g_uart_recovery_reg[bus].uartlcr_h);
- writew(base + UARTCR, g_uart_recovery_reg[bus].uartcr);
- writew(base + UARTIFLS, g_uart_recovery_reg[bus].uartifls);
- writew(base + UARTIMSC, g_uart_recovery_reg[bus].uartimsc);
- writew(base + UARTDMACR, g_uart_recovery_reg[bus].uartdmacr);
-}
-
-void uart_h0_suspend(void)
-{
- uart_save_reg(UART_BUS_0);
-}
-
-void uart_h0_resume(void)
-{
- uart_recovery_reg(UART_BUS_0);
-}
-
-void uart_h1_suspend(void)
-{
- uart_save_reg(UART_BUS_1);
-}
-
-void uart_h1_resume(void)
-{
- uart_recovery_reg(UART_BUS_1);
-}
\ No newline at end of file
+ #define CUSTOM_UART_RATE 500000
+ typedef struct {
+ pin_mode_t tx_pin_mode;
+ pin_mode_t rx_pin_mode;
+ pin_mode_t cts_pin_mode;
+ pin_mode_t rts_pin_mode;
+ } uart_pin_mode_t;
+
+ typedef struct uart_config {
+ uart_pin_config_t pin;
+ uart_pin_mode_t pin_mode;
+ core_irq_t irq_num;
+ osal_irq_handler irq_func;
+ uart_rx_callback_t rx_callback;
+ uart_attr_t line_config;
+ uart_buffer_config_t buffer_config;
+ #ifndef BUILD_APPLICATION_SSB
+ osal_mutex uart_mutex;
+ bool support_mutex;
+ #endif
+ } uart_config_t;
+
+ const uintptr_t g_uart_base_addrs[UART_BUS_MAX_NUM] = {
+ (uintptr_t)UART0_BASE,
+ (uintptr_t)UART1_BASE,
+ };
+
+ uintptr_t uart_porting_base_addr_get(uart_bus_t bus)
+ {
+ return g_uart_base_addrs[bus];
+ }
+
+ static bool g_sw_debug_uart_enabled = false;
+ uint8_t g_uart0_rx_buffer[UART_RX_BUFFER_SIZE];
+ uint8_t g_uart1_rx_buffer[UART_RX_BUFFER_SIZE];
+ // #ifdef DISABLE_UART_LOG
+ uint8_t g_uart2_rx_buffer[UART_RX_BUFFER_SIZE];
+ // #endif
+ #if defined(SUPPORT_AT_CMD)
+ static void at_cmd_uart_rx_callback(const void *buf, uint16_t buf_len, bool remaining);
+ #endif
+
+ void log_factory_at_callback(const void *buffer, uint16_t length, bool remaining);
+
+ static uart_config_t g_uart_config[UART_BUS_MAX_NUMBER] = {
+ #ifdef BUILD_APPLICATION_SSB
+ /* UART_BUS_0 for debug print */
+ {
+ {
+ .tx_pin = S_MGPIO19,
+ .rx_pin = S_MGPIO20,
+ .cts_pin = PIN_NONE,
+ .rts_pin = PIN_NONE
+ },
+ {
+ .tx_pin_mode = (pin_mode_t)HAL_PIO_FUNC_UART1,
+ .rx_pin_mode = (pin_mode_t)HAL_PIO_FUNC_UART1,
+ .cts_pin_mode = (pin_mode_t)HAL_PIO_FUNC_MAX,
+ .rts_pin_mode = (pin_mode_t)HAL_PIO_FUNC_MAX
+ },
+ UART_0_IRQN,
+ (osal_irq_handler)irq_uart0_handler,
+ NULL,
+ {
+ .baud_rate = 115200,
+ .data_bits = UART_DATA_BIT_8,
+ .parity = UART_PARITY_NONE,
+ .stop_bits = UART_STOP_BIT_1,
+ },
+ {
+ .rx_buffer_size = UART_RX_BUFFER_SIZE,
+ .rx_buffer = g_uart0_rx_buffer,
+ }
+ },
+ /* UART_BUS_1 for codeloader */
+ {
+ {
+ .tx_pin = S_MGPIO33,
+ .rx_pin = S_MGPIO34,
+ .cts_pin = PIN_NONE,
+ .rts_pin = PIN_NONE
+ },
+ {
+ .tx_pin_mode = (pin_mode_t)HAL_PIO_FUNC_UART_HS_UART,
+ .rx_pin_mode = (pin_mode_t)HAL_PIO_FUNC_UART_HS_UART,
+ .cts_pin_mode = (pin_mode_t)HAL_PIO_FUNC_MAX,
+ .rts_pin_mode = (pin_mode_t)HAL_PIO_FUNC_MAX,
+ },
+ UART_1_IRQN,
+ (osal_irq_handler)irq_uart1_handler,
+ NULL,
+ {
+ .baud_rate = 115200,
+ .data_bits = UART_DATA_BIT_8,
+ .parity = UART_PARITY_NONE,
+ .stop_bits = UART_STOP_BIT_1,
+ },
+ {
+ .rx_buffer_size = UART_RX_BUFFER_SIZE,
+ .rx_buffer = g_uart1_rx_buffer,
+ }
+ }
+ #else
+ /** UART_BUS_0, which is used to at cmd and debug print in wstp version,
+ * and which is used to testustie and debug print in testsuite version
+ */
+ #if defined(SUPPORT_PPP_SERVICE_POLLING)
+ {
+ {
+ .tx_pin = PIN_NONE,
+ .rx_pin = PIN_NONE,
+ .cts_pin = PIN_NONE,
+ .rts_pin = PIN_NONE
+ },//pin
+ {
+ .tx_pin_mode = (pin_mode_t)HAL_PIO_FUNC_MAX,
+ .rx_pin_mode = (pin_mode_t)HAL_PIO_FUNC_MAX,
+ .cts_pin_mode = (pin_mode_t)HAL_PIO_FUNC_MAX,
+ .rts_pin_mode = (pin_mode_t)HAL_PIO_FUNC_MAX
+ },//pin_mode
+ UART_0_IRQN,//irq_num
+ (osal_irq_handler)irq_uart0_handler,//irq_func
+ NULL,//rx_callback
+ {
+ .baud_rate = 115200,
+ .data_bits = UART_DATA_BIT_8,
+ .parity = UART_PARITY_NONE,
+ .stop_bits = UART_STOP_BIT_1,
+ },//line_config
+ {
+ .rx_buffer_size = UART_RX_BUFFER_SIZE,
+ .rx_buffer = g_uart0_rx_buffer,
+ },
+ NULL, //uart_mutex
+ false, //support_mutex
+ },
+ #elif defined(SUPPORT_PPP_SERVICE_INTERRUPT) || defined(SUPPORT_CAT1_SERVICE)
+ /* UART_BUS_0 for SIO/CAT1:流控引脚与 lwipopts SIO_UART_CTS_PIN/RTS_PIN 一致;若定义 SIO_UART_DISABLE_FLOW_CTRL 则关闭流控避免 CTS 拉高导致无法发送 */
+ {
+ {
+ .tx_pin = S_MGPIO19,
+ .rx_pin = S_MGPIO20,
+ #if defined(SIO_UART_DISABLE_FLOW_CTRL)
+ .cts_pin = PIN_NONE,
+ .rts_pin = PIN_NONE
+ #else
+ .cts_pin = S_MGPIO22,
+ .rts_pin = S_MGPIO21
+ #endif
+ },
+ {
+ .tx_pin_mode = (pin_mode_t)HAL_PIO_FUNC_UART1,
+ .rx_pin_mode = (pin_mode_t)HAL_PIO_FUNC_UART1,
+ #if defined(SIO_UART_DISABLE_FLOW_CTRL)
+ .cts_pin_mode = (pin_mode_t)HAL_PIO_FUNC_MAX,
+ .rts_pin_mode = (pin_mode_t)HAL_PIO_FUNC_MAX
+ #else
+ .cts_pin_mode = (pin_mode_t)HAL_PIO_FUNC_UART1,
+ .rts_pin_mode = (pin_mode_t)HAL_PIO_FUNC_UART1
+ #endif
+ },
+ UART_0_IRQN,
+ (osal_irq_handler)irq_uart0_handler,
+ NULL,
+ {
+ .baud_rate = 921600,
+ .data_bits = UART_DATA_BIT_8,
+ .parity = UART_PARITY_NONE,
+ .stop_bits = UART_STOP_BIT_1,
+ },
+ {
+ .rx_buffer_size = UART_RX_BUFFER_SIZE,
+ .rx_buffer = g_uart0_rx_buffer,
+ },
+ NULL,
+ false,
+ },
+ #else // SUPPORT_CAT1_SERVICE
+ {
+ {
+ .tx_pin = S_MGPIO19,
+ .rx_pin = S_MGPIO20,
+ #if defined(SIO_UART_DISABLE_FLOW_CTRL)
+ .cts_pin = PIN_NONE,
+ .rts_pin = PIN_NONE
+ #else
+ .cts_pin = S_MGPIO22,
+ .rts_pin = S_MGPIO21
+ #endif
+ },
+ {
+ .tx_pin_mode = (pin_mode_t)HAL_PIO_FUNC_UART1,
+ .rx_pin_mode = (pin_mode_t)HAL_PIO_FUNC_UART1,
+ #if defined(SIO_UART_DISABLE_FLOW_CTRL)
+ .cts_pin_mode = (pin_mode_t)HAL_PIO_FUNC_MAX,
+ .rts_pin_mode = (pin_mode_t)HAL_PIO_FUNC_MAX
+ #else
+ .cts_pin_mode = (pin_mode_t)HAL_PIO_FUNC_UART1,
+ .rts_pin_mode = (pin_mode_t)HAL_PIO_FUNC_UART1
+ #endif
+ },
+ UART_0_IRQN,
+ (osal_irq_handler)irq_uart0_handler,
+ #if defined(SUPPORT_TEST_COMMON)
+ test_suite_uart_rx_callback,
+ #elif defined(SUPPORT_AT_CMD)
+ at_cmd_uart_rx_callback,
+ #else
+ NULL,
+ #endif
+ {
+ .baud_rate = CUSTOM_UART_RATE,
+ .data_bits = UART_DATA_BIT_8,
+ .parity = UART_PARITY_NONE,
+ .stop_bits = UART_STOP_BIT_1,
+ },
+ {
+ .rx_buffer_size = UART_RX_BUFFER_SIZE,
+ .rx_buffer = g_uart0_rx_buffer,
+ },
+ NULL,
+ #if defined(SUPPORT_TEST_COMMON)
+ false,
+ #else
+ true,
+ #endif
+ },
+
+ #endif // SUPPORT_CAT1_SERVICE
+ /* UART_BUS_1 is used to hso uart */
+ {
+ {
+ .tx_pin = S_MGPIO33,
+ .rx_pin = S_MGPIO34,
+ .cts_pin = PIN_NONE,
+ .rts_pin = PIN_NONE
+ },
+ {
+ .tx_pin_mode = (pin_mode_t)HAL_PIO_FUNC_UART_HS_UART,
+ .rx_pin_mode = (pin_mode_t)HAL_PIO_FUNC_UART_HS_UART,
+ .cts_pin_mode = (pin_mode_t)HAL_PIO_FUNC_MAX,
+ .rts_pin_mode = (pin_mode_t)HAL_PIO_FUNC_MAX
+ },
+ UART_1_IRQN,
+ (osal_irq_handler)irq_uart1_handler,
+ #ifndef FT_SINGLE_UART
+ #if SYS_DEBUG_MODE_ENABLE == YES
+ log_uart_rx_callback,
+ #else
+ NULL,
+ #endif
+ #else
+ log_factory_at_callback,
+ #endif
+ {
+ .baud_rate = CUSTOM_UART_RATE,
+ .data_bits = UART_DATA_BIT_8,
+ .parity = UART_PARITY_NONE,
+ .stop_bits = UART_STOP_BIT_1,
+ },
+ {
+ .rx_buffer_size = UART_RX_BUFFER_SIZE,
+ .rx_buffer = g_uart1_rx_buffer,
+ },
+ NULL,
+ false
+ }
+ // #ifdef DISABLE_UART_LOG
+ ,
+ /* UART_BUS_2 is used to hso uart */
+ {
+
+ {
+ .tx_pin = PIN_NONE,
+ .rx_pin = PIN_NONE,
+ .cts_pin = PIN_NONE,
+ .rts_pin = PIN_NONE
+ },
+ {
+ .tx_pin_mode = (pin_mode_t)HAL_PIO_FUNC_MAX,
+ .rx_pin_mode = (pin_mode_t)HAL_PIO_FUNC_MAX,
+ .cts_pin_mode = (pin_mode_t)HAL_PIO_FUNC_MAX,
+ .rts_pin_mode = (pin_mode_t)HAL_PIO_FUNC_MAX
+ },
+ RESERVED_80_IRQn,
+ NULL,
+ NULL,
+ {
+ .baud_rate = CUSTOM_UART_RATE,
+ .data_bits = UART_DATA_BIT_8,
+ .parity = UART_PARITY_NONE,
+ .stop_bits = UART_STOP_BIT_1,
+ },
+ {
+ .rx_buffer_size = UART_RX_BUFFER_SIZE,
+ .rx_buffer = g_uart2_rx_buffer,
+ },
+ NULL,
+ false
+ }
+
+ // #endif
+ #endif
+ };
+ static uart_recovery_regs_t g_uart_recovery_reg[UART_BUS_MAX_NUMBER] = { 0 };
+
+ #ifdef FT_SINGLE_UART
+ void log_factory_at_callback(const void *buffer, uint16_t length, bool remaining)
+ {
+ #ifdef XTS_SUPPORT
+ #if SYS_DEBUG_MODE_ENABLE == YES
+ log_uart_rx_callback(buffer, length, remaining);
+ #endif
+ if (zdiag_is_enable() == false) {
+ #ifdef SUPPORT_AT_CMD
+ at_cmd_msg_receive_handler((uint8_t *)buffer, length);
+ #endif
+ hal_uart_clear_pending(UART_BUS_1);
+ }
+ return;
+ #endif
+
+ #ifndef SUPPORT_RECOVERY_DISPLAY //判定是否是在编译RECOVERY image,本参数不支持RECOVERY
+ #ifdef CUSTOM_UTILS
+ if (uapi_custom_uart_rx_enable_flag() == false)
+ #endif
+ {
+ if (buffer != NULL && ((uint8_t*)buffer)[0]=='A' && ((uint8_t*)buffer)[1]=='T')
+ {
+ if (zdiag_is_enable() == false) {
+ at_cmd_msg_receive_handler((uint8_t *)buffer, length);
+ hal_uart_clear_pending(UART_BUS_1);
+ }
+ }else{
+ hal_uart_clear_pending(UART_BUS_1);
+ }
+ return ;
+ }
+ #endif
+ #if SYS_DEBUG_MODE_ENABLE == YES
+ log_uart_rx_callback(buffer, length, remaining);
+ #endif
+ if (zdiag_is_enable() == false) {
+ at_cmd_msg_receive_handler((uint8_t *)buffer, length);
+ hal_uart_clear_pending(UART_BUS_1);
+ }
+ }
+ #endif
+
+ void uart_port_register_hal_funcs(uart_bus_t bus)
+ {
+ hal_uart_register_funcs(bus, hal_uart_v120_funcs_get());
+ }
+
+ void uart_port_unregister_hal_funcs(uart_bus_t bus)
+ {
+ hal_uart_unregister_funcs(bus);
+ }
+
+ uint32_t uart_port_get_clock_value(uart_bus_t bus)
+ {
+ return uart_get_clock_value(bus);
+ }
+
+ void uart_port_config_pinmux(uart_bus_t bus)
+ {
+ if (bus == UART_BUS_1) {
+ uapi_pin_set_mode(g_uart_config[UART_BUS_1].pin.tx_pin, g_uart_config[UART_BUS_1].pin_mode.tx_pin_mode);
+ uapi_pin_set_mode(g_uart_config[UART_BUS_1].pin.rx_pin, g_uart_config[UART_BUS_1].pin_mode.rx_pin_mode);
+ } else if (bus == UART_BUS_0) {
+ uapi_pin_set_mode(g_uart_config[UART_BUS_0].pin.tx_pin, g_uart_config[UART_BUS_0].pin_mode.tx_pin_mode);
+ uapi_pin_set_mode(g_uart_config[UART_BUS_0].pin.rx_pin, g_uart_config[UART_BUS_0].pin_mode.rx_pin_mode);
+ if (g_uart_config[UART_BUS_0].pin.cts_pin != PIN_NONE) {
+ uapi_pin_set_mode(g_uart_config[UART_BUS_0].pin.cts_pin, g_uart_config[UART_BUS_0].pin_mode.cts_pin_mode);
+
+ }
+ if (g_uart_config[UART_BUS_0].pin.rts_pin != PIN_NONE) {
+ uapi_pin_set_mode(g_uart_config[UART_BUS_0].pin.rts_pin, g_uart_config[UART_BUS_0].pin_mode.rts_pin_mode);
+ }
+ }
+ }
+
+ void uart_port_register_irq(uart_bus_t bus)
+ {
+ osal_irq_request(g_uart_config[bus].irq_num, g_uart_config[bus].irq_func, NULL, NULL, NULL);
+ osal_irq_set_priority(g_uart_config[bus].irq_num, irq_prio(g_uart_config[bus].irq_num));
+ osal_irq_enable(g_uart_config[bus].irq_num);
+ }
+
+ void uart_port_unregister_irq(uart_bus_t bus)
+ {
+ osal_irq_disable(g_uart_config[bus].irq_num);
+ }
+
+ void irq_uart0_handler(void)
+ {
+ hal_uart_irq_handler(UART_BUS_0);
+ }
+
+ void irq_uart1_handler(void)
+ {
+ hal_uart_irq_handler(UART_BUS_1);
+ }
+
+ #ifdef SUPPORT_AT_CMD
+ static void at_cmd_uart_rx_callback(const void *buf, uint16_t buf_len, bool remaining)
+ {
+ unused(remaining);
+ #ifndef FT_SINGLE_UART
+ at_cmd_msg_receive_handler((uint8_t *)buf, buf_len);
+ #endif
+ // #ifdef SUPPORT_CAT1_SERVICE
+ // cat1_uart_receive_handler((uint8_t *)buf, buf_len);
+ // #endif
+ hal_uart_clear_pending(SW_DEBUG_UART_BUS);
+ }
+ #endif
+
+ void uart_config_init(void)
+ {
+ for (uint8_t i = 0; i < UART_BUS_MAX_NUM; i++) {
+ if ((g_uart_config[i].pin.tx_pin != PIN_NONE) || (g_uart_config[i].pin.rx_pin != PIN_NONE)) {
+ uapi_uart_init(i, &(g_uart_config[i].pin), &(g_uart_config[i].line_config), NULL,
+ &(g_uart_config[i].buffer_config));
+ }
+ if (g_uart_config[i].rx_callback != NULL) {
+ uapi_uart_register_rx_callback(i, UART_RX_CONDITION_FULL_OR_SUFFICIENT_DATA_OR_IDLE,
+ (uint32_t)(g_uart_config[i].buffer_config.rx_buffer_size),
+ g_uart_config[i].rx_callback);
+ }
+
+ #ifndef BUILD_APPLICATION_SSB
+ if (g_uart_config[i].support_mutex == true) {
+ osal_mutex_init(&(g_uart_config[i].uart_mutex));
+ }
+ #endif
+ }
+ }
+
+ #if (defined SW_UART_DEBUG)||(defined FT_SINGLE_UART)
+ void sw_debug_uart_deinit(void)
+ {
+ uapi_uart_deinit(SW_DEBUG_UART_BUS);
+ }
+
+ void sw_debug_uart_init(uint32_t baud_rate)
+ {
+ g_uart_config[SW_DEBUG_UART_BUS].line_config.baud_rate = baud_rate;
+ uapi_uart_init(SW_DEBUG_UART_BUS, &(g_uart_config[SW_DEBUG_UART_BUS].pin),
+ &(g_uart_config[SW_DEBUG_UART_BUS].line_config), NULL,
+ &(g_uart_config[SW_DEBUG_UART_BUS].buffer_config));
+ }
+
+ void sw_debug_uart_reset_baund(void)
+ {
+ while (uapi_uart_has_pending_transmissions(SW_DEBUG_UART_BUS)) { }
+ uapi_uart_set_attr(SW_DEBUG_UART_BUS, &g_uart_config[SW_DEBUG_UART_BUS].line_config);
+ }
+ #endif
+
+ void print_str(const char *str, ...)
+ {
+ static uint8_t s[1024]; // 1024 means string max length.
+ va_list args;
+ int32_t str_len;
+
+ if ((str == NULL) || (strlen(str) == 0)) {
+ return;
+ }
+
+ va_start(args, str);
+ str_len = vsprintf_s((char *)s, sizeof(s), str, args);
+ va_end(args);
+
+ if (str_len < 0) {
+ return;
+ }
+ #if defined(SW_RTT_DEBUG)
+ SEGGER_RTT_Write(0, (const char *)s, str_len);
+ #elif defined(SW_UART_DEBUG)
+ if (hal_uart_get_funcs(SW_DEBUG_UART_BUS) == NULL) {
+ return;
+ }
+ uapi_uart_write(SW_DEBUG_UART_BUS, (const void *)s, (uint32_t)str_len, 0);
+ #else
+ #endif
+ }
+
+ void hal_uart_clear_pending(uart_bus_t uart)
+ {
+ switch (uart) {
+ case UART_BUS_0:
+ int_clear_pending_irq(UART_0_IRQN);
+ break;
+ case UART_BUS_1:
+ int_clear_pending_irq(UART_1_IRQN);
+ break;
+ default:
+ break;
+ }
+ }
+
+ #if defined(CONFIG_UART_SUPPORT_DMA)
+ uint8_t uart_port_get_dma_trans_dest_handshaking(uart_bus_t bus)
+ {
+ switch (bus) {
+ case UART_BUS_0:
+ return (uint8_t)HAL_DMA_HANDSHAKING_UART_L_TX;
+ case UART_BUS_1:
+ return (uint8_t)HAL_DMA_HANDSHAKING_UART_H0_TX;
+ default:
+ return (uint8_t)HAL_DMA_HANDSHAKING_MAX_NUM;
+ }
+ }
+
+ uint8_t uart_port_get_dma_trans_src_handshaking(uart_bus_t bus)
+ {
+ switch (bus) {
+ case UART_BUS_0:
+ return (uint8_t)HAL_DMA_HANDSHAKING_UART_L_RX;
+ case UART_BUS_1:
+ return (uint8_t)HAL_DMA_HANDSHAKING_UART_H0_RX;
+ default:
+ return (uint8_t)HAL_DMA_HANDSHAKING_MAX_NUM;
+ }
+ }
+ #endif /* CONFIG_UART_SUPPORT_DMA */
+
+ uint32_t uart_porting_lock(uart_bus_t bus)
+ {
+ #ifndef BUILD_APPLICATION_SSB
+ if ((g_uart_config[bus].support_mutex == true) && (osKernelGetState() == osKernelRunning) &&
+ (osal_in_interrupt() == 0)) {
+ return (uint32_t)osal_mutex_lock_timeout(&(g_uart_config[bus].uart_mutex), OSAL_MUTEX_WAIT_FOREVER);
+ }
+ #else
+ UNUSED(bus);
+ #endif
+ return ERRCODE_SUCC;
+ }
+
+ void uart_porting_unlock(uart_bus_t bus, uint32_t irq_sts)
+ {
+ #ifndef BUILD_APPLICATION_SSB
+ unused(irq_sts);
+ if ((g_uart_config[bus].support_mutex == true) && (osKernelGetState() == osKernelRunning) &&
+ (osal_in_interrupt() == 0)) {
+ osal_mutex_unlock(&(g_uart_config[bus].uart_mutex));
+ }
+ #else
+ UNUSED(bus);
+ UNUSED(irq_sts);
+ #endif
+ }
+
+ void uart_save_reg(uart_bus_t bus)
+ {
+ uint32_t base = uart_porting_base_addr_get(bus);
+ g_uart_recovery_reg[bus].uartilpr = readw(base + UARTILPR);
+ g_uart_recovery_reg[bus].uartibrd = readw(base + UARTIBRD);
+ g_uart_recovery_reg[bus].uartfbrd = readw(base + UARTFBRD);
+ g_uart_recovery_reg[bus].uartlcr_h = readw(base + UARTLCRH);
+ g_uart_recovery_reg[bus].uartcr = readw(base + UARTCR);
+ g_uart_recovery_reg[bus].uartifls = readw(base + UARTIFLS);
+ g_uart_recovery_reg[bus].uartimsc = readw(base + UARTIMSC);
+ g_uart_recovery_reg[bus].uartdmacr = readw(base + UARTDMACR);
+ }
+
+ void uart_recovery_reg(uart_bus_t bus)
+ {
+ uint16_t uart_bit = UARTBUS0;
+ if (bus == UART_BUS_0) {
+ uart_bit = UARTBUS0;
+ } else if (bus == UART_BUS_1) {
+ uart_bit = UARTBUS1;
+ }
+ reg16_clrbit(UARTRESET, uart_bit);
+ reg16_setbit(UARTRESET, uart_bit);
+ uint32_t base = uart_porting_base_addr_get(bus);
+ writew(base + UARTILPR, g_uart_recovery_reg[bus].uartilpr);
+ writew(base + UARTIBRD, g_uart_recovery_reg[bus].uartibrd);
+ writew(base + UARTFBRD, g_uart_recovery_reg[bus].uartfbrd);
+ writew(base + UARTLCRH, g_uart_recovery_reg[bus].uartlcr_h);
+ writew(base + UARTCR, g_uart_recovery_reg[bus].uartcr);
+ writew(base + UARTIFLS, g_uart_recovery_reg[bus].uartifls);
+ writew(base + UARTIMSC, g_uart_recovery_reg[bus].uartimsc);
+ writew(base + UARTDMACR, g_uart_recovery_reg[bus].uartdmacr);
+ }
+
+ void uart_h0_suspend(void)
+ {
+ uart_save_reg(UART_BUS_0);
+ }
+
+ void uart_h0_resume(void)
+ {
+ uart_recovery_reg(UART_BUS_0);
+ }
+
+ void uart_h1_suspend(void)
+ {
+ uart_save_reg(UART_BUS_1);
+ }
+
+ void uart_h1_resume(void)
+ {
+ uart_recovery_reg(UART_BUS_1);
+ }
\ No newline at end of file