差异
This commit is contained in:
@@ -12,6 +12,17 @@ u16 offsetRType, offsetGCFX;
|
||||
u16 voltageDetected[ANX], adcGain;
|
||||
|
||||
|
||||
void SystemPolling(void) //<2F><>ѯ
|
||||
{
|
||||
// if(mcuModeSleeping) LowPowerModeProcess();//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><CDB9><EFBFBD>ģʽ
|
||||
|
||||
if(mucSaveParams==PARAMS_READY) SaveSysParams();//<2F><><EFBFBD><EFBFBD><EFBFBD><D7BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Flash
|
||||
|
||||
if(HWState.SampledOver) FlowRateDealAndOuputSub(); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
if(comState.state.ReceivedData) ReceivedDataProcessing(); //һ֡<D2BB><D6A1><EFBFBD>ݽ<EFBFBD><DDBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
}
|
||||
|
||||
/*==========================================================================================
|
||||
//<2F>ⲿ<EFBFBD><E2B2BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>豸
|
||||
@@ -55,12 +66,34 @@ void TestTemperature(void)//
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴ<EFBFBD><DDB4><EFBFBD><EFBFBD><EFBFBD>
|
||||
/*********************************************************************/
|
||||
|
||||
uint32_t data_array[64];
|
||||
uint32_t sum = 0;
|
||||
uint32_t average = 0;
|
||||
void FlowRateDealAndOuputSub(void)
|
||||
{
|
||||
HWState.SampledOver = 0;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־<EFBFBD><D6BE><EFBFBD><EFBFBD>
|
||||
|
||||
ComputeFlowRateIndexAndFlowRate();//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ת<><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
TestTemperature();//<2F><><EFBFBD><EFBFBD>PCB<43>¶<EFBFBD>
|
||||
|
||||
|
||||
|
||||
// for (int i = 0; i < 64; i++) {
|
||||
// data_array[i] = rand();
|
||||
// }
|
||||
// u32 *p=data_array;
|
||||
// TEST_PIN_TOGGLE();
|
||||
// for (int i = 0; i < 64; i++) {
|
||||
// sum += *p++;
|
||||
// }
|
||||
// average = sum >> 6;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
/*sampleData.TCode[CTCode]//VDU
|
||||
sampleData.TCode[RTCode]//VRR
|
||||
@@ -68,6 +101,8 @@ void FlowRateDealAndOuputSub(void)
|
||||
sampleData.TCode[ATCode]//IRH*/
|
||||
void ComputeFlowRateIndexAndFlowRate(void)
|
||||
{
|
||||
|
||||
|
||||
voltageDetected[NIDX ]= (u16)sampleData.TCode[CTCode]; //8303 VDU1
|
||||
voltageDetected[VRHX ]= (u16)sampleData.TCode[RTCode]; //8304 VRR
|
||||
voltageDetected[IVHDX]= (u16)sampleData.TCode[HTCode]; //8305 VRH
|
||||
@@ -92,7 +127,8 @@ void ComputeFlowRateIndexAndFlowRate(void)
|
||||
voltageDetected[FR_L] = currentFlowRate&0xFFFF;
|
||||
// voltageDetected[VDUGX]= AirflowSensor_Read();
|
||||
// voltageDetected[TPCB]= (u16)(Get_AirflowSensor_SCCM());
|
||||
|
||||
|
||||
|
||||
}
|
||||
u16 WordSubFunction(u16 minuend, u16 subtractor)
|
||||
{
|
||||
@@ -154,8 +190,226 @@ void SetNextProcess(void)//
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/*-----------------------------------------------------------------------------------------------------*/
|
||||
|
||||
__Samp_Buf_TypeDef sampleData;
|
||||
static void ADC0_Conversion_Init(ADC_BaseConfig_TypeDef* adc_config)
|
||||
{
|
||||
ADC_REF_Init(REF_INTERNAL_2P5V,REF_INTERNAL_2P5V);/* 1. <20><>ʼ<EFBFBD><CABC><EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD>Դ */
|
||||
ADC_Init(ADC_0, adc_config->SPS, adc_config->Gain, adc_config->PChan, adc_config->NChan); /* 2. <20><>ʼ<EFBFBD><CABC>ADC0 */
|
||||
}
|
||||
//ADC1<43><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>----------------------------------------------------------
|
||||
static void ADC1_Conversion_Init(ADC_BaseConfig_TypeDef* adc_config)
|
||||
{
|
||||
ADC_REF_Init(REF_INTERNAL_2P5V,REF_INTERNAL_2P5V);/* 1. <20><>ʼ<EFBFBD><CABC><EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD>Դ */
|
||||
ADC_Init(ADC_1, adc_config->SPS, adc_config->Gain, adc_config->PChan, adc_config->NChan); /* 2. <20><>ʼ<EFBFBD><CABC>ADC1 */
|
||||
}
|
||||
void SetSampleSiagnlForSingleADC(const ADC_BaseConfig_TypeDef* adc_cfg)
|
||||
{
|
||||
sampleData.adcBaseCfg.Gain = adc_cfg->Gain;
|
||||
sampleData.adcBaseCfg.PChan = adc_cfg->PChan;
|
||||
sampleData.adcBaseCfg.NChan = adc_cfg->NChan;
|
||||
sampleData.adcBaseCfg.SPS = adc_cfg->SPS;
|
||||
}
|
||||
|
||||
//ADCͬ<43><CDAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>----------------------------------------------------------
|
||||
static void ADC0_1_SyncConversion_Init(ADC_SyncConfig_TypeDef* adc_config)
|
||||
{
|
||||
// ADC_REF_Init(REF_INTERNAL_2P5V,REF_INTERNAL_2P5V);/* 1. <20><>ʼ<EFBFBD><CABC><EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD>Դ */
|
||||
REF_InitTypeDef REF_InitStructure;
|
||||
REF_InitStructure.VREF = REF_INTERNAL_2P5V; // <20>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><D7BC>ѹ
|
||||
REF_InitStructure.VDRIVE = REF_INTERNAL_2P5V; // VDrive<76><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѹ
|
||||
REF_InitStructure.VREF_Boost = DISABLE;
|
||||
LHL_REF_Init(&REF_InitStructure);
|
||||
|
||||
// LHL_ADC_SetVREF(REF_INTERNAL_2P5V, ENABLE);
|
||||
// LHL_ADC_SetVDRIVE(REF_INTERNAL_2P5V, ENABLE);
|
||||
|
||||
|
||||
ADC_Init(ADC_0, adc_config->SPS, adc_config->Gain0, adc_config->PChan0, adc_config->NChan0); /* 2. <20><>ʼ<EFBFBD><CABC>ADC0 */
|
||||
ADC_Init(ADC_1, adc_config->SPS, adc_config->Gain1, adc_config->PChan1, adc_config->NChan1); /* 3. <20><>ʼ<EFBFBD><CABC>ADC1 */
|
||||
ADC_SyncCmd(ENABLE);/* 4. ADCͬ<43><CDAC>ʹ<EFBFBD><CAB9> */
|
||||
}
|
||||
|
||||
void SetSampleSiagnlForSyncADC(const ADC_SyncConfig_TypeDef* adc_cfg)
|
||||
{
|
||||
sampleData.adcSyncCfg.Gain0 = adc_cfg->Gain0;
|
||||
sampleData.adcSyncCfg.PChan0 = adc_cfg->PChan0;
|
||||
sampleData.adcSyncCfg.NChan0 = adc_cfg->NChan0;
|
||||
sampleData.adcSyncCfg.Gain1 = adc_cfg->Gain1;
|
||||
sampleData.adcSyncCfg.PChan1 = adc_cfg->PChan1;
|
||||
sampleData.adcSyncCfg.NChan1 = adc_cfg->NChan1;
|
||||
sampleData.adcSyncCfg.SPS = adc_cfg->SPS;
|
||||
}
|
||||
/* ======================================================================================================
|
||||
adc<64>жϲ<D0B6><CFB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD><CBB5><EFBFBD><EFBFBD>
|
||||
1.<2E><><EFBFBD>ã<EFBFBD>SetSampleSiagnlForSingleADC SetSampleSiagnlForSyncADC
|
||||
2.<2E><>ʼ<EFBFBD><CABC>StartADC0SampingData StartADC1SampingData StartADCSyncSampingData
|
||||
3.<2E><>ȡ<EFBFBD><C8A1>IRQ ReadSamplingData
|
||||
4.<2E><><EFBFBD>㣺ComputeSampleData
|
||||
======================================================================================================*/
|
||||
//ת<><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
|
||||
void ConversionIRQ_Callback(void)
|
||||
{
|
||||
if(sampleData.SkipSampNum) {sampleData.SkipSampNum -- ; return; }
|
||||
ReadSamplingData(); //<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
}
|
||||
|
||||
//<2F><>ʼת<CABC><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>---------------------------------------------------------------
|
||||
void StartADC0SampingData(void)
|
||||
{
|
||||
sampleData.ADCBuffer[0]=0;
|
||||
sampleData.Counter=0;
|
||||
sampleData.SkipSampNum = 3 ;
|
||||
ADC0_Conversion_Init(&sampleData.adcBaseCfg);
|
||||
ADC_register_irq_callback(ADC_0,ConversionIRQ_Callback);
|
||||
StartADC(ADC_0);
|
||||
}
|
||||
void StartADC1SampingData(void)
|
||||
{
|
||||
sampleData.ADCBuffer[1]=0;
|
||||
sampleData.Counter=0;
|
||||
sampleData.SkipSampNum = 3 ;
|
||||
ADC1_Conversion_Init(&sampleData.adcBaseCfg);
|
||||
ADC_register_irq_callback(ADC_1,ConversionIRQ_Callback);
|
||||
StartADC(ADC_1);
|
||||
}
|
||||
|
||||
void StartADCSyncSampingData(void)
|
||||
{
|
||||
sampleData.ADCBuffer[0]=0;
|
||||
sampleData.ADCBuffer[1]=0;
|
||||
sampleData.Counter=0;
|
||||
sampleData.SkipSampNum = 3 ;
|
||||
#if 1
|
||||
ADC0_1_SyncConversion_Init(&sampleData.adcSyncCfg);
|
||||
ADC_register_irq_callback(ADC_0,ConversionIRQ_Callback);
|
||||
StartADC(ADC_0);//ֻ<>迪<EFBFBD><E8BFAA>ADC_0
|
||||
#else
|
||||
NVIC_DisableIRQ(ADC0_IRQn);
|
||||
StartConversionTimerInterval(1);//1ms <20><>ʱ<EFBFBD><CAB1><EFBFBD>ж϶<D0B6>ȡadcת<63><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
Timer_register_irq_callback(ConversionTimer,ConversionIRQ_Callback );//ע<><D7A2>timer2<72>жϻص<CFBB><D8B5><EFBFBD><EFBFBD><EFBFBD>
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
void ReadSamplingData(void)//ADC<44>ж϶<D0B6>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> BPS
|
||||
{
|
||||
sampleData.ADCBuffer[0] += ADC_ReadData(ADC_0); //<2F><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD><EFBFBD>ۼ<EFBFBD>
|
||||
sampleData.ADCBuffer[1] += ADC_ReadData(ADC_1); //<2F><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD><EFBFBD>ۼ<EFBFBD>
|
||||
sampleData.Counter++; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
}
|
||||
|
||||
void ComputeSampleData(void) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
{
|
||||
StopADC(ADC_0);
|
||||
StopADC(ADC_1);
|
||||
if(sampleData.Counter != 0)//<2F>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƽ<EFBFBD><C6BD>
|
||||
{
|
||||
sampleData.ADCBuffer[0] /= (u32)sampleData.Counter;
|
||||
sampleData.ADCBuffer[1] /= (u32)sampleData.Counter;
|
||||
}
|
||||
}
|
||||
|
||||
/* ======================================================================================================
|
||||
adc dma<6D><61><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD><CBB5><EFBFBD><EFBFBD>
|
||||
1.<2E><><EFBFBD>ã<EFBFBD> SetSampleSiagnlForSingleADC SetSampleSiagnlForSyncADC
|
||||
2.<2E><>ʼ<EFBFBD><CABC> StartDMAForADC0SampingData StartDMAForADC1SampingData StartDMAForADCSyncSampingData
|
||||
3.<2E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: IRQ <20><>־λ
|
||||
4.<2E><><EFBFBD>㣺 DMA_ComputeSampleData_ADC0 DMA_ComputeSampleData_ADC1
|
||||
======================================================================================================*/
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϱ<D0B6>־λ
|
||||
void DMAForADC0_Callback()
|
||||
{
|
||||
sampleData.DMA_ADC_adcflag[0] = 1;
|
||||
}
|
||||
void DMAForADC1_Callback()
|
||||
{
|
||||
sampleData.DMA_ADC_adcflag[1] = 1;
|
||||
}
|
||||
|
||||
//<2F><>ʼת<CABC><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>---------------------------------------------------------------
|
||||
void StartDMAForADC0SampingData(void)
|
||||
{
|
||||
ADC0_Conversion_Init(&sampleData.adcBaseCfg);
|
||||
DMA_ADC_Init(ADC_0,sampleData.DMA_ADC_Buffer[0],sampleData.DMA_ADC_SampLen+sampleData.SkipSampNum);
|
||||
DMA_register_irq_callback(DMA_CHANNEL_ADC_0,NULL,DMAForADC0_Callback);
|
||||
DMA_StartADC(ADC_0);
|
||||
}
|
||||
void StartDMAForADC1SampingData(void)
|
||||
{
|
||||
ADC0_Conversion_Init(&sampleData.adcBaseCfg);
|
||||
DMA_ADC_Init(ADC_1, sampleData.DMA_ADC_Buffer[1],sampleData.DMA_ADC_SampLen+sampleData.SkipSampNum);
|
||||
DMA_register_irq_callback(DMA_CHANNEL_ADC_1,NULL,DMAForADC1_Callback);
|
||||
DMA_StartADC(ADC_1);
|
||||
}
|
||||
|
||||
/*<2A>û<EFBFBD><C3BB>ź<EFBFBD><C5BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
|
||||
void StartDMAForADCSyncSampingData(void)
|
||||
{
|
||||
ADC0_1_SyncConversion_Init(&sampleData.adcSyncCfg);
|
||||
DMA_ADC_Init(ADC_0,sampleData.DMA_ADC_Buffer[0],sampleData.DMA_ADC_SampLen+sampleData.SkipSampNum);
|
||||
DMA_ADC_Init(ADC_1,sampleData.DMA_ADC_Buffer[1],sampleData.DMA_ADC_SampLen+sampleData.SkipSampNum);
|
||||
DMA_register_irq_callback(DMA_CHANNEL_ADC_0,NULL,DMAForADC0_Callback);
|
||||
DMA_register_irq_callback(DMA_CHANNEL_ADC_1,NULL,DMAForADC1_Callback);
|
||||
DMA_StartADC(ADC_0);
|
||||
DMA_StartADC(ADC_1);
|
||||
}
|
||||
|
||||
u16 DMA_ComputeSampleData_ADC0(void)
|
||||
{
|
||||
u16 adcCode;
|
||||
u32 adcCount;
|
||||
u8 i ;
|
||||
for(i = sampleData.SkipSampNum ; i < sampleData.DMA_ADC_SampLen ;i++)
|
||||
{
|
||||
adcCode = ((((sampleData.DMA_ADC_Buffer[0][i] & 0xFFFFFF) | ((sampleData.DMA_ADC_Buffer[0][i] & 0x800000) ? 0xFF000000 : 0)) >> 8) + 32768) & 0xFFFF;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>16λ<36><CEBB><EFBFBD><EFBFBD>
|
||||
adcCount += adcCode ;
|
||||
}
|
||||
adcCode = adcCount>>sampleData.DMA_ADC_Exponent;
|
||||
return adcCode;
|
||||
}
|
||||
u16 DMA_ComputeSampleData_ADC1(void)
|
||||
{
|
||||
u16 adcCode;
|
||||
u32 adcCount;
|
||||
u8 i ;
|
||||
for(u8 i = sampleData.SkipSampNum ; i < sampleData.DMA_ADC_SampLen ;i++)
|
||||
{
|
||||
adcCode = ((((sampleData.DMA_ADC_Buffer[1][i] & 0xFFFFFF) | ((sampleData.DMA_ADC_Buffer[1][i] & 0x800000) ? 0xFF000000 : 0)) >> 8) + 32768) & 0xFFFF;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>16λ<36><CEBB><EFBFBD><EFBFBD>
|
||||
adcCount += adcCode ;
|
||||
}
|
||||
|
||||
adcCode = adcCount>>sampleData.DMA_ADC_Exponent;
|
||||
return adcCode;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/*<2A>û<EFBFBD>ͬ<EFBFBD><CDAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD><C5BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
|
||||
typedef enum {
|
||||
Signal_VDU_VRR,
|
||||
Signal_VDU1_VRH,
|
||||
@@ -165,18 +419,21 @@ typedef enum {
|
||||
//......
|
||||
Signals_Count,
|
||||
}ADC_CFG_Index_TypeDef;
|
||||
static const ADC_Config_TypeDef signal_cfgs[Signals_Count] = {
|
||||
static const ADC_SyncConfig_TypeDef signal_cfgs[Signals_Count] = {
|
||||
[Signal_VDU_VRR] = { GAIN64, ADC0_AIN0, ADC0_AIN1, GAIN1, ADC1_AIN3, ADC1_AIN4 ,SPS_977 },
|
||||
[Signal_VDU1_VRH] = { GAIN64, ADC0_AIN0, ADC0_AIN1, GAIN1, ADC1_AIN2, ADC1_AVSS ,SPS_977 },
|
||||
[Signal_VDU2_VRH] = { GAIN128, ADC0_AIN0, ADC0_AIN1, GAIN1, ADC1_AIN2, ADC1_AVSS ,SPS_977 },
|
||||
[Signal_VDU1_IRH] = { GAIN64, ADC0_AIN0, ADC0_AIN1, GAIN1, ADC1_AIN5, ADC1_AIN4 ,SPS_977 },
|
||||
[Signal_VDU2_IRH] = { GAIN128, ADC0_AIN0, ADC0_AIN1, GAIN1, ADC1_AIN5, ADC1_AIN4 ,SPS_977 },
|
||||
[Signal_VDU1_IRH] = { GAIN64, ADC0_AIN0, ADC0_AIN1, GAIN8, ADC1_AIN5, ADC1_AIN4 ,SPS_977 },
|
||||
[Signal_VDU2_IRH] = { GAIN128, ADC0_AIN0, ADC0_AIN1, GAIN8, ADC1_AIN5, ADC1_AIN4 ,SPS_977 },
|
||||
//......
|
||||
};
|
||||
|
||||
/*sampleData.TCode[CTCode]//VDU
|
||||
sampleData.TCode[RTCode]//VRR
|
||||
sampleData.TCode[HTCode]//VRH
|
||||
sampleData.TCode[ATCode]//IRH*/
|
||||
|
||||
#define CLIBMODE 1
|
||||
void FlowProcessManagement(void)//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̹<EFBFBD><CCB9><EFBFBD>״̬<D7B4><CCAC>
|
||||
{
|
||||
switch(flowProcess.Index)
|
||||
@@ -185,7 +442,7 @@ void FlowProcessManagement(void)//
|
||||
{
|
||||
HWState.SampledOver = 0;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ
|
||||
|
||||
SetSampleSiagnlForADC(signal_cfgs[Signal_VDU_VRR]);
|
||||
SetSampleSiagnlForSyncADC(&signal_cfgs[Signal_VDU_VRR]);
|
||||
|
||||
StartADCSyncSampingData();//<2F><>ʼ<EFBFBD>ɼ<EFBFBD>
|
||||
flowProcess.NextTime += 653; //40ms <20><><EFBFBD><EFBFBD>ֵ= 65535/4000*t<><74>t=40<34><30> = 653
|
||||
@@ -196,19 +453,32 @@ void FlowProcessManagement(void)//
|
||||
{
|
||||
ComputeSampleData(); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
sampleData.TCode[RTCode] = sampleData.ADCBuffer[1];//VRR <20><><EFBFBD>뻺<EFBFBD><EBBBBA>
|
||||
|
||||
#if CLIBMODE
|
||||
if(flowProcess.State == 0) //<2F><>һ<EFBFBD><D2BB>ȥPart2 VDU_VRH
|
||||
{
|
||||
SetSampleSiagnlForSyncADC(&signal_cfgs[Signal_VDU1_VRH]);//ʹ<><CAB9>VDU1<55><31><EFBFBD>вɼ<D0B2>
|
||||
}
|
||||
else //<2F><>һ<EFBFBD><D2BB>ȥPart4 VDU_IRH
|
||||
{
|
||||
SetSampleSiagnlForSyncADC(&signal_cfgs[Signal_VDU2_IRH]);//ʹ<><CAB9>VDU2<55><32><EFBFBD>вɼ<D0B2>
|
||||
}
|
||||
#else
|
||||
u16 currt_vdu = sampleData.ADCBuffer[0];//Ԥ<><D4A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
if(flowProcess.State == 0) //<2F><>һ<EFBFBD><D2BB>ȥPart2 VDU_VRH
|
||||
{
|
||||
if(currt_vdu)SetSampleSiagnlForADC(&signal_cfgs[Signal_VDU1_VRH]);//<2F><><EFBFBD>ݲ<EFBFBD><DDB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
else SetSampleSiagnlForADC(&signal_cfgs[Signal_VDU2_VRH]);
|
||||
}
|
||||
else //<2F><>һ<EFBFBD><D2BB>ȥPart4 VDU_IRH
|
||||
{
|
||||
if(currt_vdu)SetSampleSiagnlForADC(&signal_cfgs[Signal_VDU1_IRH]);//<2F><><EFBFBD>ݲ<EFBFBD><DDB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
else SetSampleSiagnlForADC(&signal_cfgs[Signal_VDU2_IRH]);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
u16 currt_vdu = sampleData.ADCBuffer[0];//Ԥ<><D4A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
if(flowProcess.State == 0) //<2F><>һ<EFBFBD><D2BB>ȥPart2 VDU_VRH
|
||||
{
|
||||
if(currt_vdu)SetSampleSiagnlForADC(signal_cfgs[Signal_VDU1_VRH]);//<2F><><EFBFBD>ݲ<EFBFBD><DDB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
else SetSampleSiagnlForADC(signal_cfgs[Signal_VDU2_VRH]);
|
||||
}
|
||||
else //<2F><>һ<EFBFBD><D2BB>ȥPart4 VDU_IRH
|
||||
{
|
||||
if(currt_vdu)SetSampleSiagnlForADC(signal_cfgs[Signal_VDU1_IRH]);//<2F><><EFBFBD>ݲ<EFBFBD><DDB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
else SetSampleSiagnlForADC(signal_cfgs[Signal_VDU2_IRH]);
|
||||
}
|
||||
|
||||
StartADCSyncSampingData();//<2F><>ʼ<EFBFBD>ɼ<EFBFBD>
|
||||
flowProcess.NextTime += 1048;//64ms
|
||||
@@ -218,77 +488,24 @@ void FlowProcessManagement(void)//
|
||||
case 2: //Part3
|
||||
{
|
||||
ComputeSampleData(); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
sampleData.TCode[CTCode] = sampleData.ADCBuffer[0];//VDU <20><><EFBFBD>뻺<EFBFBD><EBBBBA>
|
||||
//Part2 Part4<74><34>֧
|
||||
if(flowProcess.State == 0)sampleData.TCode[HTCode] = sampleData.ADCBuffer[1];//VRH <20><><EFBFBD>뻺<EFBFBD><EBBBBA>
|
||||
else sampleData.TCode[ATCode] = sampleData.ADCBuffer[1];//IRH <20><><EFBFBD>뻺<EFBFBD><EBBBBA>
|
||||
|
||||
HWState.SampledOver = 1; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
StopSamplingTimerInterval();//<2F>رղɼ<D5B2>ʱ<EFBFBD><CAB1> <20><><EFBFBD><EFBFBD>Part3
|
||||
if(flowProcess.State) flowProcess.State = 0 ;//<2F>л<EFBFBD>Part2 Part4
|
||||
else flowProcess.State = 1 ;
|
||||
|
||||
flowProcess.Index = 0;
|
||||
}break;
|
||||
|
||||
default : flowProcess.Index = 0; break;
|
||||
}
|
||||
SetNextProcess();
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
//Уģʽ<C4A3><CABD>״̬<D7B4><CCAC>
|
||||
void FlowProcessManagement_Calib(void)//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̹<EFBFBD><CCB9><EFBFBD>״̬<D7B4><CCAC>
|
||||
{
|
||||
switch(flowProcess.Index)
|
||||
{
|
||||
case 0: //Part1<74><31><EFBFBD><EFBFBD> VDU<44><55>VRR<52><52><EFBFBD><EFBFBD>
|
||||
{
|
||||
HWState.SampledOver = 0;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ
|
||||
|
||||
SetSampleSiagnlForADC(signal_cfgs[Signal_VDU_VRR]);
|
||||
StartADCSyncSampingData();//<2F><>ʼ<EFBFBD>ɼ<EFBFBD>
|
||||
flowProcess.NextTime += 653; //40ms <20><><EFBFBD><EFBFBD>ֵ= 65535/4000*t<><74>t=40<34><30> = 653
|
||||
flowProcess.Index = 1;
|
||||
}break;
|
||||
|
||||
case 1: //Part2 Part4<74><34>֧
|
||||
{
|
||||
ComputeSampleData(); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
sampleData.TCode[RTCode] = sampleData.ADCBuffer[1];//VRR <20><><EFBFBD>뻺<EFBFBD><EBBBBA>
|
||||
|
||||
if(flowProcess.State == 0) //<2F><>һ<EFBFBD><D2BB>ȥPart2 VDU_VRH
|
||||
{
|
||||
SetSampleSiagnlForADC(signal_cfgs[Signal_VDU1_VRH]);//ʹ<><CAB9>VDU1<55><31><EFBFBD>вɼ<D0B2>
|
||||
}
|
||||
else //<2F><>һ<EFBFBD><D2BB>ȥPart4 VDU_IRH
|
||||
{
|
||||
SetSampleSiagnlForADC(signal_cfgs[Signal_VDU2_IRH]);//ʹ<><CAB9>VDU2<55><32><EFBFBD>вɼ<D0B2>
|
||||
}
|
||||
StartADCSyncSampingData();//<2F><>ʼ<EFBFBD>ɼ<EFBFBD>
|
||||
flowProcess.NextTime += 1048;//64ms
|
||||
flowProcess.Index = 2;
|
||||
}break;
|
||||
|
||||
case 2: //Part3
|
||||
{
|
||||
ComputeSampleData(); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
//Part2 Part4<74><34>֧
|
||||
if(flowProcess.State == 0)
|
||||
#if CLIBMODE
|
||||
if(flowProcess.State == 0)//Part2
|
||||
{
|
||||
sampleData.TCode[CTCode] = sampleData.ADCBuffer[0];//VDU1 <20><><EFBFBD>뻺<EFBFBD><EBBBBA>
|
||||
sampleData.TCode[HTCode] = sampleData.ADCBuffer[1];//VRH <20><><EFBFBD>뻺<EFBFBD><EBBBBA>
|
||||
}
|
||||
else
|
||||
else //Part4
|
||||
{
|
||||
sampleData.TCode[BTCode] = sampleData.ADCBuffer[0];//VDU2 <20><><EFBFBD>뻺<EFBFBD><EBBBBA>
|
||||
sampleData.TCode[ATCode] = sampleData.ADCBuffer[1];//IRH <20><><EFBFBD>뻺<EFBFBD><EBBBBA>
|
||||
}
|
||||
#else
|
||||
sampleData.TCode[CTCode] = sampleData.ADCBuffer[0];//VDU <20><><EFBFBD>뻺<EFBFBD><EBBBBA>
|
||||
if(flowProcess.State == 0)sampleData.TCode[HTCode] = sampleData.ADCBuffer[1];//VRH <20><><EFBFBD>뻺<EFBFBD><EBBBBA>
|
||||
else sampleData.TCode[ATCode] = sampleData.ADCBuffer[1];//IRH <20><><EFBFBD>뻺<EFBFBD><EBBBBA>
|
||||
#endif
|
||||
|
||||
|
||||
HWState.SampledOver = 1; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
StopSamplingTimerInterval();//<2F>رղɼ<D5B2>ʱ<EFBFBD><CAB1> <20><><EFBFBD><EFBFBD>Part3
|
||||
@@ -296,15 +513,84 @@ void FlowProcessManagement_Calib(void)//
|
||||
else flowProcess.State = 1 ;
|
||||
|
||||
flowProcess.Index = 0;
|
||||
}break;
|
||||
}break;
|
||||
|
||||
default : flowProcess.Index = 0; break;
|
||||
}
|
||||
SetNextProcess();
|
||||
}
|
||||
|
||||
//mcuModeSleeping = 1 ; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><CDB9><EFBFBD>ģʽ
|
||||
//
|
||||
|
||||
|
||||
|
||||
void DMA_sampleMainProcess(void)//DMA<4D><41><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̹<EFBFBD><CCB9><EFBFBD>״̬<D7B4><CCAC>
|
||||
{
|
||||
volatile u8 DMA_State_Index;
|
||||
|
||||
switch(DMA_State_Index)
|
||||
{
|
||||
case 0 : //67.68ms sps=977
|
||||
if(HWState.SampledOver) return;
|
||||
|
||||
HWState.SampledOver = 0; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ
|
||||
sampleData.SkipSampNum = 0 ;
|
||||
sampleData.DMA_ADC_SampLen = 16 ;
|
||||
sampleData.DMA_ADC_Exponent= 4;
|
||||
SetSampleSiagnlForSyncADC(&signal_cfgs[Signal_VDU_VRR]);// <20><><EFBFBD>ò<EFBFBD><C3B2><EFBFBD><EFBFBD>ź<EFBFBD>
|
||||
StartDMAForADCSyncSampingData(); // <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>
|
||||
DMA_State_Index++;
|
||||
//TEST_PIN_TOGGLE();
|
||||
break;
|
||||
case 1 :
|
||||
if(!sampleData.DMA_ADC_adcflag[0]) return;
|
||||
if(!sampleData.DMA_ADC_adcflag[1]) return;
|
||||
sampleData.DMA_ADC_adcflag[0]= 0;
|
||||
sampleData.DMA_ADC_adcflag[1]= 0;
|
||||
|
||||
//TEST_PIN_TOGGLE();
|
||||
sampleData.TCode[CTCode] = DMA_ComputeSampleData_ADC0();
|
||||
sampleData.TCode[RTCode] = DMA_ComputeSampleData_ADC1();
|
||||
|
||||
sampleData.SkipSampNum = 0 ;
|
||||
sampleData.DMA_ADC_SampLen = 32 ;
|
||||
sampleData.DMA_ADC_Exponent= 5;
|
||||
|
||||
SetSampleSiagnlForSyncADC(&signal_cfgs[Signal_VDU2_VRH]);// <20><><EFBFBD>ò<EFBFBD><C3B2><EFBFBD><EFBFBD>ź<EFBFBD>
|
||||
StartDMAForADCSyncSampingData(); // <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>
|
||||
DMA_State_Index++;
|
||||
break;
|
||||
case 2 :
|
||||
if(!sampleData.DMA_ADC_adcflag[0]) return;
|
||||
if(!sampleData.DMA_ADC_adcflag[1]) return;
|
||||
sampleData.DMA_ADC_adcflag[0]= 0;
|
||||
sampleData.DMA_ADC_adcflag[1]= 0;
|
||||
|
||||
sampleData.TCode[BTCode] = DMA_ComputeSampleData_ADC0();
|
||||
sampleData.TCode[HTCode] = DMA_ComputeSampleData_ADC1();
|
||||
|
||||
|
||||
sampleData.SkipSampNum = 0 ;
|
||||
sampleData.DMA_ADC_SampLen = 32 ;
|
||||
sampleData.DMA_ADC_Exponent= 5;
|
||||
SetSampleSiagnlForSyncADC(&signal_cfgs[Signal_VDU2_IRH]);// <20><><EFBFBD>ò<EFBFBD><C3B2><EFBFBD><EFBFBD>ź<EFBFBD>
|
||||
StartDMAForADCSyncSampingData(); // <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>
|
||||
DMA_State_Index++;
|
||||
break;
|
||||
case 3 :
|
||||
if(!sampleData.DMA_ADC_adcflag[0]) return;
|
||||
if(!sampleData.DMA_ADC_adcflag[1]) return;
|
||||
sampleData.DMA_ADC_adcflag[0]= 0;
|
||||
sampleData.DMA_ADC_adcflag[1]= 0;
|
||||
sampleData.TCode[ATCode] = DMA_ComputeSampleData_ADC1();
|
||||
|
||||
HWState.SampledOver = 1; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
DMA_State_Index = 0 ;
|
||||
break;
|
||||
default : DMA_State_Index = 0 ;
|
||||
}
|
||||
}
|
||||
/*================================================================================*/
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user