#ifndef __BSP_H #define __BSP_H #include #include #include #include #include "hc32_ddl.h" /*版本信息枚举 - 对应Mac[0]的Bit[6:0], Bit[7]固定为1*/ typedef enum { GATEWAY_VER1_0 = 0x01, //网关Ver1.0 GATEWAY_VER2_0 = 0x02, //网关Ver2.0 }GATEWAY_VER_M; /*项目编号枚举 - 对应Mac[1:3](3字节)*/ typedef enum { GATEWAY_PRJ_TEST = 0, //测试项目 GATEWAY_PRJ_AKY, //安科院项目 GATEWAY_PRJ_BJTU, //北交大项目 GATEWAY_PRJ_BALADIAN, //巴拉水电边坡监测项目 GATEWAY_PRJ_TYY1, //铁一院川藏铁路隧道监测项目 GATEWAY_PRJ_TYY2, //铁二院川藏铁路隧道监测项目 GATEWAY_PRJ_YAXIA, //雅下项目 GATEWAY_PRJ_OTHER, //………… }GATEWAY_PRJ_M; /*通道枚举 - 与GateWay APP一致*/ typedef enum { CH_NULL = -1, CH_DBG = 0, CH_RS485_1, CH_RS485_2, CH_ETH, CH_LORA, CH_CAT1, }Channel_m; /*Lora频率:410100000ul + 500000*N,N=0~165,共166个信道(410.1MHz~492.6MHz),用于配置Lora频率更方便*/ [lora-wide宽频版] typedef enum { CH0 = (410100000ul + 0), //410.1MHz CH1 = (410100000ul + 500000), CH2 = (410100000ul + 1000000), CH3 = (410100000ul + 1500000), CH4 = (410100000ul + 2000000), CH5 = (410100000ul + 2500000), CH6 = (410100000ul + 3000000), CH7 = (410100000ul + 3500000), CH8 = (410100000ul + 4000000), CH9 = (410100000ul + 4500000), CH10 = (410100000ul + 5000000), CH11 = (410100000ul + 5500000), CH12 = (410100000ul + 6000000), CH13 = (410100000ul + 6500000), CH14 = (410100000ul + 7000000), CH15 = (410100000ul + 7500000), CH16 = (410100000ul + 8000000), CH17 = (410100000ul + 8500000), CH18 = (410100000ul + 9000000), CH19 = (410100000ul + 9500000), CH20 = (410100000ul + 10000000), CH21 = (410100000ul + 10500000), CH22 = (410100000ul + 11000000), CH23 = (410100000ul + 11500000), CH24 = (410100000ul + 12000000), CH25 = (410100000ul + 12500000), CH26 = (410100000ul + 13000000), CH27 = (410100000ul + 13500000), CH28 = (410100000ul + 14000000), CH29 = (410100000ul + 14500000), CH30 = (410100000ul + 15000000), CH31 = (410100000ul + 15500000), CH32 = (410100000ul + 16000000), CH33 = (410100000ul + 16500000), CH34 = (410100000ul + 17000000), CH35 = (410100000ul + 17500000), CH36 = (410100000ul + 18000000), CH37 = (410100000ul + 18500000), CH38 = (410100000ul + 19000000), CH39 = (410100000ul + 19500000), CH40 = (410100000ul + 20000000), CH41 = (410100000ul + 20500000), CH42 = (410100000ul + 21000000), CH43 = (410100000ul + 21500000), CH44 = (410100000ul + 22000000), CH45 = (410100000ul + 22500000), CH46 = (410100000ul + 23000000), CH47 = (410100000ul + 23500000), CH48 = (410100000ul + 24000000), CH49 = (410100000ul + 24500000), CH50 = (410100000ul + 25000000), CH51 = (410100000ul + 25500000), CH52 = (410100000ul + 26000000), CH53 = (410100000ul + 26500000), CH54 = (410100000ul + 27000000), CH55 = (410100000ul + 27500000), CH56 = (410100000ul + 28000000), CH57 = (410100000ul + 28500000), CH58 = (410100000ul + 29000000), CH59 = (410100000ul + 29500000), CH60 = (410100000ul + 30000000), CH61 = (410100000ul + 30500000), CH62 = (410100000ul + 31000000), CH63 = (410100000ul + 31500000), CH64 = (410100000ul + 32000000), CH65 = (410100000ul + 32500000), CH66 = (410100000ul + 33000000), CH67 = (410100000ul + 33500000), CH68 = (410100000ul + 34000000), CH69 = (410100000ul + 34500000), CH70 = (410100000ul + 35000000), CH71 = (410100000ul + 35500000), CH72 = (410100000ul + 36000000), CH73 = (410100000ul + 36500000), CH74 = (410100000ul + 37000000), CH75 = (410100000ul + 37500000), CH76 = (410100000ul + 38000000), CH77 = (410100000ul + 38500000), CH78 = (410100000ul + 39000000), CH79 = (410100000ul + 39500000), CH80 = (410100000ul + 40000000), CH81 = (410100000ul + 40500000), CH82 = (410100000ul + 41000000), CH83 = (410100000ul + 41500000), CH84 = (410100000ul + 42000000), CH85 = (410100000ul + 42500000), CH86 = (410100000ul + 43000000), CH87 = (410100000ul + 43500000), CH88 = (410100000ul + 44000000), CH89 = (410100000ul + 44500000), CH90 = (410100000ul + 45000000), CH91 = (410100000ul + 45500000), CH92 = (410100000ul + 46000000), CH93 = (410100000ul + 46500000), CH94 = (410100000ul + 47000000), CH95 = (410100000ul + 47500000), CH96 = (410100000ul + 48000000), CH97 = (410100000ul + 48500000), CH98 = (410100000ul + 49000000), CH99 = (410100000ul + 49500000), CH100 = (410100000ul + 50000000), CH101 = (410100000ul + 50500000), CH102 = (410100000ul + 51000000), CH103 = (410100000ul + 51500000), CH104 = (410100000ul + 52000000), CH105 = (410100000ul + 52500000), CH106 = (410100000ul + 53000000), CH107 = (410100000ul + 53500000), CH108 = (410100000ul + 54000000), CH109 = (410100000ul + 54500000), CH110 = (410100000ul + 55000000), CH111 = (410100000ul + 55500000), CH112 = (410100000ul + 56000000), CH113 = (410100000ul + 56500000), CH114 = (410100000ul + 57000000), CH115 = (410100000ul + 57500000), CH116 = (410100000ul + 58000000), CH117 = (410100000ul + 58500000), CH118 = (410100000ul + 59000000), CH119 = (410100000ul + 59500000), CH120 = (410100000ul + 60000000), CH121 = (410100000ul + 60500000), CH122 = (410100000ul + 61000000), CH123 = (410100000ul + 61500000), CH124 = (410100000ul + 62000000), CH125 = (410100000ul + 62500000), CH126 = (410100000ul + 63000000), CH127 = (410100000ul + 63500000), CH128 = (410100000ul + 64000000), CH129 = (410100000ul + 64500000), CH130 = (410100000ul + 65000000), CH131 = (410100000ul + 65500000), CH132 = (410100000ul + 66000000), CH133 = (410100000ul + 66500000), CH134 = (410100000ul + 67000000), CH135 = (410100000ul + 67500000), CH136 = (410100000ul + 68000000), CH137 = (410100000ul + 68500000), CH138 = (410100000ul + 69000000), CH139 = (410100000ul + 69500000), CH140 = (410100000ul + 70000000), CH141 = (410100000ul + 70500000), CH142 = (410100000ul + 71000000), CH143 = (410100000ul + 71500000), CH144 = (410100000ul + 72000000), CH145 = (410100000ul + 72500000), CH146 = (410100000ul + 73000000), CH147 = (410100000ul + 73500000), CH148 = (410100000ul + 74000000), CH149 = (410100000ul + 74500000), CH150 = (410100000ul + 75000000), CH151 = (410100000ul + 75500000), CH152 = (410100000ul + 76000000), CH153 = (410100000ul + 76500000), CH154 = (410100000ul + 77000000), CH155 = (410100000ul + 77500000), CH156 = (410100000ul + 78000000), CH157 = (410100000ul + 78500000), CH158 = (410100000ul + 79000000), CH159 = (410100000ul + 79500000), CH160 = (410100000ul + 80000000), CH161 = (410100000ul + 80500000), CH162 = (410100000ul + 81000000), CH163 = (410100000ul + 81500000), CH164 = (410100000ul + 82000000), CH165 = (410100000ul + 82500000), //492.6MHz }LORA_FREQ_M; /*通讯单元通道掩码 - 与GateWay APP一致*/ #define CUCH_CH1 (1 << CH_RS485_1) #define CUCH_CH2 (1 << CH_RS485_2) #define CUCH_ETH (1 << CH_ETH) #define CUCH_LORA (1 << CH_LORA) #define CUCH_CAT1 (1 << CH_CAT1) /*****************************************************************************************/ /*********************************下载前必须检查配置项************************************/ /*当前设备版本/项目选择*/ #define GATEWAY_VER_INFO GATEWAY_VER1_0 //版本信息 #define GATEWAY_PRJ_NUM GATEWAY_PRJ_YAXIA //项目编号 #define GATEWAY_GW_NUM 0x0006 //网关编号(2字节, 1~65535) /*CAT1服务器/Lora配置 - 替代原MAC_ADDR_TYPE编译宏, 在Boot中直接配置*/ #define GATEWAY_SVR_ADDR0 39 //服务器IP[0] #define GATEWAY_SVR_ADDR1 106 //服务器IP[1] #define GATEWAY_SVR_ADDR2 103 //服务器IP[2] #define GATEWAY_SVR_ADDR3 147 //服务器IP[3] #define GATEWAY_SVR_PORT 8086 //服务器端口 #define GATEWAY_LORA_FREQ CH6 //Lora中心频率(可配置为CH0~CH165) /*默认通道配置 - 在Boot中直接配置, 替代原APP硬编码默认值*/ #define GATEWAY_MUCH CH_ETH //主上传通道 #define GATEWAY_AUCH CH_NULL //辅助上传通道 #define GATEWAY_DUCH CH_CAT1 //调试/升级通道 #define GATEWAY_CUCH_MASK CUCH_LORA //通讯单元通道掩码 /*********************************下载前必须检查配置项************************************/ /*****************************************************************************************/ /*Flash分区 - 32KB Boot + APP(0x8000起) + 参数区(0x7C000)*/ #define FLASH_SECTOR_SIZE 0x2000ul //8KB #define FLASH_BASE ((uint32_t)0x00000000) #define FLASH_SIZE (64u * FLASH_SECTOR_SIZE) //512KB #define SRAM_BASE ((uint32_t)0x1FFF8000) #define SRAM_SIZE 0x2F000ul //192KB #define BOOT_SIZE (4 * FLASH_SECTOR_SIZE) //32KB #define APP_ADDRESS (FLASH_BASE + BOOT_SIZE) //0x8000 #define APP_SIZE (58 * FLASH_SECTOR_SIZE) //464KB #define BOOT_PARA_ADDRESS (APP_ADDRESS + APP_SIZE) //0x7C000 #define BOOT_PARA_SIZE (FLASH_SECTOR_SIZE) #define DEBUG 1 #define USE_SD_CARD 0 #define WATCH_DOG 1 //DEBUG USART1 #define DBGUART_IRQn Int006_IRQn #define DBGUART_EI_IRQn Int007_IRQn #define DBG_USART_CH (M4_USART1) #define DBG_USART_RX_PORT (PortA) #define DBG_USART_RX_PIN (Pin11) #define DBG_USART_TX_PORT (PortA) #define DBG_USART_TX_PIN (Pin12) #define DBG_USART_RX_FUNC (Func_Usart1_Rx) #define DBG_USART_TX_FUNC (Func_Usart1_Tx) #define DBG_USART_RI_NUM (INT_USART1_RI) #define DBG_USART_EI_NUM (INT_USART1_EI) #define DBG_FCG1_PERIPH (PWC_FCG1_PERIPH_USART1) //RS485 Ch1 USART2 - 升级通道 #define RS485_CH1_USART_CH (M4_USART2) #define RS485_CH1_USART_RX_PORT (PortA) #define RS485_CH1_USART_RX_PIN (Pin10) #define RS485_CH1_USART_TX_PORT (PortA) #define RS485_CH1_USART_TX_PIN (Pin08) #define RS485_CH1_USART_RX_FUNC (Func_Usart2_Rx) #define RS485_CH1_USART_TX_FUNC (Func_Usart2_Tx) #define RS485_CH1_USART_RI_NUM (INT_USART2_RI) #define RS485_CH1_USART_EI_NUM (INT_USART2_EI) #define RS485_CH1_FCG1_PERIPH (PWC_FCG1_PERIPH_USART2) #define RS485CH1_UART_IRQn Int012_IRQn #define RS485CH1_UART_EI_IRQn Int011_IRQn #define RS485_CH1_CTRL_PORT (PortC) #define RS485_CH1_CTRL_PIN (Pin07) #define RS485_CH1_TX() PORT_SetBits(RS485_CH1_CTRL_PORT, RS485_CH1_CTRL_PIN) #define RS485_CH1_RX() PORT_ResetBits(RS485_CH1_CTRL_PORT, RS485_CH1_CTRL_PIN) //RS485 Ch2 USART3 #define RS485_CH2_USART_CH (M4_USART3) #define RS485_CH2_USART_RX_PORT (PortB) #define RS485_CH2_USART_RX_PIN (Pin14) #define RS485_CH2_USART_TX_PORT (PortB) #define RS485_CH2_USART_TX_PIN (Pin12) #define RS485_CH2_USART_RX_FUNC (Func_Usart3_Rx) #define RS485_CH2_USART_TX_FUNC (Func_Usart3_Tx) #define RS485_CH2_USART_RI_NUM (INT_USART3_RI) #define RS485_CH2_USART_EI_NUM (INT_USART3_EI) #define RS485_CH2_FCG1_PERIPH (PWC_FCG1_PERIPH_USART3) #define RS485CH2_UART_IRQn Int002_IRQn #define RS485CH2_UART_EI_IRQn Int003_IRQn #define RS485_CH2_CTRL_PORT (PortB) #define RS485_CH2_CTRL_PIN (Pin13) #define RS485_CH2_TX() PORT_SetBits(RS485_CH2_CTRL_PORT, RS485_CH2_CTRL_PIN) #define RS485_CH2_RX() PORT_ResetBits(RS485_CH2_CTRL_PORT, RS485_CH2_CTRL_PIN) /*BootLoader参数结构体 - 与GateWay APP一致*/ typedef struct { uint32_t AppFlag; //应用启动标志 uint32_t UpdateFlag; //升级标志 uint32_t PackageCnt; //数据包总数 uint32_t AppSize; //应用程序大小 uint32_t Crc32Check; //CRC32校验值 uint32_t FirstRunFlag; //首次运行标志 uint8_t GwMac[6]; //网关MAC地址 uint8_t SvrAddr[4]; //默认服务器IP地址 uint16_t SvrPort; //默认服务器端口 uint32_t LoraFreq; //默认Lora中心频率 int8_t Much; //主上传通道 int8_t Auch; //辅助上传通道 int8_t Duch; //调试/升级通道 uint8_t CuchMask; //通讯单元通道掩码 }BootPara_t, *BootPara; /*BSP初始化*/ void BSP_Init(void); /*调试串口*/ void DbgUart_Config(uint32_t BaudRate); void DebugUartSend(uint8_t *sData, uint16_t sLen); void DbgRxIrqCallback(uint8_t rData); /*RS485 Ch1 - 升级通道*/ void RS485Ch1_Config(uint32_t BaudRate); void RS485Ch1UartSend(uint8_t *sData, uint16_t sLen); uint8_t RS485Ch1UartRec(void); void RS485Ch1RxIrqCallback(uint8_t rData); /*RS485 Ch2*/ void RS485Ch2_Config(uint32_t BaudRate); void RS485Ch2UartSend(uint8_t *sData, uint16_t sLen); void RS485Ch2RxIrqCallback(uint8_t rData); /*看门狗*/ void FeedDog(void); void Error_Handler(void); /*Flash操作*/ void FlashWrite(uint32_t Addr, uint32_t *wData, uint8_t wLen); void ReadBootPara(BootPara rData); void WriteBootPara(BootPara wData); void EraseFlash(void); #endif