Files
CHJ/user/Protocol/SampProcess.c

91 lines
2.4 KiB
C
Raw Normal View History

2026-03-20 21:16:58 +08:00
#include "../main/SystemInclude.h"
2026-03-20 21:19:04 +08:00
/*
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
1.<EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD>SetSampleSiagnlForADC
2.<EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD>StartADC0SampingData StartADC1SampingData StartADCSyncSampingData
3.<EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD>IRQ ReadSamplingData
4.<EFBFBD><EFBFBD><EFBFBD>ComputeSampleData
*/
__Samp_Buf_TypeDef sampleData;
2026-03-20 21:16:58 +08:00
2026-03-20 21:19:04 +08:00
void ADC0_IRQHandler(void)
2026-03-20 21:16:58 +08:00
{
2026-03-20 21:19:04 +08:00
if(LHL_ADC_GetPending(ADC_0, ADC_FLAG_RDY) == SET)
{
if(sampleData.SkipSampNum) sampleData.SkipSampNum -- ;
ReadSamplingData(); //<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
}
2026-03-20 21:16:58 +08:00
}
2026-03-20 21:19:04 +08:00
void ConversionTimerIRQ_Callback(void)
2026-03-20 21:16:58 +08:00
{
2026-03-20 21:19:04 +08:00
if(sampleData.SkipSampNum) sampleData.SkipSampNum -- ;
ReadSamplingData(); //<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
2026-03-20 21:16:58 +08:00
}
2026-03-20 21:19:04 +08:00
void SetSampleSiagnlForADC(ADC_Config_TypeDef adc_cfg)
2026-03-20 21:16:58 +08:00
{
2026-03-20 21:19:04 +08:00
sampleData.adcConfig.Gain0 = adc_cfg.Gain0;
sampleData.adcConfig.PChan0 = adc_cfg.PChan0;
sampleData.adcConfig.NChan0 = adc_cfg.NChan0;
sampleData.adcConfig.Gain1 = adc_cfg.Gain1;
sampleData.adcConfig.PChan1 = adc_cfg.PChan1;
sampleData.adcConfig.NChan1 = adc_cfg.NChan1;
sampleData.adcConfig.SPS = adc_cfg.SPS;
2026-03-20 21:16:58 +08:00
}
//<2F><>ʼת<CABC><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>---------------------------------------------------------------
void StartADC0SampingData(void)
{
sampleData.ADCBuffer[0]=0;
sampleData.Counter=0;
sampleData.SkipSampNum = 3 ;
2026-03-20 21:19:04 +08:00
ADC0_Conversion_Init(sampleData.adcConfig);
2026-03-20 21:16:58 +08:00
2026-03-20 21:19:04 +08:00
}
2026-03-20 21:16:58 +08:00
void StartADC1SampingData(void)
{
sampleData.ADCBuffer[1]=0;
sampleData.Counter=0;
sampleData.SkipSampNum = 3 ;
2026-03-20 21:19:04 +08:00
ADC1_Conversion_Init(sampleData.adcConfig);
2026-03-20 21:16:58 +08:00
}
void StartADCSyncSampingData(void)
2026-03-20 21:19:04 +08:00
{
2026-03-20 21:16:58 +08:00
sampleData.ADCBuffer[0]=0;
sampleData.ADCBuffer[1]=0;
sampleData.Counter=0;
sampleData.SkipSampNum = 3 ;
2026-03-20 21:19:04 +08:00
#if 1
ADC0_1_SyncConversion_Init(sampleData.adcConfig);
#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,ConversionTimerIRQ_Callback );//ע<><D7A2>timer2<72>жϻص<CFBB><D8B5><EFBFBD><EFBFBD><EFBFBD>
#endif
2026-03-20 21:16:58 +08:00
}
void ReadSamplingData(void)//ADC<44>ж϶<D0B6>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> BPS
{
2026-03-20 21:19:04 +08:00
sampleData.ADCBuffer[0] += ADC_ReadSampleData(ADC_0); //<2F><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD><EFBFBD>ۼ<EFBFBD>
sampleData.ADCBuffer[1] += ADC_ReadSampleData(ADC_1); //<2F><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD><EFBFBD>ۼ<EFBFBD>
sampleData.Counter++; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD><D0B6>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// if(sampleData.Counter < sampleData.CounterMax) return;
2026-03-20 21:16:58 +08:00
}
void ComputeSampleData(void) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
2026-03-20 21:19:04 +08:00
StopADCConversion(ADC_0);
StopADCConversion(ADC_1);
if(sampleData.Counter != 0)//<2F>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƽ<EFBFBD><C6BD>
2026-03-20 21:16:58 +08:00
{
sampleData.ADCBuffer[0] /= (u32)sampleData.Counter;
sampleData.ADCBuffer[1] /= (u32)sampleData.Counter;
}
}