183 lines
11 KiB
C
183 lines
11 KiB
C
/**
|
||
* @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 "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 ///< 字体类型
|
||
|
||
#ifndef ADC_MAX
|
||
#define ADC_MAX 4095 //< ADC最大
|
||
#endif
|
||
#ifndef DAC_MAX
|
||
#define DAC_MAX 4095 //< DAC最大
|
||
#endif
|
||
|
||
#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;
|
||
|
||
typedef enum
|
||
{
|
||
BOARD_CACHE_1 = 0,
|
||
BOARD_CACHE_2,
|
||
BOARD_CACHE_MAX,
|
||
} board_cache_e;
|
||
|
||
typedef enum
|
||
{
|
||
// 不需要跳转到bootload
|
||
APP_PRELOAD_BOOTLOAD_JUMP_NONE = 0,
|
||
// 更新完成等待用户通知跳转到bootload
|
||
APP_PRELOAD_BOOTLOAD_JUMP_WAIT = 1,
|
||
// 更新完成立即跳转到bootload
|
||
APP_PRELOAD_BOOTLOAD_JUMP_IMMEDIATELY,
|
||
} app_preload_bootload_jump_e; ///< 预加载BOOTLOAD跳转标志
|
||
|
||
extern const uint32_t NTC_100K_B3950_List[];
|
||
extern __IO uint8_t app_preload_flag; ///< 预加载标志位
|
||
extern __IO uint8_t app_preload_language_flag; ///< 语言标志位
|
||
extern __IO uint8_t app_preload_bootload_flag; ///< 触发BOOTLOAD启动标志(在用户代码中接受代码文件)
|
||
extern __IO uint8_t app_preload_bootload_jump_flag; ///< 触发BOOTLOAD跳转标志(在用户代码中接受代码文件)
|
||
extern __IO uint32_t app_preload_cupid_encrypt; ///< CPU加密值
|
||
|
||
extern void board_init(void); ///< 板卡初始化
|
||
extern void board_dinit(void); ///< 板卡反初始化
|
||
extern void board_work_stop_or_run(void); ///< 板卡工作停止或运行
|
||
extern void board_cache_reset(void); ///< 板卡缓存复位
|
||
extern uint16_t board_cache_get(board_cache_e index); ///< 板卡缓存获取
|
||
extern void driver_init(void); ///< 功耗引脚初始化
|
||
extern void driver_dinit(void); ///< 功耗引脚反初始化
|
||
extern void lcd_init(void); ///< LCD初始化
|
||
extern void lcd_dinit(void); ///< LCD反初始化
|
||
extern void system_clock_config_set_flag(BOOL flag); ///< 设置系统时钟配置标志
|
||
extern void system_clock_config_low(void); ///< 系统时钟配置低频
|
||
extern void system_clock_config_hight(void); ///< 系统时钟配置高频
|
||
extern void gui_flush(void); ///< LCD刷新
|
||
extern 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(uint8_t dir); ///< 设置扫描方向
|
||
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_loop(void); ///< 校准回路电流
|
||
extern void calib_kpa(void); ///< 校准压力
|
||
extern void calib_pwm_out(void); ///< 校准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_actual_travel_2(filter_e filter); ///< 获取当前实际行程
|
||
extern float32 get_current(void); ///< 获取当前回路电流
|
||
extern float32 get_current_deal(float32 current); ///< 获取当前回路电流
|
||
extern float32 get_temperature(void); ///< 获取当前温度值
|
||
extern float32 get_pressure(pressure_index_e id); ///< 获取当前压力
|
||
extern float32 get_flow(void); ///< 获取当前流量
|
||
extern void get_timestamp(uDateTime_TypeDef *time); ///< 获取时间戳
|
||
extern void get_real_time(uint8_t *year, uint8_t *month, uint8_t *day, uint8_t *hour, uint8_t *min, uint8_t *sec); ///< 获取实时时间
|
||
extern void set_real_time(uint8_t year, uint8_t month, uint8_t day, uint8_t hour, uint8_t min, uint8_t sec);
|
||
extern BOOL get_app_preload_bootload_flag(void); ///< 获取预加载BOOTLOAD标志位
|
||
extern app_preload_bootload_jump_e get_app_preload_bootload_jump_flag(void); ///< 获取预加载BOOTLOAD跳转标志
|
||
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 void set_app_preload_bootload_flag(uint8_t flag); ///< 设置预加载BOOTLOAD标志位
|
||
extern void set_app_preload_bootload_jump_flag(app_preload_bootload_jump_e flag); ///< 设置预加载BOOTLOAD标志位
|
||
|
||
/************************************** 通过电阻测算,只在测试程序中使用 **************************************/
|
||
extern float32 actual_adc_convert_percent(uint16_t adc); ///< 实际行程ADC值转换为百分比
|
||
extern float32 loop_current_convert(uint16_t adc); ///< 回路电流检测转换
|
||
extern float32 ip_dac2current(uint16_t dac); ///< DAC:IP输出电流值转换
|
||
extern float32 ip2current(void); ///< IP输出电流值转换
|
||
extern void pwm_duty2current(float32 cur_ma); ///< PWM输出电流值转换
|
||
|
||
#endif // __BOARD_H__
|