NUCLEO-G431RB测评
ADC(过采样)
文档描述
按照文档中描述,此芯片中的过采样是通过average每一次采样的值来实现较高的SNR,可达16bit。计算公式如下:
其中N代表过采样率:2~256,M则是取平均,而在实际中除法是通过右移来实现的,右移两位就是除以4。在电路中,整个原始数据是存储在20bit的寄存器上,所以一般情况下,如果想要得到16bit的精度,可以有以下几种办法:A.直接取值:N=32,右移5位;N=64,右移6位等。B.通过舍去最后4位:N=32,右移1位,N=64,右移2位,或者直接利用上面的公式计算,对应的表格如下:
注意:结束转换位标志EOC只会在每进行N次过采样之后才有效。在过采样模式下,不支持offset。
如果采用OSR=64,右移两位,实际的结果中最后四位为小数。
hadc1.Instance = ADC1;
hadc1.Init.ClockPrescaler = ADC_CLOCK_SYNC_PCLK_DIV2;
hadc1.Init.Resolution = ADC_RESOLUTION_12B; //12,10,8,6 bit
hadc1.Init.DataAlign = ADC_DATAALIGN_RIGHT;
hadc1.Init.GainCompensation = 0;
hadc1.Init.ScanConvMode = ADC_SCAN_DISABLE;
hadc1.Init.EOCSelection = ADC_EOC_SINGLE_CONV;
hadc1.Init.LowPowerAutoWait = DISABLE;
hadc1.Init.ContinuousConvMode = ENABLE;
hadc1.Init.NbrOfConversion = 1;
hadc1.Init.DiscontinuousConvMode = DISABLE;
hadc1.Init.ExternalTrigConv = ADC_EXTERNALTRIG_T1_TRGO;
hadc1.Init.ExternalTrigConvEdge = ADC_EXTERNALTRIGCONVEDGE_RISING;
hadc1.Init.DMAContinuousRequests = DISABLE;
hadc1.Init.Overrun = ADC_OVR_DATA_OVERWRITTEN;
hadc1.Init.OversamplingMode = ENABLE;
hadc1.Init.Oversampling.Ratio = ADC_OVERSAMPLING_RATIO_64;
hadc1.Init.Oversampling.RightBitShift = ADC_RIGHTBITSHIFT_2;
hadc1.Init.Oversampling.TriggeredMode = ADC_TRIGGEREDMODE_SINGLE_TRIGGER;
hadc1.Init.Oversampling.OversamplingStopReset = ADC_REGOVERSAMPLING_CONTINUED_MODE;
if (HAL_ADC_Init(&hadc1) != HAL_OK)
{
Error_Handler();
}
/** Configure the ADC multi-mode
*/
multimode.Mode = ADC_MODE_INDEPENDENT;
if (HAL_ADCEx_MultiModeConfigChannel(&hadc1, &multimode) != HAL_OK)
{
Error_Handler();
}
/** Configure Analog WatchDog 1
*/
AnalogWDGConfig.Channel = ADC_CHANNEL_1;
if (HAL_ADC_AnalogWDGConfig(&hadc1, &AnalogWDGConfig) != HAL_OK)
{
Error_Handler();
}
/** Configure Regular Channel
*/
sConfig.Channel = ADC_CHANNEL_6;
sConfig.Rank = ADC_REGULAR_RANK_1;
sConfig.SamplingTime = ADC_SAMPLETIME_640CYCLES_5;
sConfig.SingleDiff = ADC_SINGLE_ENDED;
sConfig.OffsetNumber = ADC_OFFSET_NONE;
sConfig.Offset = 0;
通过终端窗口观察可知,每次RESET后,再开始电压的dc值,就会与前一次的差别大概在3以内,而且如果通过RESET重置后,开始的dc值,也会同以上类似。
由以上结果和之前的没有过采样的结果比较,可知由于过采样的加入,使得数据的精度提高,如果电压固定的话,基本不会由于采样时间的差别而导致结果的差别,使得结果更加可靠,可以很明显地感觉到精度的提升。
此内容由EEWORLD论坛网友elike原创,如需转载或用于商业用途需征得作者同意并注明出处