Files
TXH1.0/User/FRam/FRam.h~RF1bdf050.TMP
T

446 lines
16 KiB
Plaintext
Raw Permalink Normal View History

2026-04-27 16:55:02 +08:00
#ifndef _FRam_H_
#define _FRam_H_
/******************************************************************************
* NAME: fRam.h
*******************************************************************************/
/*_____ M A C R O S __________________________________________________________*/
//端口
#define FM_CS_EN GPIO_ResetBits(GPIOC, GPIO_Pin_6);
#define FM_CS_DIS GPIO_SetBits(GPIOC, GPIO_Pin_6);
#define FM_WP_EN GPIO_ResetBits(GPIOC, GPIO_Pin_7);
#define FM_WP_DIS GPIO_SetBits(GPIOC, GPIO_Pin_7);
//FM 命令
#define FM_WREN 0X06 //读写使能
#define FM_READ 0X03 //读命令
#define FM_WRITE 0X02 //写命令
#define CLI() __set_PRIMASK(1)
#define SEI() __set_PRIMASK(0)
/*_____ M A C R O S __________________________________________________________*/
//CONFIG(配置)
#define FRAM_SPACE_SIZE (0X800) ///定义铁电最大保存容量
#define FristStart_Addr 0
//******************************************************************************
// 存储器内容
#define uniGlobal s_uniGlobal.u
//******************************************************************************
// FRAM_DATA_MAP
//******************************************************************************
#define checkLen_1 0 ///如果数据组带有校验,增加1byte
//==============================================================================
//单价
///全局缓冲中的值
#define buf_Price uniGlobal.Price
///结构体定义
#define Price_FADR 100
#define Price_SADR FRAM_SPACE_SIZE/2+100
#define Price_LEN (sizeof(buf_Price) + checkLen_1)
#define Price_arrayNb gunNumber
//==============================================================================
//班累
///全局缓冲中的值
#define buf_M_SquadTop uniGlobal.M_SquadTop
///结构体定义
#define M_SquadTop_FADR (Price_FADR + Price_LEN)
#define M_SquadTop_SADR (Price_SADR + Price_LEN)
#define M_SquadTop_LEN (sizeof(buf_M_SquadTop) + checkLen_1)
#define M_SquadTop_arrayNb gunNumber
//==============================================================================
//班累
///全局缓冲中的值
#define buf_V_SquadTop uniGlobal.V_SquadTop
///结构体定义
#define V_SquadTop_FADR (M_SquadTop_FADR + M_SquadTop_LEN)
#define V_SquadTop_SADR (M_SquadTop_SADR + M_SquadTop_LEN)
#define V_SquadTop_LEN (sizeof(buf_V_SquadTop) + checkLen_1)
#define V_SquadTop_arrayNb gunNumber
//==============================================================================
//班累
///全局缓冲中的值
#define buf_S_SquadTop uniGlobal.S_SquadTop
///结构体定义
#define S_SquadTop_FADR (V_SquadTop_FADR + V_SquadTop_LEN)
#define S_SquadTop_SADR (V_SquadTop_SADR + V_SquadTop_LEN)
#define S_SquadTop_LEN (sizeof(buf_S_SquadTop) + checkLen_1)
#define S_SquadTop_arrayNb gunNumber
//体积总累
///全局缓冲中的值
#define buf_MassTop uniGlobal.MassTop
///结构体定义
#define MassTop_FADR (S_SquadTop_FADR + S_SquadTop_LEN)
#define MassTop_SADR (S_SquadTop_SADR + S_SquadTop_LEN)
#define MassTop_LEN (sizeof(buf_MassTop) + checkLen_1)
#define MassTop_arrayNb gunNumber
//质量总累
///全局缓冲中的值
#define buf_VolumeTop uniGlobal.VolumeTop
///结构体定义
#define VolumeTop_FADR (MassTop_FADR + MassTop_LEN)
#define VolumeTop_SADR (MassTop_SADR + MassTop_LEN)
#define VolumeTop_LEN (sizeof(buf_VolumeTop) + checkLen_1)
#define VolumeTop_arrayNb gunNumber
//金额总累
///全局缓冲中的值
#define buf_SaleTop uniGlobal.SaleTop
///结构体定义
#define SaleTop_FADR (VolumeTop_FADR + VolumeTop_LEN)
#define SaleTop_SADR (VolumeTop_SADR + VolumeTop_LEN)
#define SaleTop_LEN (sizeof(buf_SaleTop) + checkLen_1)
#define SaleTop_arrayNb gunNumber
//卸车总累
///全局缓冲中的值
#define buf_StockTop uniGlobal.StockTop
///结构体定义
#define StockTop_FADR (SaleTop_FADR + SaleTop_LEN)
#define StockTop_SADR (SaleTop_SADR + SaleTop_LEN)
#define StockTop_LEN (sizeof(buf_StockTop) + checkLen_1)
#define StockTop_arrayNb gunNumber
//小数点
///全局缓冲中的值
#define buf_Decimal uniGlobal.Decimal
///结构体定义
#define Decimal_FADR (StockTop_FADR + StockTop_LEN)
#define Decimal_SADR (StockTop_SADR + StockTop_LEN)
#define Decimal_LEN (sizeof(buf_Decimal) + checkLen_1)
#define Decimal_arrayNb gunNumber
//系统时间
///全局缓冲中的值
#define buf_SystemTime uniGlobal.SystemTime
///结构体定义
#define SystemTime_FADR (Decimal_FADR + Decimal_LEN)
#define SystemTime_SADR (Decimal_SADR + Decimal_LEN)
#define SystemTime_LEN (sizeof(buf_SystemTime) + checkLen_1)
#define SystemTime_arrayNb gunNumber
//流量计模式
///全局缓冲中的值
#define buf_GasWorkMode uniGlobal.GasWorkMode
///结构体定义
#define GasWorkMode_FADR (SystemTime_FADR + SystemTime_LEN)
#define GasWorkMode_SADR (SystemTime_SADR + SystemTime_LEN)
#define GasWorkMode_LEN (sizeof(buf_GasWorkMode) + checkLen_1)
#define GasWorkMode_arrayNb gunNumber
//脉冲当量
///全局缓冲中的值
#define buf_PulseEqu uniGlobal.PulseEqu
///结构体定义
#define PulseEqu_FADR (GasWorkMode_FADR + GasWorkMode_LEN)
#define PulseEqu_SADR (GasWorkMode_SADR + GasWorkMode_LEN)
#define PulseEqu_LEN (sizeof(buf_PulseEqu) + checkLen_1)
#define PulseEqu_arrayNb gunNumber
//密度
///全局缓冲中的值
#define buf_Density uniGlobal.Density
///结构体定义
#define Density_FADR (PulseEqu_FADR + PulseEqu_LEN)
#define Density_SADR (PulseEqu_SADR + PulseEqu_LEN)
#define Density_LEN (sizeof(buf_Density) + checkLen_1)
#define Density_arrayNb gunNumber
//最小显示量
///全局缓冲中的值
#define buf_MinDisp uniGlobal.MinDisp
///结构体定义
#define MinDisp_FADR (Density_FADR + Density_LEN)
#define MinDisp_SADR (Density_SADR + Density_LEN)
#define MinDisp_LEN (sizeof(buf_MinDisp) + checkLen_1)
#define MinDisp_arrayNb gunNumber
//提前关阀量
///全局缓冲中的值
#define buf_ValueTurnOff uniGlobal.ValueTurnOff
///结构体定义
#define ValueTurnOff_FADR (MinDisp_FADR + MinDisp_LEN)
#define ValueTurnOff_SADR (MinDisp_SADR + MinDisp_LEN)
#define ValueTurnOff_LEN (sizeof(buf_ValueTurnOff) + checkLen_1)
#define ValueTurnOff_arrayNb gunNumber
//过冲量
///全局缓冲中的值
#define buf_ValueOverShoot uniGlobal.ValueOverShoot
///结构体定义
#define ValueOverShoot_FADR (ValueTurnOff_FADR + ValueTurnOff_LEN)
#define ValueOverShoot_SADR (ValueTurnOff_SADR + ValueTurnOff_LEN)
#define ValueOverShoot_LEN (sizeof(buf_ValueOverShoot) + checkLen_1)
#define ValueOverShoot_arrayNb gunNumber
//时间计数器
///全局缓冲中的值
#define buf_TimeCount uniGlobal.TimeCount
///结构体定义
#define TimeCount_FADR (ValueOverShoot_FADR + ValueOverShoot_LEN)
#define TimeCount_SADR (ValueOverShoot_SADR + ValueOverShoot_LEN)
#define TimeCount_LEN (sizeof(buf_TimeCount) + checkLen_1)
#define TimeCount_arrayNb gunNumber
//当次加油数据
///全局缓冲中的值
#define buf_FuelRecord0 uniGlobal.FuelRecord0
///结构体定义
#define FuelRecord0_FADR (TimeCount_FADR + TimeCount_LEN)
#define FuelRecord0_SADR (TimeCount_SADR + TimeCount_LEN)
#define FuelRecord0_LEN (sizeof(buf_FuelRecord0) + checkLen_1)
#define FuelRecord0_arrayNb gunNumber
//前次加油数据
///全局缓冲中的值
#define buf_FuelRecord1 uniGlobal.FuelRecord1
///结构体定义
#define FuelRecord1_FADR (FuelRecord0_FADR + FuelRecord0_LEN)
#define FuelRecord1_SADR (FuelRecord0_SADR + FuelRecord0_LEN)
#define FuelRecord1_LEN (sizeof(buf_FuelRecord1) + checkLen_1)
#define FuelRecord1_arrayNb gunNumber
//限制加油次数
///全局缓冲中的值
#define buf_TriesLimit uniGlobal.TriesLimit
///结构体定义
#define TriesLimit_FADR (FuelRecord1_FADR + FuelRecord1_LEN)
#define TriesLimit_SADR (FuelRecord1_SADR + FuelRecord1_LEN)
#define TriesLimit_LEN (sizeof(buf_TriesLimit) + checkLen_1)
#define TriesLimit_arrayNb gunNumber
//流量计地址
///全局缓冲中的值
#define buf_GasAddr uniGlobal.GasAddr
///结构体定义
#define GasAddr_FADR (TriesLimit_FADR + TriesLimit_LEN)
#define GasAddr_SADR (TriesLimit_SADR + TriesLimit_LEN)
#define GasAddr_LEN (sizeof(buf_GasAddr) + checkLen_1)
#define GasAddr_arrayNb gunNumber
//流量计地址
///全局缓冲中的值
#define buf_GasAddr uniGlobal.GasAddr
///结构体定义
#define GasAddr_FADR (TriesLimit_FADR + TriesLimit_LEN)
#define GasAddr_SADR (TriesLimit_SADR + TriesLimit_LEN)
#define GasAddr_LEN (sizeof(buf_GasAddr) + checkLen_1)
#define GasAddr_arrayNb gunNumber
//比例系数
///全局缓冲中的值
#define buf_GasScaleCoefficients uniGlobal.GasScaleCoefficients
///结构体定义
#define GasScaleCoefficients_FADR (GasAddr_FADR + GasAddr_LEN)
#define GasScaleCoefficients_SADR (GasAddr_SADR + GasAddr_LEN)
#define GasScaleCoefficients_LEN (sizeof(buf_GasScaleCoefficients) + checkLen_1)
#define GasScaleCoefficients_arrayNb gunNumber
//密度
///全局缓冲中的值
#define buf_GasDensity uniGlobal.GasDensity
///结构体定义
#define GasDensity_FADR (GasScaleCoefficients_FADR + GasScaleCoefficients_LEN)
#define GasDensity_SADR (GasScaleCoefficients_SADR + GasScaleCoefficients_LEN)
#define GasDensity_LEN (sizeof(buf_GasDensity) + checkLen_1)
#define GasDensity_arrayNb gunNumber
///全局缓冲中的值
#define buf_GasPourTo1 uniGlobal.GasPourTo1
///结构体定义
#define GasPourTo1_FADR (GasDensity_FADR + GasDensity_LEN)
#define GasPourTo1_SADR (GasDensity_SADR + GasDensity_LEN)
#define GasPourTo1_LEN (sizeof(buf_GasPourTo1) + checkLen_1)
#define GasPourTo1_arrayNb gunNumber
//低中到高流速切换
///全局缓冲中的值
#define buf_GasPour1To2 uniGlobal.GasPour1To2
///结构体定义
#define GasPour1To2_FADR (GasPourTo1_FADR + GasPourTo1_LEN)
#define GasPour1To2_SADR (GasPourTo1_SADR + GasPourTo1_LEN)
#define GasPour1To2_LEN (sizeof(buf_GasPour1To2) + checkLen_1)
#define GasPour1To2_arrayNb gunNumber
//最大流速
///全局缓冲中的值
#define buf_GasFlowMax uniGlobal.GasFlowMax
///结构体定义
#define GasFlowMax_FADR (GasPour1To2_FADR + GasPour1To2_LEN)
#define GasFlowMax_SADR (GasPour1To2_SADR + GasPour1To2_LEN)
#define GasFlowMax_LEN (sizeof(buf_GasFlowMax) + checkLen_1)
#define GasFlowMax_arrayNb gunNumber
//最小流速
///全局缓冲中的值
#define buf_GasFlowMin uniGlobal.GasFlowMin
///结构体定义
#define GasFlowMin_FADR (GasFlowMax_FADR + GasFlowMax_LEN)
#define GasFlowMin_SADR (GasFlowMax_SADR + GasFlowMax_LEN)
#define GasFlowMin_LEN (sizeof(buf_GasFlowMin) + checkLen_1)
#define GasFlowMin_arrayNb gunNumber
//最大压力值
///全局缓冲中的值
#define buf_PressureMax uniGlobal.PressureMax
///结构体定义
#define PressureMax_FADR (GasFlowMin_FADR + GasFlowMin_LEN)
#define PressureMax_SADR (GasFlowMin_SADR + GasFlowMin_LEN)
#define PressureMax_LEN (sizeof(buf_PressureMax) + checkLen_1)
#define PressureMax_arrayNb gunNumber
//最小压力值
///全局缓冲中的值
#define buf_PressureMin uniGlobal.PressureMin
///结构体定义
#define PressureMin_FADR (PressureMax_FADR + PressureMax_LEN)
#define PressureMin_SADR (PressureMax_SADR + PressureMax_LEN)
#define PressureMin_LEN (sizeof(buf_PressureMin) + checkLen_1)
#define PressureMin_arrayNb gunNumber
//卡介质
///全局缓冲中的值
#define buf_Medium uniGlobal.Medium
///结构体定义
#define Medium_FADR (PressureMin_FADR + PressureMin_LEN)
#define Medium_SADR (PressureMin_SADR + PressureMin_LEN)
#define Medium_LEN (sizeof(buf_Medium) + checkLen_1)
#define Medium_arrayNb gunNumber
//显示类型设置
///全局缓冲中的值
#define buf_DispSet uniGlobal.DispSet
///结构体定义
#define DispSet_FADR (Medium_FADR + Medium_LEN)
#define DispSet_SADR (Medium_SADR + Medium_LEN)
#define DispSet_LEN (sizeof(buf_DispSet) + checkLen_1)
#define DispSet_arrayNb gunNumber
//补偿
///全局缓冲中的值
#define buf_Compensation uniGlobal.Compensation
///结构体定义
#define Compensation_FADR (DispSet_FADR + DispSet_LEN)
#define Compensation_SADR (DispSet_SADR + DispSet_LEN)
#define Compensation_LEN (sizeof(buf_Compensation) + checkLen_1)
#define Compensation_arrayNb gunNumber
//RTC时钟第一次开机标志
///全局缓冲中的值
#define buf_RTCTimer_Flag uniGlobal.RTCTimer_Flag
///结构体定义
#define RTCTimer_Flag_FADR (Compensation_FADR + Compensation_LEN)
#define RTCTimer_Flag_SADR (Compensation_SADR + Compensation_LEN)
#define RTCTimer_Flag_LEN (sizeof(buf_RTCTimer_Flag) + checkLen_1)
#define RTCTimer_Flag_arrayNb gunNumber
//RTC时钟备份
///全局缓冲中的值
#define buf_RTCTimer_BKB uniGlobal.RTCTimer_BKB
///结构体定义
#define RTCTimer_BKB_FADR (RTCTimer_Flag_FADR + RTCTimer_Flag_LEN)
#define RTCTimer_BKB_SADR (RTCTimer_Flag_SADR + RTCTimer_Flag_LEN)
#define RTCTimer_BKB_LEN (sizeof(buf_RTCTimer_BKB) + checkLen_1)
#define RTCTimer_BKB_arrayNb gunNumber
//存储器完好标致
///全局缓冲中的值
#define buf_FRam_Flag uniGlobal.FRam_Flag
///结构体定义
#define FRam_Flag_FADR (RTCTimer_BKB_FADR + RTCTimer_BKB_LEN)
#define FRam_Flag_SADR (RTCTimer_BKB_SADR + RTCTimer_BKB_LEN)
#define FRam_Flag_LEN (sizeof(buf_FRam_Flag) + checkLen_1)
#define FRam_Flag_arrayNb gunNumber
typedef struct
{
u32 volume; //volume与sale 必须连续,符个字符对齐首地址
u32 sale; //金额
u32 price; //单价
}s_FuelRecord_Typedef;
typedef struct
{
union
{
u8 Global[100]; //全局最大个数
u16 Price[gunNumber]; //单价
u64 M_SquadTop[gunNumber]; //班累
u64 V_SquadTop[gunNumber]; //班累
u64 S_SquadTop[gunNumber]; //班累
u64 MassTop[gunNumber]; //质量总累
u64 VolumeTop[gunNumber]; //体积总累
u64 SaleTop[gunNumber]; //金额总累
u64 StockTop[gunNumber]; //卸车总累
u8 Decimal[3]; //小数点 金额 体积 单价
u8 SystemTime[7]; //系统时间 年年 月 日 时 分 秒
u8 GasWorkMode[gunNumber]; //加气模式
u32 PulseEqu[gunNumber]; //脉冲当量
u32 Density[gunNumber]; //密度
u16 MinDisp[gunNumber]; //最小显示量
u8 ValueTurnOff[gunNumber][50]; //提前关阀量
int8_t ValueOverShoot[gunNumber][2]; //过冲量
u32 TimeCount; //时间计数器
s_FuelRecord_Typedef FuelRecord0[gunNumber];//当次加油数据
s_FuelRecord_Typedef FuelRecord1[gunNumber];//前次加油数据
u32 TriesLimit; //限制加油次数
/******************流量计相关*******************/
u8 GasAddr[gunNumber]; //当前地址0开始,按顺序,与抢号对应
u16 GasScaleCoefficients[gunNumber]; //比例系数
u16 GasDensity[gunNumber]; //密度
u8 GasPourTo1[gunNumber]; //低到中流速切换阀值0-5 默认 2 Kg/Min
u8 GasPour1To2[gunNumber]; //中到高流速切换阀值0-5 默认 1.5Kg/Min
u8 GasFlowMax[gunNumber]; //最大流速值0-90 默认 50Kg/Min
u8 GasFlowMin[gunNumber]; //最小流速值0-90 默认 50Kg/Min
/******************压力检测相关******************/
u16 PressureMax[gunNumber]; //最大允许压力0-40 默认20MPa
u16 PressureMin[gunNumber]; //最小允许压力
u16 Medium; //卡介质
u16 DispSet; //显示类型设置
float Compensation[gunNumber];//补偿
u8 RTCTimer_Flag; //RTC初次启动标志
u32 RTCTimer_BKB; //RTC计数备份
u8 FRam_Flag;
}u;
u8 CheckAdd;
}s_uniGlobal_Typedef; //存储器读写缓存共用体
typedef enum
{
CF_Price, //单价
CF_M_SquadTop, //质量班累
CF_V_SquadTop, //体积班累
CF_S_SquadTop, //金额班累
CF_MassTop, //质量总累
CF_VolumeTop, //体积总累
CF_SaleTop, //金额总累
CF_StockTop, //卸车总累
CF_Decimal, //小数点
CF_SystemTime, //系统时间
CF_GasWorkMode, //流量计模式
CF_PulseEqu, //脉冲当量
CF_Density, //密度
CF_MinDisp, //最小显示量
CF_ValueTurnOff, //提前关阀量
CF_ValueOverShoot, //过冲量
CF_TimeCount, //时间计数器
CF_FuelRecord0, //当次加油记录
CF_FuelRecord1, //前次加油记录
CF_TriesLimit, //限制加油次数
CF_GasAddr, //流量计地址
CF_GasScaleCoefficients, //流量计比例系数
CF_GasDensity, //流量计密度
CF_GasPourTo1, //低到中流速切换阀值0-5 默认 2 Kg/Min
CF_GasPour1To2, //低到中流速切换阀值0-5 默认 2 Kg/Min
CF_GasFlowMax, //最大流速值0-90 默认 50Kg/Min
CF_GasFlowMin, //最大流速值0-90 默认 50Kg/Min
CF_PressureMax, //最大允许压力0-40 默认20MPa
CF_Medium, //卡介质
CF_DispSet, //显示类型设置
CF_Compensation, //补偿
CF_RTCTimer_Flag,
CF_RTCTimer_BKB,
CF_FRam_Flag, //存储器出错标志
FramItemEnd,
}FramItem;
//********************************************************************************
typedef struct
{
u8* pInitData;//初始化指针
u8* upData; //共用体数据缓存区指针
u8* pData; //pGun数据指针
u16 firstAdr; //第一地址
u16 secondAdr;//第二地址
u8 len; //长度
u8 Tpye; //类型
}framDataIndex;
void FM_Init(void);
u8 FMItemWrite(FramItem Type);
u8 FMItemRead(FramItem Type);
void FM_Data_Init(void);
#endif