This repository has been archived on 2025-02-28. You can view files and clone it, but cannot push or open issues or pull requests.
controller-hd/User/board/inc/board.h

141 lines
6.9 KiB
C
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/**
* @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__