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;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|