2026-03-20 21:16:58 +08:00
|
|
|
|
#ifndef __DP2201V01_h__
|
|
|
|
|
|
#define __DP2201V01_h__
|
|
|
|
|
|
|
|
|
|
|
|
#include "../user/Main/Macro_Flange.h"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#if(DP2201_M0CONTROL)
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
|
|
|
|
|
|
#define SamplingTimer TIM1
|
|
|
|
|
|
#define StartSamplingTimerInterval(uploadCounter) StartTimer1_CC1(uploadCounter)
|
|
|
|
|
|
#define ResetSamplingTimerInterval(uploadCounter) ResetTimer1_CC1(uploadCounter)
|
|
|
|
|
|
#define StopSamplingTimerInterval() StopTimer1()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//for GPIO START==============================================================================
|
|
|
|
|
|
// for soft I2C
|
|
|
|
|
|
#define I2C_SDA GPIO_PIN_0
|
|
|
|
|
|
#define I2C_SDA_PINPOS GPIO_PinPos_0
|
|
|
|
|
|
#define I2C_SDA_GPIO GPIO1
|
|
|
|
|
|
#define I2C_SCL GPIO_PIN_1
|
|
|
|
|
|
#define I2C_SCL_PINPOS GPIO_PinPos_1
|
|
|
|
|
|
#define I2C_SCL_GPIO GPIO1
|
|
|
|
|
|
|
|
|
|
|
|
//for eeprom
|
|
|
|
|
|
#define EEPROM_WP_PIN GPIO_PIN_4
|
|
|
|
|
|
#define EEPROM_WP_PINPOS GPIO_PinPos_4
|
|
|
|
|
|
#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_7
|
|
|
|
|
|
#define TEST_PIN_PINPOS GPIO_PinPos_7
|
|
|
|
|
|
#define TEST_PIN_GPIO GPIO1
|
|
|
|
|
|
#define TEST_PIN_OUT() EnableOutput(TEST_PIN_GPIO, TEST_PIN_PINPOS)
|
|
|
|
|
|
#define TEST_PIN_TOGGLE() TOGGLE_PIN(TEST_PIN_GPIO, TEST_PIN)
|
|
|
|
|
|
|
|
|
|
|
|
#define RS485DE_PIN GPIO_PIN_1
|
|
|
|
|
|
#define RS485DE_PINPOS GPIO_PinPos_1
|
|
|
|
|
|
#define RS485DE_GPIO GPIO1
|
|
|
|
|
|
#define RS485DE_OUTPUT() EnableOutput(RS485DE_GPIO, RS485DE_PINPOS)
|
|
|
|
|
|
#define ENABLE_TXD() SET_PIN(RS485DE_GPIO, RS485DE_PIN)
|
|
|
|
|
|
#define ENABLE_RXD() CLR_PIN(RS485DE_GPIO, RS485DE_PIN)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2026-03-20 21:19:53 +08:00
|
|
|
|
// ReadParameterFromEEPROM
|
2026-03-20 21:16:58 +08:00
|
|
|
|
|
|
|
|
|
|
//for GPIO END===============================================================================\
|
|
|
|
|
|
//=============================================================================================================================================================================================
|
|
|
|
|
|
//for ADC START==============================================================================/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
typedef struct
|
|
|
|
|
|
{
|
|
|
|
|
|
u8 State ;
|
|
|
|
|
|
u8 Index ;
|
|
|
|
|
|
u16 NextTime ;
|
|
|
|
|
|
}__Process_TypeDef;
|
|
|
|
|
|
|
|
|
|
|
|
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;
|
|
|
|
|
|
|
|
|
|
|
|
void FlowProcessManagement(void);//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̹<EFBFBD><CCB9><EFBFBD>
|
|
|
|
|
|
void StartNormolFlowMeasurement(void);//<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
void ComputeFlowRateIndexAndFlowRate(void);//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
void FlowRateDealAndOuputSub(void);
|
2026-03-20 21:19:53 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//======================================================================================================================================================================================
|
|
|
|
|
|
|
|
|
|
|
|
typedef struct {
|
|
|
|
|
|
u8 Gain; //ADC<44><43><EFBFBD><EFBFBD><EFBFBD>Ŵ<EFBFBD>ϵ<EFBFBD><CFB5>
|
|
|
|
|
|
u8 PChan; //ADC<44><43><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8>
|
|
|
|
|
|
u8 NChan; //ADC<44><43><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8>
|
|
|
|
|
|
u8 SPS; //ADC<44><43><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
} ADC_BaseConfig_TypeDef;
|
|
|
|
|
|
|
|
|
|
|
|
typedef struct {
|
|
|
|
|
|
u8 Gain0; //ADC_0<5F><30><EFBFBD><EFBFBD><EFBFBD>Ŵ<EFBFBD>ϵ<EFBFBD><CFB5>
|
|
|
|
|
|
u8 PChan0; //ADC_0<5F><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8>
|
|
|
|
|
|
u8 NChan0; //ADC_0<5F><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8>
|
|
|
|
|
|
u8 Gain1; //ADC_1<5F><31><EFBFBD><EFBFBD><EFBFBD>Ŵ<EFBFBD>ϵ<EFBFBD><CFB5>
|
|
|
|
|
|
u8 PChan1; //ADC_1<5F><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8>
|
|
|
|
|
|
u8 NChan1; //ADC_1<5F><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8>
|
|
|
|
|
|
u8 SPS; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
} ADC_SyncConfig_TypeDef;
|
|
|
|
|
|
|
|
|
|
|
|
enum
|
|
|
|
|
|
{
|
|
|
|
|
|
CTCode,
|
|
|
|
|
|
RTCode,
|
|
|
|
|
|
HTCode,
|
|
|
|
|
|
ATCode,
|
|
|
|
|
|
BTCode,
|
|
|
|
|
|
DTCode,
|
|
|
|
|
|
ETCode,
|
|
|
|
|
|
FTCode,
|
|
|
|
|
|
TCode_Count
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
typedef struct
|
|
|
|
|
|
{
|
|
|
|
|
|
ADC_BaseConfig_TypeDef adcBaseCfg;
|
|
|
|
|
|
ADC_SyncConfig_TypeDef adcSyncCfg; //ADC<44><43><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
u32 TCode[TCode_Count]; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>洢<EFBFBD><E6B4A2>
|
|
|
|
|
|
u8 SkipSampNum ; //<2F><><EFBFBD><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
|
|
|
|
|
|
/*<2A>жϷ<D0B6>ʽ<EFBFBD><CABD><EFBFBD>ݶ<EFBFBD><DDB6><EFBFBD>*/
|
|
|
|
|
|
// u8 CounterMax; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
u8 Counter; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
u32 ADCBuffer[2]; //<2F><><EFBFBD><EFBFBD>ֵ
|
|
|
|
|
|
|
|
|
|
|
|
/*DMA<4D><41>ʽ<EFBFBD><CABD><EFBFBD>ݶ<EFBFBD><DDB6><EFBFBD>*/
|
|
|
|
|
|
u32 DMA_ADC_Buffer[2][64];
|
|
|
|
|
|
u8 DMA_ADC_adcflag[2];
|
|
|
|
|
|
u8 DMA_ADC_SampLen;
|
|
|
|
|
|
u8 DMA_ADC_Exponent;
|
|
|
|
|
|
}__Samp_Buf_TypeDef;//<2F><><EFBFBD><EFBFBD>
|
|
|
|
|
|
|
|
|
|
|
|
extern __Samp_Buf_TypeDef sampleData;
|
|
|
|
|
|
|
|
|
|
|
|
/*ADC<44><43><EFBFBD>ó<EFBFBD>ʼ<EFBFBD><CABC>*/
|
|
|
|
|
|
void SetSampleSiagnlForSingleADC(const ADC_BaseConfig_TypeDef* adc_cfg);
|
|
|
|
|
|
void SetSampleSiagnlForSyncADC(const ADC_SyncConfig_TypeDef* adc_cfg);
|
|
|
|
|
|
|
|
|
|
|
|
/*<2A>жϷ<D0B6>ʽ*/
|
|
|
|
|
|
void StartADC0SampingData(void);
|
|
|
|
|
|
void StartADC1SampingData(void);
|
|
|
|
|
|
void StartADCSyncSampingData(void);
|
|
|
|
|
|
void ReadSamplingData(void);//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
void ComputeSampleData(void);//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
|
|
|
|
|
|
/*DMA<4D><41>ʽ*/
|
|
|
|
|
|
void StartDMAForADC0SampingData(void);
|
|
|
|
|
|
void StartDMAForADC1SampingData(void);
|
|
|
|
|
|
void StartDMAForADCSyncSampingData(void);
|
|
|
|
|
|
u16 DMA_ComputeSampleData_ADC0(void);
|
|
|
|
|
|
u16 DMA_ComputeSampleData_ADC1(void);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void DMA_sampleMainProcess(void);
|
|
|
|
|
|
|
2026-03-20 21:16:58 +08:00
|
|
|
|
//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) *Ŀǰδʹ<CEB4><CAB9>
|
|
|
|
|
|
#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===============================================================================/
|
|
|
|
|
|
|
|
|
|
|
|
void TestTemperatureInit(void);
|
|
|
|
|
|
void TestTemperature(void);
|
|
|
|
|
|
|
|
|
|
|
|
extern __SAMPLE_STATUS_BIT_TypeDef sampleState;
|
|
|
|
|
|
extern u16 FRType;
|
|
|
|
|
|
extern u32 voltageANX;
|
|
|
|
|
|
extern u16 voltageDetected[], adcGain;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//for Device END==============================================================================\
|
|
|
|
|
|
//===============================================================================================================================================================================================
|
|
|
|
|
|
//for func Start==============================================================================/
|
|
|
|
|
|
u16 WordSubFunction(u16 minuend, u16 subtractor);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#endif
|
|
|
|
|
|
#endif
|