/** * @file board.h * @author xxx * @date 2023-08-30 14:05:55 * @brief 头文件 board.h * @copyright Copyright (c) 2023 by xxx, All Rights Reserved. */ #ifndef __BOARD_H__ #define __BOARD_H__ #include "main.h" #include "bsp.h" #include "tim.h" #include "lcds.h" #include "menu.h" #include "rtc_rx8010.h" #include "eeprom_m95.h" #include "eeprom_fm24.h" #include "eeprom_lc02b.h" #include "ntc_3950.h" #include "leds.h" #define APP_PRELOAD_AREA 0x10007FF0 ///< 预加载区域 #define VREF_VALUE 3000 ///< 参考电压mV #define FONT_TYPE FONT_0816 ///< 字体类型 #define BLE_EN_ENABLE() GPIO_SET(BLE_PWR_GPIO_Port, BLE_PWR_Pin) ///< 蓝牙使能 #define BLE_EN_DISABLE() GPIO_RESET(BLE_PWR_GPIO_Port, BLE_PWR_Pin) ///< 蓝牙禁用 #define BLE_IS_ENABLE() (GPIO_READ(BLE_PWR_GPIO_Port, BLE_PWR_Pin) == SET) ///< 蓝牙使能状态 #define LCD_DMA DMA1 ///< LCD DMA #define LCD_DMA_TX_CHANNEL LL_DMA_CHANNEL_5 ///< LCD DMA发送通道 #define LCD_POWER_ON() GPIO_SET(LCD_PWR_GPIO_Port, LCD_PWR_Pin) ///< LCD电源使能 #define LCD_POWER_OFF() GPIO_RESET(LCD_PWR_GPIO_Port, LCD_PWR_Pin) ///< LCD电源禁用 #define LCD_IS_POWER_ON() (GPIO_READ(LCD_PWR_GPIO_Port, LCD_PWR_Pin) == SET) ///< LCD电源使能状态 #define LCD_DETECT() (0) ///< LCD检测,高电平没有接入,低电平接入 #define BP_S_POWER_ON() GPIO_SET(BP_S_PWR_GPIO_Port, BP_S_PWR_Pin) #define BP_S_POWER_OFF() GPIO_RESET(BP_S_PWR_GPIO_Port, BP_S_PWR_Pin) #define BP_S_IS_POWER_ON() (GPIO_READ(BP_S_PWR_GPIO_Port, BP_S_PWR_Pin) == SET) #define BP_A_POWER_ON() GPIO_SET(BP_A_PWR_GPIO_Port, BP_A_PWR_Pin) #define BP_A_POWER_OFF() GPIO_RESET(BP_A_PWR_GPIO_Port, BP_A_PWR_Pin) #define BP_A_IS_POWER_ON() (GPIO_READ(BP_A_PWR_GPIO_Port, BP_A_PWR_Pin) == SET) #define BP_B_POWER_ON() GPIO_SET(BP_B_PWR_GPIO_Port, BP_B_PWR_Pin) #define BP_B_POWER_OFF() GPIO_RESET(BP_B_PWR_GPIO_Port, BP_B_PWR_Pin) #define BP_B_IS_POWER_ON() (GPIO_READ(BP_B_PWR_GPIO_Port, BP_B_PWR_Pin) == SET) /// 禁用 I/P 电流输出 0-6.2V #define VIP_H_EN_DISABLE() \ do \ { \ GPIO_RESET(IP_H_PWR_GPIO_Port, IP_H_PWR_Pin); \ GPIO_SET_ANALOG(IP_H_PWR_GPIO_Port, IP_H_PWR_Pin); \ } while (0) /// 使能 I/P 电流输出 0-6.2V #define VIP_H_EN_ENABLE() \ do \ { \ GPIO_SET_OUTPUT(IP_H_PWR_GPIO_Port, IP_H_PWR_Pin); \ GPIO_SET(IP_H_PWR_GPIO_Port, IP_H_PWR_Pin); \ } while (0) // PWM对外输出 #define PWM_CTRL_OUTPUT(out) PWM_SET_DUTY(TIM3, 3, out) /* HART */ #define HART_EN_ENABLE() GPIO_SET(HART_PWR_GPIO_Port, HART_PWR_Pin) ///< HART使能 #define HART_EN_DISABLE() GPIO_RESET(HART_PWR_GPIO_Port, HART_PWR_Pin) ///< HART禁用 #define HART_IS_ENABLE() (GPIO_READ(HART_PWR_GPIO_Port, HART_PWR_Pin) == SET) ///< HART使能状态 #define HART_RST_ON() GPIO_SET(HART_RST_GPIO_Port, HART_RST_Pin) #define HART_RST_OFF() GPIO_RESET(HART_RST_GPIO_Port, HART_RST_Pin) #define HART_RTS_ON() GPIO_SET(HART_RTS_GPIO_Port, HART_RTS_Pin) #define HART_RTS_OFF() GPIO_RESET(HART_RTS_GPIO_Port, HART_RTS_Pin) /* HART */ /* SWO */ #define SWO1_OPEN() GPIO_SET(SWO1_GPIO_Port, SWO1_Pin) ///< SWO1 开 #define SWO1_CLOSE() GPIO_RESET(SWO1_GPIO_Port, SWO1_Pin) ///< SWO1 关 #define SWO2_OPEN() GPIO_SET(SWO2_GPIO_Port, SWO2_Pin) ///< SWO2 开 #define SWO2_CLOSE() GPIO_RESET(SWO2_GPIO_Port, SWO2_Pin) ///< SWO2 关 typedef enum { FILTER_AVERAGE = 1, FILTER_MEDIAN, } filter_e; extern const uint32_t NTC_100K_B3950_List[]; extern lcd_t *lcd; // LCD句柄 extern volatile uint8_t app_preload_flag; ///< 预加载标志位 extern volatile uint8_t app_preload_language_flag; ///< 语言标志位 extern void board_init(void); ///< 板卡初始化 extern void driver_init(void); ///< 功耗引脚初始化 extern void driver_dinit(void); ///< 功耗引脚反初始化 extern void lcd_init(void); ///< LCD初始化 extern void lcd_dinit(void); ///< LCD反初始化 void GUI_Flush(void); ///< LCD刷新 void GUI_Flush_Clear(void); ///< LCD刷新并清屏 extern void gui_clr(void); ///< 清屏 extern void gui_full(void); ///< 全屏黑色 extern void gui_open(void); ///< 打开GUI extern void gui_close(void); ///< 关闭GUI extern void gui_set_scandir(void); ///< 设置扫描方向 extern void gui_set_clear_flag(void); ///< 设置清屏标志 extern BOOL gui_get_clear_flag(void); ///< 获取清屏标志 extern uint16_t get_dac(float32 output); ///< 根据目标行程计算DAC输出理论值 extern void pwm_output_position(float32 position_per); ///< PWM输出阀位百分比 extern void calib_parapos_perent(void); ///< 计算阀门位置校准参数 extern uint16_t get_actual_travel_adc_average(void); ///< 获取当前实际行程ADC值 extern uint16_t get_actual_travel_adc(void); ///< 获取当前实际行程ADC值 extern float32 get_actual_travel(filter_e filter); ///< 获取当前实际行程 extern float32 get_current(void); ///< 获取当前回路电流 extern float32 get_current_deal(float32 current); ///< 获取当前回路电流 extern float32 get_temperature(void); ///< 获取当前温度值 extern void get_pressure(void); ///< 获取当前压力 extern void get_timestamp(uDateTime_TypeDef *time); ///< 获取时间戳 extern void set_pwm_calib_current(void); ///< 设置输出PWM校准电流 extern void set_loop_4ma(void); ///< 设置回路电流4mA extern void set_loop_20ma(void); ///< 设置回路电流20mA extern void set_200kpa(void); ///< 设置200kpa extern void set_400kpa(void); ///< 设置400kpa extern void set_output_4ma_pwm(uint16_t value); ///< 设置输出4mA时的PWM值 extern void set_output_20ma_pwm(uint16_t value); ///< 设置输出20mA时的PWM值 extern void set_app_preload_language_flag(uint8_t language); ///< 设置预加载语言标志位 /************************************** 通过电阻测算,只在测试程序中使用 **************************************/ extern float32 loop_current_convert(uint16_t adc); ///< 回路电流检测转换 extern float32 ip_dac2current(uint16_t dac); ///< IP输出电流值转换 extern float32 ip2current(void); ///< IP输出电流值转换 extern void pwm_duty2current(float32 cur_ma); ///< PWM输出电流值转换 #endif // __BOARD_H__