#ifndef __BSP_BMP390_H #define __BSP_BMP390_H #include "CH58x_common.h" #define BMP390_IN_START (0x0001 << 0) #define BMP390_OUT_START (0x0001 << 1) #define BMP390_ATOM_START (0x0001 << 2) #define BMP390_EVT_READ (0x0001 << 3) #define BMP390_IN_READ (0x0001 << 4) #define BMP390_OUT_READ (0x0001 << 5) #define BMP390_ATOM_READ (0x0001 << 6) #define CHECK_EVT_START (0x0001 << 0) #define MOTOR_STOP_EVT (0x0001 << 1) #define AUTO_CLOSE_CHECK_EVT (0x0001 << 2) #define AUTO_CLOSE_TIMEOUT_EVT (0x0001 << 3) #define MICRO_LEAK_CHECK_EVT (0x0001 << 4) // 微泄漏检测事件 #define AUTO_CLOSE_NO_FLOW_THRESHOLD 30 #define AUTO_CLOSE_CHECK_INTERVAL_MS (5 * 60 * 1000) #define AUTO_CLOSE_CHECK_COUNT 6 #define AUTO_CLOSE_TOTAL_TIME_MS (30 * 60 * 1000) #define MICRO_LEAK_CHECK_INTERVAL_MS (10000) // 微泄漏检测间隔(10秒) #define MICRO_LEAK_CHECK_COUNT 6 // 微泄漏检测确认次数(6次,约1分钟) void PRESS_LowPower(void); void BSP_PRESS_Init(void); void Function_Check(void); extern uint8_t volatile fault_state; extern uint8_t keydown_flag; // 安全阈值参数统一定义 #define SAFETY_AUTO_OPEN_THRESHOLD 3 // 自动开阀阈值(连续检测次数) #define SAFETY_MICRO_LEAK_THRESHOLD 5 // 微泄漏检测阈值(连续检测次数) #define SAFETY_MICRO_LEAK_PRESS_DIFF 15 // 微泄漏压力差阈值(Pa),对应流量约0.3L/min #define SAFETY_OVER_TEMP_THRESHOLD 65 // 超温阈值(℃) #define SAFETY_GAS_REQUEST_PRESS_DIFF 50 // 用气请求压力差阈值(Pa) typedef struct { int in_press_raw; int out_press_raw; int8_t in_temp; int8_t out_temp; int8_t atom_temp; int in_press; // 表压 单位Pa int out_press; int atom_press; // 进气端和出气端压力差值 单位Pa int in_out_press_diff; } TsValveRawData; extern TsValveRawData ValveRawData; // 微泄漏检测相关函数 void startMicroLeakDetection(void); #include "bmp3.h" /*! * @brief Function to select the interface between SPI and I2C. * * @param[in] bmp3 : Structure instance of bmp3_dev * @param[in] intf : Interface selection parameter * * @return Status of execution * @retval 0 -> Success * @retval < 0 -> Failure Info */ BMP3_INTF_RET_TYPE BMP390_OUT_InterfaceInit(struct bmp3_dev *bmp3, uint8_t intf); /*! * @brief Function for reading the sensor's registers through I2C bus. * * @param[in] reg_addr : Register address. * @param[out] reg_data : Pointer to the data buffer to store the read data. * @param[in] len : No of bytes to read. * @param[in] intf_ptr : Interface pointer * * @return Status of execution * @retval = BMP3_INTF_RET_SUCCESS -> Success * @retval != BMP3_INTF_RET_SUCCESS -> Failure Info * */ BMP3_INTF_RET_TYPE bmp3_i2c_read(uint8_t reg_addr, uint8_t *reg_data, uint32_t len, void *intf_ptr); /*! * @brief Function for writing the sensor's registers through I2C bus. * * @param[in] reg_addr : Register address. * @param[in] reg_data : Pointer to the data buffer whose value is to be written. * @param[in] len : No of bytes to write. * @param[in] intf_ptr : Interface pointer * * @return Status of execution * @retval = BMP3_INTF_RET_SUCCESS -> Success * @retval != BMP3_INTF_RET_SUCCESS -> Failure Info * */ BMP3_INTF_RET_TYPE bmp3_i2c_write(uint8_t reg_addr, const uint8_t *reg_data, uint32_t len, void *intf_ptr); /*! * @brief Function for reading the sensor's registers through SPI bus. * * @param[in] reg_addr : Register address. * @param[out] reg_data : Pointer to the data buffer to store the read data. * @param[in] len : No of bytes to read. * @param[in] intf_ptr : Interface pointer * * @return Status of execution * @retval = BMP3_INTF_RET_SUCCESS -> Success * @retval != BMP3_INTF_RET_SUCCESS -> Failure Info * */ BMP3_INTF_RET_TYPE BMP390_OUT_SPI_Read(uint8_t reg_addr, uint8_t *reg_data, uint32_t len, void *intf_ptr); /*! * @brief Function for writing the sensor's registers through SPI bus. * * @param[in] reg_addr : Register address. * @param[in] reg_data : Pointer to the data buffer whose data has to be written. * @param[in] len : No of bytes to write. * @param[in] intf_ptr : Interface pointer * * @return Status of execution * @retval = BMP3_INTF_RET_SUCCESS -> Success * @retval != BMP3_INTF_RET_SUCCESS -> Failure Info * */ BMP3_INTF_RET_TYPE BMP390_OUT_SPI_Write(uint8_t reg_addr, const uint8_t *reg_data, uint32_t len, void *intf_ptr); /*! * @brief This function provides the delay for required time (Microsecond) as per the input provided in some of the * APIs. * * @param[in] period : The required wait time in microsecond. * @param[in] intf_ptr : Interface pointer * * @return void. * */ void bmp3_delay_us(uint32_t period, void *intf_ptr); /*! * @brief Prints the execution status of the APIs. * * @param[in] api_name : Name of the API whose execution status has to be printed. * @param[in] rslt : Error code returned by the API whose execution status has to be printed. * * @return void. */ void bmp3_check_rslt(const char api_name[], int8_t rslt); // 新增延时关阀功能相关函数声明 uint8_t isNoFlowDetected(void); void startAutoCloseTimer(void); void stopAutoCloseTimer(void); #endif