ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Суббота
23 ноября
1230550 Топик полностью
UniSoft (10.08.2022 07:57, просмотров: 305) ответил Kceния на Разрядность этим способом повысить можно, но ... число значащих разрядов среди них выше 12-ти не повысить :). Сама копила (с помощью DMA) 256 отчетов подряд, получала из них сумму и делила ее на 16 (т.е. сдвигала на 4 разряда вправо), чтобы результат поместился в разрядную сетку int16_t. Польза от этого метода есть - все 12 разрядов ADC становятся значимыми, даже те, что прежде дрожали, но получить дополнительные разряды в придачу к этим 12-ти невозможно.
будет лучше, если скомбинировать оверсемплинг и усреднение... 

сумму 16-и выборок, поделить на 4, а результат усреднить (суммировать 16 результатов и поделить на 16)

так результат получается точнее (как ни странно).


что-то вроде этого (это псевдокод, не докапывайтесь... у меня DMA делает 16 выборок)


uint32_t res = 0;
for (int i = 0; i < 16; i++) {
    uint32_t tmp = 0;
    for (int j = 0; j < 16; j++) tmp += GetADC(0);
    res += tmp >> 2;
}
return (res >> 4);