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

312 lines
12 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.

#ifndef __DP2201V01_h__
#define __DP2201V01_h__
#include "../user/Main/Macro_Flange.h"
#if(DP2201_M0CONTROL)
//²ÉÑù¶¨Ê±Æ÷
#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)
// ReadParameterFromEEPROM
//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);//Á÷Á¿¹ý³Ì¹ÜÀí
void StartNormolFlowMeasurement(void);//¿ªÊ¼²âÁ¿Á÷Á¿
void ComputeFlowRateIndexAndFlowRate(void);//´¦Àí²ÉÑùÊý¾Ý
void FlowRateDealAndOuputSub(void);
//======================================================================================================================================================================================
typedef struct {
u8 Gain; //ADC²ÉÑù·Å´óϵÊý
u8 PChan; //ADCÕýÊäÈëͨµÀ
u8 NChan; //ADC¸ºÊäÈëͨµÀ
u8 SPS; //ADC²ÉÑùËÙÂÊ
} ADC_BaseConfig_TypeDef;
typedef struct {
u8 Gain0; //ADC_0²ÉÑù·Å´óϵÊý
u8 PChan0; //ADC_0ÕýÊäÈëͨµÀ
u8 NChan0; //ADC_0¸ºÊäÈëͨµÀ
u8 Gain1; //ADC_1²ÉÑù·Å´óϵÊý
u8 PChan1; //ADC_1ÕýÊäÈëͨµÀ
u8 NChan1; //ADC_1¸ºÊäÈëͨµÀ
u8 SPS; //²ÉÑùËÙÂÊ
} 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¾ßÌåÅäÖÃ
u32 TCode[TCode_Count]; //ÄÚÂëÁÙʱ´æ´¢Çø
u8 SkipSampNum ; //Ìø¹ýǰ²ÉÑù¸öÊý
/*ÖжϷ½Ê½Êý¾Ý¶¨Òå*/
// u8 CounterMax; //²ÉÑù×î´ó¸öÊý
u8 Counter; //²ÉÑù¸öÊý
u32 ADCBuffer[2]; //²ÉÑùÖµ
/*DMA·½Ê½Êý¾Ý¶¨Òå*/
u32 DMA_ADC_Buffer[2][64];
u8 DMA_ADC_adcflag[2];
u8 DMA_ADC_SampLen;
u8 DMA_ADC_Exponent;
}__Samp_Buf_TypeDef;//Ñù±¾
extern __Samp_Buf_TypeDef sampleData;
/*ADCÅäÖóõʼ»¯*/
void SetSampleSiagnlForSingleADC(const ADC_BaseConfig_TypeDef* adc_cfg);
void SetSampleSiagnlForSyncADC(const ADC_SyncConfig_TypeDef* adc_cfg);
/*ÖжϷ½Ê½*/
void StartADC0SampingData(void);
void StartADC1SampingData(void);
void StartADCSyncSampingData(void);
void ReadSamplingData(void);//¶ÁÈ¡²ÉÑùÊý¾Ý
void ComputeSampleData(void);//¼ÆËã²ÉÑùÊý¾Ý
/*DMA·½Ê½*/
void StartDMAForADC0SampingData(void);
void StartDMAForADC1SampingData(void);
void StartDMAForADCSyncSampingData(void);
u16 DMA_ComputeSampleData_ADC0(void);
u16 DMA_ComputeSampleData_ADC1(void);
void DMA_sampleMainProcess(void);
//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===============================================================================/
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