#ifndef __BSP_H__ #define __BSP_H__ #include "gd32f10x.h" #include "queue.h" /////////////////////////////////////////////////////////// extern sequeue_t *uart0_rx_sq; extern sequeue_t *uart3_rx_sq; #ifdef TY_0901 #define DEV_TYPE 0x0901 #define SOFTWARE_VERSION_PT 0X09012002 #elif defined TY_0902 #define DEV_TYPE 0x0902 #define SOFTWARE_VERSION_PT 0X09022002 #elif defined TY_0904 #define DEV_TYPE 0x0904 #define SOFTWARE_VERSION_PT 0X09042001 #endif //读芯片内部信息地址 #define GD32F10X_ID_ADDR 0x1FFFF7E8 #define GD32F30X_ID_ADDR 0x1FFFF7E8 #define GD32F10X_TYPE_ADDR 0xE0042000 #define FRAM_FIRST_POWER_ON 0 // 是否是第一次上电 2个字节 #define FRAM_VERSION (FRAM_FIRST_POWER_ON+sizeof(uint16_t)) // EEPROM 版本 1个字节 #define DEVICE_PUBLIC_INFO_ADDR 0x00 //公共信息存储地址 #define DEVICE_VERSION_INFO_ADDR 0x100 //版本信息存储地址 #define FRAM_MQTT_MSG 0x4C0 //mqtt信息存储地址 //#define IMEI_ADDR 0x40 /* 网关固件信息存储 这个只有在产测时写入,要程序中不再写入*/ typedef struct _GATEWAY_HARDWARE_MSG_{ uint16_t firstPowerUp; // 是否为第一次上电 0x5A5A 说明已经上过电 uint8_t eepromVer; // eeprom 的版本 uint8_t bInit; // 是否初始化过 uint32_t device_sn; // 网关的sn uint16_t devicType; // 类型 uint16_t factoryMsg; // 厂家信息 uint16_t seqNo ; // 生产批次号 uint32_t data; // 生产日期 uint8_t pcbVersion; // 硬件(PCB)版本 // uint32_t sqare; //备用 }__attribute__((packed)) GateHareWareMsg; /* 网关的版本信息*/ typedef struct _GATEWAY_VERSION_MSG_{ uint32_t bootloaderVr; //网关的bootloaderVr uint32_t pt_version; // 产测版本 uint32_t appVr; // appt版本 uint32_t appVr2; // app2的版本 uint32_t appVr3; // app3的版本 }__attribute__((packed)) GateVersionMsg; typedef struct _GATEWAY_MSG_{ GateHareWareMsg hardwareMsg; // GateVersionMsg verMsg; // 版本信息 uint32_t gate_resetnum; //复位次数 uint8_t gate_resetType; //最后一次复位类型 uint32_t gate_runTime; // 运行时长 uint8_t Uuid[12];//UUID uint8_t Imei[15]; //IMEI uint8_t Iccid1[20];//ICCID1 uint8_t Iccid2[20];//ICCID2 uint8_t Iccid3[20];//ICCID3 uint16_t devicTypeID; // 103 303 这个是读取上来的 }__attribute__((packed)) GateWayMsg; /* mqtt IP地址 端口号*/ typedef struct _MQTT_IP_PORT_{ uint8_t flag; char port[6]; // 端口号 char ip[32]; //IP地址 char admin[8]; // 用户名 char password[16]; // 密码 }__attribute__((packed)) MqttIdPort; typedef struct _FIRMWARE_MSG_{ // 固件信息存储 GateWayMsg gatewayMsg; // 网关的信息 MqttIdPort mqttidport; // mqtt的IP地址和端口 }__attribute__((packed)) FirmwareMsg; extern FirmwareMsg g_firmwareMsg; // 网关 采集器固件信息存储 void creat_uart_queue(void); void get_mcu_uuid(void); void get_mcu_TypeIdcode(void); void fram_init(void); void fram_write_eeprom_powerUpFlag(void); uint16_t fram_read_eeprom_powerUpFlag(void); void fram_write_eeprom_version(void); uint8_t fram_read_eeprom_version(void); void fram_init_mqtt_msg(void); void fram_write_mqtt_msg(void); void fram_read_mqtt_msg(void); void fram_read_hardware_msg(void); void fram_write_hardware_msg(void); void fram_init_version(void); void fram_write_version(void); void fram_read_version(void); /////////////////////////////////////////////////////////// #endif