Files
CHJ/user/Core/D9V2FR_DP2006V1000.h
2026-03-20 21:19:04 +08:00

241 lines
11 KiB
C

#ifndef __D9V2FR_DP2006V1000_h__
#define __D9V2FR_DP2006V1000_h__
//采样定时器
#define SamplingTimer pTIM1
#define StartSamplingTimerInterval(uploadCounter) StartTimer1_CC1(uploadCounter)
#define ResetSamplingTimerInterval(uploadCounter) ResetTimer1_CC1(uploadCounter)
#define StopSamplingTimerInterval() StopTimer1()
//ADC转换采集定时器
#define ConversionTimer pTIM2
#define StartConversionTimerInterval(uploadCounter) StartTimer2_UIE(uploadCounter)
#define ResetConversionTimerInterval(uploadCounter) ResetTimer2_UIE(uploadCounter)
#define StopConversionTimerInterval() StopTimer2()
// 从标准单位 到 其他单位
#define ONE_PA_TO_MBAR 0.01f // 1 Pa = 0.01 mbar
#define ONE_PA_TO_TORR (1.0f / 133.322f) // 1 Pa = 1 / 133.322 Torr
#define ONE_PA_TO_MICRONS (1000.0f / 133.322f) // 1 Pa = 1000 / 133.322 Microns
// 从 其他单位 到 标准单位
#define ONE_MBAR_TO_PA 100.0f // 1 mbar = 100 Pa
#define ONE_TORR_TO_PA 133.322f // 1 Torr = 133.322 Pa
#define ONE_MICRONS_TO_PA (133.322f / 1000.0f) // 1 Microns = 133.322 / 1000 Pa
// 压力单位枚举
typedef enum {
PRESSURE_UNIT_PA, // 帕斯卡
PRESSURE_UNIT_MICRONS, // 微米汞柱 (μmHg)
PRESSURE_UNIT_TORR, // 托
PRESSURE_UNIT_MBAR // 毫巴
} PressureUnitType;
// 压力值基准 (现在以 Pa 为单位存储)
#if(DP2006V1000)
//for GPIO START==============================================================================
// for soft I2C
#define I2C_SDA GPIO_PIN_4
#define I2C_SDA_PINPOS GPIO_PinPos_4
#define I2C_SDA_GPIO GPIO1
#define I2C_SCL GPIO_PIN_0
#define I2C_SCL_PINPOS GPIO_PinPos_0
#define I2C_SCL_GPIO GPIO2
//for eeprom
#define EEPROM_WP_PIN GPIO_PIN_5
#define EEPROM_WP_PINPOS GPIO_PinPos_5
#define EEPROM_WP_GPIO GPIO1
#define PARA_EEPROM BIT1
#define DATA_EEPROM BIT2
#define FROCK_EEPROM BIT1+BIT2+BIT3
//// for FRAM
//#define FRAM_WP_PIN GPIO_PIN_6
//#define FRAM_WP_PINPOS GPIO_PinPos_6
//#define FRAM_WP_GPIO GPIO2
//#define FRAM_CS_PIN GPIO_PIN_5
//#define FRAM_CS_PINPOS GPIO_PINPos_5
//#define FRAM_CS_GPIO GPIO2
//// for SPI
//#define SCLK_PIN GPIO_PIN_5
//#define SCLK_PINPOS GPIO_PinPos_5
//#define SCLK_PIN_SOURCE GPIO_PinSource5
//#define SCLK_PIN_CONFIG GPIO1_5_AF_SCLK0
//#define SCLK_GPIO GPIO1
//#define SOMI_PIN GPIO_PIN_4
//#define SOMI_PINPOS GPIO_PinPos_4
//#define SOMI_PIN_SOURCE GPIO_PinSource4
//#define SOMI_PIN_CONFIG GPIO1_4_AF_MISO0
//#define SOMI_GPIO GPIO1
//#define SIMO_PIN GPIO_PIN_6
//#define SIMO_PINPOS GPIO_PinPos_6
//#define SIMO_PIN_SOURCE GPIO_PinSource6
//#define SIMO_PIN_CONFIG GPIO1_6_AF_MOSI0
//#define SIMO_GPIO GPIO1
//// for IO
//#define TDU_SET_PIN GPIO_PIN_5
//#define TDU_SET_PINPOS GPIO_PinPos_5
//#define TDU_SET_GPIO GPIO1
//#define TDU_SET_PIN_OUT() EnableOutput(TDU_SET_GPIO, TDU_SET_PINPOS)
//#define CLR_TDU_SET_PIN() CLR_PIN(TDU_SET_GPIO,TDU_SET_PIN)
//#define SET_TDU_SET_PIN() SET_PIN(TDU_SET_GPIO,TDU_SET_PIN)
//#define HEATING_PIN GPIO_PIN_6
//#define HEATING_PINPOS GPIO_PinPos_6
//#define HEATING_GPIO GPIO1
//#define HEATING_PIN_OUT() EnableOutput(HEATING_GPIO, HEATING_PINPOS)
//#define CLR_HEATING_PIN() CLR_PIN(HEATING_GPIO,HEATING_PIN)
//#define SET_HEATING_PIN() SET_PIN(HEATING_GPIO,HEATING_PIN)
//#define HP_CON_PIN GPIO_PIN_0
//#define HP_CON_PINPOS GPIO_PinPos_0
//#define HP_CON_GPIO GPIO0
//#define HP_CON_PIN_OUT() EnableOutput(HP_CON_GPIO, HP_CON_PINPOS)
//#define CLR_HP_CON_PIN() CLR_PIN(HP_CON_GPIO,HP_CON_PIN)
//#define SET_HP_CON_PIN() SET_PIN(HP_CON_GPIO,HP_CON_PIN)
//#define TEST_PIN GPIO_PIN_5
//#define TEST_PIN_PINPOS GPIO_PinPos_5
//#define TEST_PIN_GPIO GPIO0
//#define TEST_PIN_OUT() EnableOutput(TEST_PIN_GPIO, TEST_PIN_PINPOS)
#define LED_PIN GPIO_PIN_5
#define LED_PIN_PINPOS GPIO_PinPos_5
#define LED_PIN_GPIO GPIO0
#define LED_PIN_OUT() EnableOutput(LED_PIN_GPIO, LED_PIN)
#define SET_LED_PIN() SET_PIN(LED_PIN_GPIO,LED_PIN)
#define CLR_LED_PIN() CLR_PIN(LED_PIN_GPIO,LED_PIN)
//for GPIO END===============================================================================\
//=============================================================================================================================================================================================
//for ADC START==============================================================================/
#define SIGNAL0 0x00
#define SIGNAL1 0x01
#define SIGNAL2 0x02
#define SIGNAL3 0x03
#define SIGNAL4 0x04
#define SIGNAL5 0x05
#define SIGNAL6 0x06
//......
typedef struct //__SAMPLE_STATUS_BIT_TypeDef
{
u16 DisplayZero : 1; // 1
u16 Mode: 2; // 3
u16 CType: 2; // 5
u16 AType: 1; // 7
u16 RType: 1; // 7
u16 HType: 2; // 9
u16 PreSampling: 1; // 10
u16 AutoDetectOffset: 1; // 11
u16 AutoDetectProcess: 2; // 13
u16 EnableRHTest : 1; // 14
u16 EnableRoughTest: 1; // 15
} __SAMPLE_STATUS_BIT_TypeDef;
//for ADC END==============================================================================\
//======================================================================================================================================================================================
//for FLOWMETER START======================================================================/
// *****************************************************************************
#define CURVE_1ST 0
#define CURVE_2ND 1
#define CURVE_3RD 2
#define CTYPE_FR CURVE_1ST
#define ATYPE_VH CURVE_2ND
#define MICRO_FR CURVE_3RD
#define FRIDX CTYPE_FR // 0
#define RGIDX ATYPE_VH // 1
#define GAINX MICRO_FR // 2
#define VDUX 3 // *From ADC CTcode
#define VDUGX 4 // * CTcode
#define RIDX 5 //
#define NIDX 6 // NORMAL_VL - LOW_VL (TD INDEX) * VDUX
#define TPCB 7 // PCB temperature *From eeprom
#define TGAS 8 // GAS temperature *From IIC dev TPCB
#define TRH 9 // RH temperature *From eeprom
#define BATT 10 // Battery volatge
#define IVHDX 11 // IRH CODE test VHH By TD Control *From ADC HTcode
#define VRHX 12 // VRH CODE *From ADC ATcode
#define IVHUX 13 // IRH CODE test VHH By TU Control
#define VRRX 14 // VRR CODE *From ADC RTcode
#define RHVOL 15 // RH VOLATAGE * VRHX
#define RRVOL 16 // RR VOLATAGE * VRRX
#define RHRES 17 // RH resistance * IVHDX
#define RRRES 18 // RR resistance * VRRX
#define PORH 19 // RH Power * IVHDX
#define PDRH 20 // RH current Power
#define CVHHX 21 //
#define DVHHX 22 //
#define VHPA 23 //
#define RATO 24 // RR:RH NRH--RRRES--VRRX---ADC RTcode
#define SDT 25 // ATYPE OFFSET
#define DIVHX 26 // IVHH(TD) - IVHH(TU) *目前未使能
#define TCOE 27 // * TGAS
#define TVDUX 28 // * TGAS
#define TVDUGX 29 // * TGAS
#define FR_H 30 //
#define FR_L 31 //
#define ANX 32 //
#define ANX_MASK (ANX-1)
//*****************************************************************************
#define CODE1 FR_H // 8300 FIDX
#define CODE2 FR_L // 8301 FIDX
#define CODE3 FRIDX // 8302 FIDX
#define CODE4 NIDX // 8303
#define CODE5 VRHX // 8304
#define CODE6 IVHDX // 8305
#define CODE7 RHVOL // 8306
#define CODE8 VDUGX // 8307
#define CODE9 TPCB // 8308
#define CODE10 RHVOL // 8309
#define CODE11 VDUX // 830A
#define CODE12 VDUGX // 830B
#define CODE13 NIDX // 830C
#define CODE14 BATT // 830D
#define CODE15 IVHDX // 830E
#define CODE16 VRHX // 830F
//for FLOWMETER END==============================================================================\
//===============================================================================================================================================================================================
//for Device Start===============================================================================/
extern __SAMPLE_STATUS_BIT_TypeDef sampleState;
extern u16 FRType;
extern u32 voltageANX;
extern u16 voltageDetected[], adcGain;
extern u16 processNextTime, processIndex;
//for Device END==============================================================================\
//===============================================================================================================================================================================================
//for func Start==============================================================================/
void FlowRateDealAndOuputSub(void);
void ComputeFlowRateIndexAndFlowRate(void);//处理采样数据
u16 WordSubFunction(u16 minuend, u16 subtractor);
void StartNormolFlowMeasurement(void);//开始测量流量
static void SetSystemForADCSample(u16 SampleSiagnl);//设置采样通道与采样次数
static void SetNextProcess(void);//设置采样定时器的下一个进程
void FlowProcessManagement(void);//流量过程管理
double ConvertPressure(double value, PressureUnitType targetUnit, PressureUnitType originalUnit);
void SwitchPressureUnit(void);
static u8 GetDigitCount(u32 num);
void Update_Pressure_Display(void);
void My_Timer2_Callback(void);//用以开关机按键扫描及单位切换按键扫描
#endif
#endif