АЦП STM32 сначала заряжает внутренний конденсатор выборки от входа, затем последовательными приближениями переводит напряжение в код. Время выборки задаётся для каждого канала в регистрах SMPR, время самого преобразования зависит от разрядности.
Время преобразования
У STM32F1 (RM0008, раздел 11.6) одно преобразование длится время выборки плюс 12,5 такта АЦП, у STM32F4 (RM0090, поле RES; DS8626, таблица 67) — время выборки плюс по такту на бит разрядности:
Частота АЦП — частота шины APB2, делённая на 2, 4, 6 или 8 полем ADCPRE (у STM32F1 оно в RCC_CFGR, у STM32F4 — в ADC_CCR). Предел по даташиту: 14 МГц у STM32F103, 36 МГц у STM32F407 при питании VDDA от 2,4 В и 18 МГц ниже 2,4 В. При сканировании нескольких каналов каждый канал опрашивается во столько раз реже, сколько каналов в последовательности.
Сопротивление источника
За время выборки внутренний конденсатор C_ADC заряжается через сопротивление источника R_AIN и сопротивление ключа R_ADC. Чтобы ошибка была меньше четверти младшего разряда 12 бит, даташиты ограничивают сопротивление источника (DS5319 и DS8626, уравнение 1):
где k — время выборки в тактах (у STM32F4 — минус 0,5 такта), C_ADC = 8 пФ и R_ADC = 1 кОм у STM32F103, 4 пФ и 6 кОм у STM32F407. Сверху оба даташита ограничивают R_AIN 50 кОм. Если источник выше этого предела, увеличьте время выборки, поставьте конденсатор у входа АЦП или буферный усилитель.
Поля регистров АЦП — время выборки SMPx, последовательности SQ, запуск от таймеров — разобраны на страницах регистров STM32F1 и STM32F4.
Частые вопросы
За сколько STM32F103 делает одно преобразование?
За время выборки плюс 12,5 такта АЦП. При наибольшей частоте 14 МГц и выборке 1,5 такта — 14 тактов, ровно 1 мкс, то есть до 1 миллиона преобразований в секунду (RM0008, раздел 11.6). Но 14 МГц получаются не от любой частоты шины: от 72 МГц делитель 6 даёт только 12 МГц.
Какое сопротивление источника допускает АЦП STM32F103?
Зависит от времени выборки: по таблице 48 даташита DS5319 при 14 МГц — 0,4 кОм при 1,5 такта, 11,4 кОм при 13,5 такта, 50 кОм при 55,5 такта и больше. Делитель напряжения на резисторах по 100 кОм видится с входа как 50 кОм — ему нужна выборка не короче 55,5 такта.
Как быстро работает АЦП STM32F407?
При 30 МГц и 12 битах одно преобразование занимает 15 тактов — 0,5 мкс, это 2 миллиона выборок в секунду (DS8626, таблица 67). На 6 битах — 9 тактов, 0,3 мкс. Чередуя два или три АЦП, можно получить до 3,75 и 6 Msps.
Источники
- STMicroelectronics. RM0008 Rev 21. Reference manual: STM32F101xx, STM32F102xx, STM32F103xx, STM32F105xx and STM32F107xx — 11.6 — Tconv = время выборки + 12,5 такта, пример: 14 МГц и 1,5 такта — 1 мкс (эталон тестов); 11.12.4–5 — коды SMPx от 1,5 до 239,5 такта
- STMicroelectronics. DS5319 Rev 20. STM32F103x8, STM32F103xB datasheet — таблица 47 — f_ADC до 14 МГц, R_ADC до 1 кОм, C_ADC до 8 пФ, R_AIN до 50 кОм; уравнение 1 и таблица 48 — R_AIN max при 14 МГц для каждого времени выборки (эталон тестов)
- STMicroelectronics. RM0090 Rev 22. Reference manual: STM32F405/415, STM32F407/417, STM32F427/437 and STM32F429/439 — 13.13.2, поле RES: 12, 10, 8, 6 бит — 15, 13, 11, 9 тактов с самой короткой выборкой; коды SMPx от 3 до 480 тактов
- STMicroelectronics. DS8626 Rev 12. STM32F405xx, STM32F407xx datasheet — таблица 67 — f_ADC до 36 МГц при VDDA 2,4–3,6 В и до 18 МГц при 1,8–2,4 В, R_ADC до 6 кОм, C_ADC 4 пФ, время преобразования при 30 МГц от 0,50 до 16,40 мкс, 2 Msps (эталон тестов); уравнение 1 — R_AIN
Где пригодится
Встроить калькулятор на свой сайт
Скопируйте код и вставьте его в HTML страницы, статьи или вики. Виджет бесплатный, без рекламы, счётчиков и cookie. Условие одно — ссылка на GAW под рамкой остаётся на месте. Подробнее о виджетах
<iframe src="https://gaw.ru/embed/stm32-adc/" title="АЦП STM32: время преобразования, частота, сопротивление источника" width="100%" height="640" style="border:1px solid #e3e5e9;border-radius:8px" loading="lazy" allow="clipboard-write"></iframe>
<p style="margin:6px 0 0;font-size:14px">Калькулятор: <a href="https://gaw.ru/tools/stm32-adc/">АЦП STM32: время преобразования, частота, сопротивление источника</a> — GAW.ru</p>Автоподстройка высоты рамки
Если сайт разрешает скрипты, добавьте этот код один раз в любом месте страницы: рамка будет менять высоту вместе с результатом расчёта.
<script>window.addEventListener("message",function(e){if(e.origin!=="https://gaw.ru"||!e.data||e.data.type!=="gaw:embed-height")return;var f=document.querySelectorAll('iframe[src^="https://gaw.ru/embed/"]');for(var i=0;i<f.length;i++)if(f[i].contentWindow===e.source)f[i].style.height=e.data.height+"px"})</script>Обновлено .
Нашли ошибку в расчёте?