#ifndef _BOARD_H_ #define _BOARD_H_ #include "Uart.h" #include "Timer.h" #include "flash.h" #include "fifo.h" #include "timeout.h" #include "I2C.h" #include "epprom.h" #include "rtc.h" #include "key.h" #define PORT_MAX_NUM 64 #define SEL_74CH165 1 #define USE_PORT_ID 0 enum { CEN = 0x01, CLK = 0x02, PLN = 0x03, }; enum { PORT_00 = 0x01, PORT_01 = 0x02, PORT_02 = 0x04, PORT_03 = 0x08, PORT_ALL = 0x0F, }; typedef struct port_msg_{ uint32_t group; uint32_t cePin; uint32_t doutPin; uint32_t cpPin; uint32_t plPin; }PortMsg; extern PortMsg g_portMsg[4]; /*--------------------------------------------------------------- * PORT1: COM65 ----- CS0 PD0 (in) * DOUT ----- CS1 PD1 (in) * PL ----- CS2 PD2 (out) * CP ----- CS3 PD3 (out) * DIN ----- CS4 PD4 (没有用到) * CE_N ----- CS5 PD5 (out) * COM1 ----- CS6 PD6 (in) * ---------------------------------------------------------------*/ #define CEN_NSS_LOW_01() gpio_bit_reset(GPIOD, GPIO_PIN_5) #define CEN_NSS_HIGH_01() gpio_bit_set(GPIOD, GPIO_PIN_5) #define OUT_H165_01() gpio_input_bit_get(GPIOD, GPIO_PIN_1) #define CLK_LOW_01() gpio_bit_reset(GPIOD, GPIO_PIN_3) #define CLK_HIGH_01() gpio_bit_set(GPIOD, GPIO_PIN_3) #define PLN_LOW_01() gpio_bit_reset(GPIOD, GPIO_PIN_2) #define PLN_HIGH_01() gpio_bit_set(GPIOD, GPIO_PIN_2) /*--------------------------------------------------------------- * PORT2: COM65 ----- AD0 PE0 (in) * DOUT ----- AD1 PE1 (in) * PL ----- AD2 PE2 (out) * CP ----- AD3 PE3 (out) * DIN ----- AD4 PE4 (没有用到) * CE_N ----- AD5 PE5 (out) * COM1 ----- AD6 PE6 (in) * ---------------------------------------------------------------*/ #define CEN_NSS_LOW_02() gpio_bit_reset(GPIOE, GPIO_PIN_5) #define CEN_NSS_HIGH_02() gpio_bit_set(GPIOE, GPIO_PIN_5) #define OUT_H165_02() gpio_input_bit_get(GPIOE, GPIO_PIN_1) #define CLK_LOW_02() gpio_bit_reset(GPIOE, GPIO_PIN_3) #define CLK_HIGH_02() gpio_bit_set(GPIOE, GPIO_PIN_3) #define PLN_LOW_02() gpio_bit_reset(GPIOE, GPIO_PIN_2) #define PLN_HIGH_02() gpio_bit_set(GPIOE, GPIO_PIN_2) /*--------------------------------------------------------------- * PORT3: COM65 ----- CS15 PD8 (in) * DOUT ----- CS14 PD9 (in) * PL ----- CS13 PD10 (out) * CP ----- CS12 PD11 (out) * DIN ----- CS11 PD12 (没有用到) * CE_N ----- CS10 PD13 (out) * COM1 ----- CS6 PD6 (in) * ---------------------------------------------------------------*/ #define CEN_NSS_LOW_03() gpio_bit_reset(GPIOD, GPIO_PIN_13) #define CEN_NSS_HIGH_03() gpio_bit_set(GPIOD, GPIO_PIN_13) #define OUT_H165_03() gpio_input_bit_get(GPIOD, GPIO_PIN_9) #define CLK_LOW_03() gpio_bit_reset(GPIOD, GPIO_PIN_11) #define CLK_HIGH_03() gpio_bit_set(GPIOD, GPIO_PIN_11) #define PLN_LOW_03() gpio_bit_reset(GPIOD, GPIO_PIN_10) #define PLN_HIGH_03() gpio_bit_set(GPIOD, GPIO_PIN_10) /*--------------------------------------------------------------- * Port4: COM65 ----- AD09 PE09 (in) * DOUT ----- AD10 PE10 (in) * PL ----- AD11 PE11 (out) * CP ----- AD12 PE12 (out) * DIN ----- AD13 PE13 (没有用到) * CE_N ----- AD14 PE14 (out) * COM1 ----- AD15 PE15 (in) * ---------------------------------------------------------------*/ #define CEN_NSS_LOW_P4() gpio_bit_reset(GPIOE, GPIO_PIN_14) #define CEN_NSS_HIGH_P4() gpio_bit_set(GPIOE, GPIO_PIN_14) #define OUT_H165_P4() gpio_input_bit_get(GPIOE, GPIO_PIN_10) #define CLK_LOW_P4() gpio_bit_reset(GPIOE, GPIO_PIN_12) #define CLK_HIGH_P4() gpio_bit_set(GPIOE, GPIO_PIN_12) #define PLN_LOW_P4() gpio_bit_reset(GPIOE, GPIO_PIN_11) #define PLN_HIGH_P4() gpio_bit_set(GPIOE, GPIO_PIN_11) enum _RESET_FLAG_{ RESET_PINRST = 0x01, // NRST 引脚复位 RESET_PORRSTF = 0x02, // 上电掉电复位 RESET_SFTRSTF = 0x04, // 软件复位 RESET_IWDGRSTF = 0x08, //独立看门狗复位 RESET_WWDGRSTF = 0x10, // 窗口看门狗复位 RESET_LPWRRSTF = 0x20, // 低功耗复位 }; typedef struct { uint32_t tick; uint8_t status; }ExitTest; typedef struct { ExitTest exittest[25]; uint32_t count; uint8_t btestStart; uint32_t width[20]; // uint8_t wCount; // }TestInitConut; extern TestInitConut testcount; typedef struct gpio_exti_{ uint32_t csGroup; // 片选组GPIOD GPIOC GPIOB uint32_t csPin; // 具体的管脚 exti_line_enum extiLine; // 中断标志脚 comm uint32_t extiPin; // 中断管脚 comm uint8_t extiPinSource; // uint8_t extiIRQn; // 中断源 uint8_t outputPort; }__attribute__((packed))extiMsg_t; extern extiMsg_t g_extimsg; // 中断信息 typedef enum { IDENTITY_SLAVE = 0x01, // 从设备 IDENTITY_MASTER = 0x02, // 主设备 }Identity; extern Identity g_iDentity; // 身份信息 主或从 typedef struct _dev_reset_msg_{ uint8_t resetflag; uint32_t resetNum; }__attribute__((packed))DevResetMsg; extern DevResetMsg g_devResetMsg; typedef struct _dev_pt_msg_{ uint16_t firstPowerUp; // 是否为第一次上电 0x5A5A 说明已经上过电 uint8_t eepromVer; // eeprom 的版本 uint8_t binit; // 是否初始化 uint32_t devSn; // 设备SN uint16_t devType1; // 设备类型 uint16_t devfactory; // 设备厂家信息 uint16_t seqNo ; // 生产批次号 uint32_t data; // 生产日期 uint8_t pcbVersion; // 硬件(PCB)版本 uint32_t sqare; //备用 }__attribute__((packed))DevPtMsg; extern DevPtMsg g_devPtMsg; typedef struct _dev_app_version_{ uint32_t bootVer; uint32_t ptVer; uint32_t app1Ver; uint32_t app2Ver; uint32_t app3Ver; }__attribute__((packed))DevAppVersion; extern DevAppVersion g_devAppVer; extern void set_port_pin(uint8_t cmd,uint8_t index); extern void set_port_all_pin(uint8_t cmd,uint8_t index); extern void reset_port_pin(uint8_t cmd,uint8_t index); extern void reset_port_all_pin(uint8_t cmd,uint8_t index);//0x01 02 04 08 extern uint8_t read_daout_pin(uint8_t index); extern void exti_gpio_init(void); extern void init_fwdgt_timer(void); extern void fwdgt_feed(uint32_t tickt); extern void board_init(void); extern void uart_init(void); extern void init_4g_power_up(void); extern uint32_t power_up_system_resettype(void); #endif