初始版本
This commit is contained in:
@@ -0,0 +1,271 @@
|
||||
#ifndef _BSP_H
|
||||
#define _BSP_H
|
||||
|
||||
#include <stdint.h>
|
||||
#include <stdbool.h>
|
||||
#include <time.h>
|
||||
#include "gpio.h"
|
||||
#include "spi.h"
|
||||
|
||||
/*模块启用与关闭*/
|
||||
#define USE_DEBUG 1 //调试串口选择,0、关闭,1、启用
|
||||
#define USE_VBAT_AD 1 //电池电压AD获取选择,0、关闭,1、启用
|
||||
#define USE_WDT 1 //看门狗选择,0、关闭,1启用
|
||||
#define USE_EXFALSE 0 //外部FALSE存储选择,0、关闭,1、启用
|
||||
#define USE_LED 1 //状态灯选择,0、关闭,1、启用
|
||||
#define USE_RTC 1 //RTC时钟开关,0、关闭,1、开启
|
||||
|
||||
#define USE_LPUART0 1 //LPUART0开关,0、关闭,1、启用
|
||||
#define USE_UART0 1 //UART0开关,0、关闭,1、启用
|
||||
#define USE_UART1 0 //UART0开关,0、关闭,1、启用
|
||||
#define USE_I2C0 1 //I2C0开关,0、关闭,1、启用
|
||||
#define USE_I2C1 1 //I2C1开关,0、关闭,1、启用
|
||||
#define USE_SPI0 1 //SPI1开关,0、关闭,1、启用
|
||||
#define USE_SPI1 0 //SPI1开关,0、关闭,1、启用
|
||||
|
||||
#define USE_BOOTLOADER 1 //BOOTLOADER开关,0、关闭,1、启用
|
||||
#define USE_LORA_CH 1 //0为测试通道
|
||||
|
||||
//<<---------------------------- MCU -------------------------------->>
|
||||
//< UART0
|
||||
#define UART0_TX_PORT GpioPortA
|
||||
#define UART0_TX_PIN GpioPin9
|
||||
#define UART0_TX_AF GpioAf1
|
||||
|
||||
#define UART0_RX_PORT GpioPortA
|
||||
#define UART0_RX_PIN GpioPin10
|
||||
#define UART0_RX_AF GpioAf1
|
||||
|
||||
//< UART1
|
||||
#define UART1_TX_PORT GpioPortF
|
||||
#define UART1_TX_PIN GpioPin0
|
||||
#define UART1_TX_AF GpioAf3
|
||||
|
||||
#define UART1_RX_PORT GpioPortF
|
||||
#define UART1_RX_PIN GpioPin1
|
||||
#define UART1_RX_AF GpioAf3
|
||||
|
||||
//< 低功耗串口
|
||||
#define LPUart0_TxPortx GpioPortB //低功耗串口0通道
|
||||
#define LPUART0_TxPinx GpioPin10 //配置PB10为LPUART0_Tx
|
||||
#define LPUART0_TX_AF GpioAf4
|
||||
|
||||
#define LPUart0_RxPortx GpioPortB //低功耗串口0通道
|
||||
#define LPUART0_RxPinx GpioPin11 //配置PB11为LPUART0_Rx
|
||||
#define LPUART0_RX_AF GpioAf3
|
||||
|
||||
//< SPI0
|
||||
#define SPI0_NSS_PORTx GpioPortA //NSSIO口
|
||||
#define SPI0_NSS_PINx GpioPin15 //配置PA04为NSS
|
||||
#define SET_SPI0_NSS() Gpio_SetIO(SPI0_NSS_PORTx, SPI0_NSS_PINx) //NSS拉高
|
||||
#define CLR_SPI0_NSS() Gpio_ClrIO(SPI0_NSS_PORTx, SPI0_NSS_PINx) //NSS拉低
|
||||
#define SPI0_NSS_AF GpioAf1
|
||||
|
||||
#define SPI0_SCK_PORTx GpioPortB //SCKIO口
|
||||
#define SPI0_SCK_PINx GpioPin3 //配置PA05为SCK
|
||||
#define SET_SPI0_SCK() Gpio_SetIO(SPI0_SCK_PORTx, SPI0_SCK_PINx) //SCK拉高
|
||||
#define CLR_SPI0_SCK() Gpio_ClrIO(SPI0_SCK_PORTx, SPI0_SCK_PINx) //SCK拉低
|
||||
#define SPI0_SCK_AF GpioAf1
|
||||
|
||||
#define SPI0_MISO_PORTx GpioPortB //MISOIO口
|
||||
#define SPI0_MISO_PINx GpioPin4 //配置PA06为MISO
|
||||
#define SET_SPI0_MISO() Gpio_SetIO(SPI0_MISO_PORTx, SPI0_MISO_PINx) //MISO拉高
|
||||
#define CLR_SPI0_MISO() Gpio_ClrIO(SPI0_MISO_PORTx, SPI0_MISO_PINx) //MISO拉低
|
||||
#define SPI0_MISO_AF GpioAf1
|
||||
|
||||
#define SPI0_MOSI_PORTx GpioPortB //MOSIIO口
|
||||
#define SPI0_MOSI_PINx GpioPin5 //配置PA07为MOSI
|
||||
#define SET_SPI0_MOSI() Gpio_SetIO(SPI0_MOSI_PORTx, SPI0_MOSI_PINx) //MOSI拉高
|
||||
#define CLR_SPI0_MOSI() Gpio_ClrIO(SPI0_MOSI_PORTx, SPI0_MOSI_PINx) //MOSI拉低
|
||||
#define SPI0_MOSI_AF GpioAf1
|
||||
|
||||
//< SPI1
|
||||
#define SPI1_NSS_PORTx GpioPortB //NSSIO口
|
||||
#define SPI1_NSS_PINx GpioPin12 //配置PB12为NSS
|
||||
#define SET_SPI1_NSS() Gpio_SetIO(SPI1_NSS_PORTx, SPI1_NSS_PINx) //NSS拉高
|
||||
#define CLR_SPI1_NSS() Gpio_ClrIO(SPI1_NSS_PORTx, SPI1_NSS_PINx) //NSS拉低
|
||||
#define SPI1_NSS_AF GpioAf1
|
||||
|
||||
#define SPI1_SCK_PORTx GpioPortB //SCKIO口
|
||||
#define SPI1_SCK_PINx GpioPin3 //配置PB13为SCK
|
||||
#define SET_SPI1_SCK() Gpio_SetIO(SPI1_SCK_PORTx, SPI1_SCK_PINx) //SCK拉高
|
||||
#define CLR_SPI1_SCK() Gpio_ClrIO(SPI1_SCK_PORTx, SPI1_SCK_PINx) //SCK拉低
|
||||
#define SPI1_SCK_AF GpioAf1
|
||||
|
||||
#define SPI1_MISO_PORTx GpioPortB //MISOIO口
|
||||
#define SPI1_MISO_PINx GpioPin4 //配置PB14为MISO
|
||||
#define SET_SPI1_MISO() Gpio_SetIO(SPI1_MISO_PORTx, SPI1_MISO_PINx) //MISO拉高
|
||||
#define CLR_SPI1_MISO() Gpio_ClrIO(SPI1_MISO_PORTx, SPI1_MISO_PINx) //MISO拉低
|
||||
#define SPI1_MISO_AF GpioAf1
|
||||
|
||||
#define SPI1_MOSI_PORTx GpioPortB //MOSIIO口
|
||||
#define SPI1_MOSI_PINx GpioPin5 //配置PB15为MOSI
|
||||
#define SET_SPI1_MOSI() Gpio_SetIO(SPI1_MOSI_PORTx, SPI1_MOSI_PINx) //MOSI拉高
|
||||
#define CLR_SPI1_MOSI() Gpio_ClrIO(SPI1_MOSI_PORTx, SPI1_MOSI_PINx) //MOSI拉低
|
||||
#define SPI1_MOSI_AF GpioAf1
|
||||
|
||||
//< I2C0
|
||||
#define I2C0_SCL_PORTx GpioPortF //SCL的GPIO通道
|
||||
#define I2C0_SCL_PINx GpioPin1 //SCL的通道位
|
||||
#define I2C0_SCL_AF GpioAf1
|
||||
#define SET_I2C0_SCL() Gpio_SetIO(I2C0_SCL_PORTx, I2C0_SCL_PINx)
|
||||
#define CLR_I2C0_SCL() Gpio_ClrIO(I2C0_SCL_PORTx, I2C0_SCL_PINx)
|
||||
|
||||
#define I2C0_SDA_PORTx GpioPortF //SDA的GPIO通道
|
||||
#define I2C0_SDA_PINx GpioPin0 //SDA的通道位
|
||||
#define I2C0_SDA_AF GpioAf1
|
||||
#define SET_I2C0_SDA() Gpio_SetIO(I2C0_SDA_PORTx, I2C0_SDA_PINx)
|
||||
#define CLR_I2C0_SDA() Gpio_ClrIO(I2C0_SDA_PORTx, I2C0_SDA_PINx)
|
||||
|
||||
//< I2C1
|
||||
#define I2C1_SCL_PORTx GpioPortA //SCL的GPIO通道
|
||||
#define I2C1_SCL_PINx GpioPin11 //SCL的通道位
|
||||
#define I2C1_SCL_AF GpioAf3
|
||||
#define SET_I2C1_SCL() Gpio_SetIO(I2C1_SCL_PORTx, I2C1_SCL_PINx)
|
||||
#define CLR_I2C1_SCL() Gpio_ClrIO(I2C1_SCL_PORTx, I2C1_SCL_PINx)
|
||||
|
||||
#define I2C1_SDA_PORTx GpioPortA //SDA的GPIO通道
|
||||
#define I2C1_SDA_PINx GpioPin12 //SDA的通道位
|
||||
#define I2C1_SDA_AF GpioAf3
|
||||
#define SET_I2C1_SDA() Gpio_SetIO(I2C1_SDA_PORTx, I2C1_SDA_PINx)
|
||||
#define CLR_I2C1_SDA() Gpio_ClrIO(I2C1_SDA_PORTx, I2C1_SDA_PINx)
|
||||
|
||||
//<<---------------------------- 485 -------------------------------->>
|
||||
//< LPUart0
|
||||
#define RS485_CTRL_PORTx GpioPortB //RS485_1通信控制
|
||||
#define RS485_CTRL_PINx GpioPin1 //配置PB02为RS485_1_CTRL
|
||||
#define RS485_CTRL_TX() Gpio_SetIO(RS485_CTRL_PORTx, RS485_CTRL_PINx) //RS485_1_CTRL拉高发送
|
||||
#define RS485_CTRL_RX() Gpio_ClrIO(RS485_CTRL_PORTx, RS485_CTRL_PINx) //RS485_1_CTRL拉低接收
|
||||
|
||||
//<<---------------------------- LED -------------------------------->>
|
||||
//< LED_State
|
||||
#define LED_STATE_PORTx GpioPortF //状态指示灯IO通道
|
||||
#define LED_STATE_PINx GpioPin7 //状态指示灯脚位
|
||||
#define LED_ON() Gpio_SetIO(LED_STATE_PORTx, LED_STATE_PINx);//状态指示灯亮
|
||||
#define LED_OFF() Gpio_ClrIO(LED_STATE_PORTx, LED_STATE_PINx);//状态指示灯灭
|
||||
|
||||
//<<---------------------------- LORA --> SPI0 -------------------------------->>
|
||||
//< LORA --> DIO0
|
||||
#define LORA_DIO0_PORTx GpioPortB //LORA_DIO0口
|
||||
#define LORA_DIO0_PINx GpioPin7 //配置PA01为DIO0
|
||||
#define GET_LORA_DIO0() Gpio_GetInputIO(LORA_DIO0_PORTx, LORA_DIO0_PINx) //获取LORA_DIO0电平状态
|
||||
//< LORA --> DIO1
|
||||
#define LORA_DIO1_PORTx GpioPortB //LORA_DIO0口
|
||||
#define LORA_DIO1_PINx GpioPin0 //配置PA01为DIO0
|
||||
#define GET_LORA_DIO1() Gpio_GetInputIO(LORA_DIO1_PORTx, LORA_DIO1_PINx) //获取LORA_DIO0电平状态
|
||||
|
||||
//< LORA --> RST
|
||||
#define LORA_RST_PORTx GpioPortB //LORA_RST口
|
||||
#define LORA_RST_PINx GpioPin6 //配置PA00为RST
|
||||
#define SET_LORA_RST() Gpio_SetIO(LORA_RST_PORTx, LORA_RST_PINx) //LORA复位脚拉高
|
||||
#define CLR_LORA_RST() Gpio_ClrIO(LORA_RST_PORTx, LORA_RST_PINx) //LORA复位脚拉低
|
||||
|
||||
//<<---------------------------- LSM6DSLTR --> I2C0 -------------------------------->>
|
||||
//< ACC_INT1
|
||||
#define LSM6DSLTR_INT1_PORTx GpioPortC //LSM6DSLTR中断1IO通道
|
||||
#define LSM6DSLTR_INT1_PINx GpioPin15 //配置PB01为ACC_INT1
|
||||
#define GET_LSM6DSLTR_INT1() Gpio_GetInputIO(LSM6DSLTR_INT1_PORTx, LSM6DSLTR_INT1_PINx) //获取ACC_INT1电平状态
|
||||
|
||||
//< ACC_INT2
|
||||
#define LSM6DSLTR_INT2_PORTx GpioPortC //LSM6DSLTR中断1IO通道
|
||||
#define LSM6DSLTR_INT2_PINx GpioPin13 //配置PA08为ACC_INT2
|
||||
#define GET_LSM6DSLTR_INT2() Gpio_GetInputIO(LSM6DSLTR_INT2_PORTx, LSM6DSLTR_INT2_PINx) //获取ACC_INT2电平状态
|
||||
|
||||
//<<---------------------------- MMC5983MA --> I2C0 -------------------------------->>
|
||||
//< MMC0_INT
|
||||
#define MMC5983MA_INT_PORTx GpioPortC //MMC5983MA中断IO通道
|
||||
#define MMC5983MA_INT_PINx GpioPin14 //配置PB00为MMC_INT
|
||||
#define GET_MMC5983MA_INT() Gpio_GetInputIO(MMC5983MA_INT_PORTx, MMC5983MA_INT_PINx) //获取ACC_INT2电平状态
|
||||
|
||||
//<<---------------------------- LASER -------------------------------->>
|
||||
//< LASER1
|
||||
#define LASER1_ON_OFF_PORTx GpioPortB
|
||||
#define LASER1_ON_OFF_PINx GpioPin14
|
||||
#define LASER1_ON() Gpio_SetIO(LASER1_ON_OFF_PORTx, LASER1_ON_OFF_PINx) //LORA复位脚拉高
|
||||
#define LASER1_OFF() Gpio_ClrIO(LASER1_ON_OFF_PORTx, LASER1_ON_OFF_PINx) //LORA复位脚拉低
|
||||
//< LASER2
|
||||
#define LASER2_ON_OFF_PORTx GpioPortB
|
||||
#define LASER2_ON_OFF_PINx GpioPin13
|
||||
#define LASER2_ON() Gpio_SetIO(LASER2_ON_OFF_PORTx, LASER2_ON_OFF_PINx) //LORA复位脚拉高
|
||||
#define LASER2_OFF() Gpio_ClrIO(LASER2_ON_OFF_PORTx, LASER2_ON_OFF_PINx) //LORA复位脚拉低
|
||||
//< LASER3
|
||||
#define LASER3_ON_OFF_PORTx GpioPortB
|
||||
#define LASER3_ON_OFF_PINx GpioPin12
|
||||
#define LASER3_ON() Gpio_SetIO(LASER3_ON_OFF_PORTx, LASER3_ON_OFF_PINx) //LORA复位脚拉高
|
||||
#define LASER3_OFF() Gpio_ClrIO(LASER3_ON_OFF_PORTx, LASER3_ON_OFF_PINx) //LORA复位脚拉低
|
||||
|
||||
//<<------------------------------ ADC ---------------------------------->>
|
||||
#define AD_ON_OFF_PORTx GpioPortA
|
||||
#define AD_ON_OFF_PINx GpioPin3
|
||||
#define AD_ON() Gpio_SetIO(AD_ON_OFF_PORTx, AD_ON_OFF_PINx) //LORA复位脚拉高
|
||||
#define AD_OFF() Gpio_ClrIO(AD_ON_OFF_PORTx, AD_ON_OFF_PINx) //LORA复位脚拉低
|
||||
|
||||
#define VBAT_PORTx GpioPortA
|
||||
#define VBAT_PINx GpioPin4
|
||||
#define VBAT_ADC_PORTx AdcExInputCH4//采样通道
|
||||
#define VBAT_CAL 3.5 //电池电压校准
|
||||
|
||||
//< 电池电压
|
||||
extern float VBAT_8V4;
|
||||
extern uint8_t VBAT_Percentage;
|
||||
|
||||
|
||||
typedef struct {
|
||||
uint16_t CollectTime; //数据采集时间间隔,设置范围30*N秒,1<=N<=240,(默认5分钟,N=10)
|
||||
uint16_t ReportInterval; //上报时间间隔,设置范围,30*N秒,10<=N<=1440(默认20分钟,N=40)
|
||||
uint8_t ERInterval; //紧急上报时间间隔,设置范围,30*N秒,2<=N<=10(默认2分钟,N=4)
|
||||
uint8_t ERTime; //紧急上报时长,设置范围,30*N秒,20<=N<=240(默认20分钟,N=40)
|
||||
uint32_t TimeStamp; //网关返回RTC时间戳
|
||||
}__attribute__((packed))LayoutPara_t,*LayoutPara;//上位机下发的配置参数
|
||||
|
||||
typedef struct {
|
||||
int16_t PitchZero; //俯仰角零点
|
||||
int16_t RollZero; //横滚角零点
|
||||
int16_t YawZero; //偏航角零点
|
||||
}__attribute__ ((packed))CalibratePara_t, *CalibratePara;
|
||||
|
||||
typedef struct {
|
||||
LayoutPara_t Layout;
|
||||
CalibratePara_t CaliPara;
|
||||
uint32_t RS485Addr; //本机485地址
|
||||
uint32_t FactoryFlag;//出厂标志位
|
||||
}AppPara_T, *pAppPara;
|
||||
#define APP_PARA_ADDRESS (0x0001FE00)
|
||||
#define SAVE_APP_PARA(addr) FlashWrite(APP_PARA_ADDRESS, addr, sizeof(App.Para) / 4)
|
||||
#define READ_APP_PARA(addr) FlashRead(APP_PARA_ADDRESS, addr, sizeof(App.Para) / 4)
|
||||
|
||||
void BspInit(void);
|
||||
void EnterDeepSleep(void);
|
||||
void DBGUartSendByte(uint8_t sData);
|
||||
void DBGUartSend(uint8_t *sData, int sLen);
|
||||
void LPUart0SendArray(uint8_t *sData, uint8_t sLen);
|
||||
void Uart1SendArray(uint8_t *sData, uint8_t sLen);
|
||||
|
||||
uint32_t GetSysTick(void);
|
||||
void delay_ms(uint32_t ms);
|
||||
void Delay(uint32_t time);
|
||||
void RTCInit(uint8_t sec);
|
||||
void LPTimer0_ON(uint16_t _100ms);
|
||||
void LPTimer0_OFF(void);
|
||||
void WakeUpInit(void);
|
||||
void FeedDog(void);
|
||||
uint32_t TimeTs(void);
|
||||
void TimeShow(uint32_t dwStamp);
|
||||
void TimeSync(time_t ts);
|
||||
void PrintfMess(void);
|
||||
void SystemReset(void);
|
||||
uint8_t Spi0SendReceive(uint8_t sData);
|
||||
uint8_t Spi1SendReceive(uint8_t sData);
|
||||
void FlashWrite(uint32_t Addr, uint32_t *wData, int wLen);
|
||||
void FlashRead(uint32_t Addr, uint32_t *rData, int rLen);
|
||||
|
||||
void ADCLoopHandler(void);
|
||||
void LORA_RxCallBack(uint8_t *rBuff, uint8_t rlen);
|
||||
|
||||
void GlobalIntEnable(void);
|
||||
void GlobalIntDisable(void);
|
||||
void LORAIntEnable(void);
|
||||
void LORAIntDisable(void);
|
||||
void ACCandMMCIntEnable(void);
|
||||
void ACCandMMCIntDisable(void);
|
||||
#endif
|
||||
Reference in New Issue
Block a user