[求助] ADC采样原理

power_wong921   2024-3-4 09:15 楼主

大家好!最近看到一个用PIC18F45K80系列单片机写的ADC采样代码,主要代码如下:
ADC是12位精度的,一个通道采样64次,然后求平均值,但是我对V_SampleSum += (V_SampleData >> 4);这句不理解,V_SampleSum是累计64次的AD采样值,这里为什么不直接使用 V_SampleSum += ADC_SampleData;

还望专家们解释下这里代码的意义,谢谢了!

#define        ShiftPoint            6
uint          V_SampleData = 0;                         //临时变量
ulong          V_SampleSum  = 0;                         //输出电压采集值累加
volatile    uint          V_SampleValueFilt = 0;                         //输出电压滤波采集值
 
ADC_SampleData = (uint)(((ADRESH&0x0F)<<8) + ADRESL);
 
case    S_54V:                    //54V采样电压通道
            {
                V_SampleData = ADC_SampleData + (V_SampleData - (V_SampleData >> 4));
                if(SampleFlag == 0)
                    V_SampleSum    += (V_SampleData >> 4);
                                        
                break;
            }
 
V_SampleValueFilt = (V_SampleSum>>(ShiftPoint));//求最终的ADC平均值

 

回复评论 (3)

他这个采样速度是多少呀,这样采样下来,是不是精度要高很多呀?

点赞  2024-3-4 10:02

你好!系统时钟FOSC是11.0592的晶振,然后4倍频,AD转换时钟是FOSC/64,AD结果获取时间TAD = 6

点赞  2024-3-4 10:08
引用: lugl4313820 发表于 2024-3-4 10:02 他这个采样速度是多少呀,这样采样下来,是不是精度要高很多呀?

AD转换完成后会产生中断

点赞  2024-3-4 10:30
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复