Перейти к содержанию

VREFBUF (буфер опорного напряжения)

Точность АЦП STM32 упирается в опорное напряжение VREF+. Обычно его берут с питания VDDA или внешнего источника, но в STM32H7 и ряде других семейств есть свой стабилизированный источник — буфер опорного напряжения VREFBUF.

Обновлено Редакция GAW

VREFBUF (voltage reference buffer) — встроенный в STM32 буфер опорного напряжения. По RM0433 (разд. 27.1) его выход служит опорой для встроенных АЦП и ЦАП, а через вывод VREF+ — и для внешних схем. Это альтернатива внешнему источнику опорного напряжения и опоре от питания VDDA.

Напряжения (биты VRS)

VRSНапряжениеПримечание
000около 2,5 В
001около 2,048 Вудобно для АЦП: 0,5 мВ на код при 12 битах (наш расчёт)
010около 1,8 В
011около 1,5 Вс АЦП и ЦАП не совместимо

Минимальное VDDA зависит от выбранного напряжения и указано в даташите. Менять VRS можно только при выключенном буфере.

Четыре режима (табл. 235)

ENVRHIZРежим
00буфер выключен, VREF+ притянут к VSSA
01внешнее опорное напряжение (после сброса), VREF+ — вход
10внутреннее опорное, VREF+ подключён к выходу буфера
11удержание: напряжение на VREF+ держит внешний конденсатор

После включения ждут флаг VRR — выход достиг заданного уровня.

Чем отличается от VREFINT

VREFINT — внутренний источник, который меряют каналом АЦП, чтобы вычислить фактическое опорное напряжение. VREFBUF — буфер, который само опорное напряжение VREF+ задаёт, а вместе с ним и шкалу АЦП. Погрешность опорного напряжения и её влияние на измерение можно оценить в калькуляторе погрешности ИОН; настройка АЦП — в статье «АЦП STM32».

Частые вопросы

Какое напряжение выдаёт VREFBUF?

Одно из четырёх по битам VRS: около 2,5 В, 2,048 В, 1,8 В или 1,5 В (RM0433). Значение 1,5 В с АЦП и ЦАП не совместимо — оно только для внешних схем. Минимальное напряжение VDDA для каждого значения указано в даташите конкретного микроконтроллера: буфер не может выдать больше, чем позволяет питание.

Как включить VREFBUF?

Пока буфер выключен (ENVR = 0), выбрать напряжение битами VRS, затем установить ENVR = 1 и сбросить HIZ, чтобы вывод VREF+ подключился к выходу буфера, и дождаться флага VRR — выход достиг заданного уровня. После сброса регистр в режиме внешнего опорного напряжения: буфер выключен, VREF+ — вход.

Можно ли подавать внешнее опорное напряжение при включённом VREFBUF?

Нет: в режиме внутреннего опорного напряжения вывод VREF+ соединён с выходом буфера, и внешний источник будет с ним бороться. Для внешнего ИОН оставляют режим по умолчанию — ENVR = 0, HIZ = 1, тогда VREF+ работает как вход.

Источники

  1. STMicroelectronics. RM0433: STM32H742, STM32H743/753 and STM32H750 Value line advanced Arm-based 32-bit MCUs. Reference manual, Rev 9 — разд. 27.1: буфер опорного напряжения может служить опорой для встроенных АЦП и ЦАП и для внешних компонентов через вывод VREF+; разд. 27.2: четыре напряжения битами VRS — 000 около 2,5 В, 001 около 2,048 В, 010 около 1,8 В, 011 около 1,5 В (с АЦП и ЦАП не совместимо); минимальное VDDA зависит от VRS — по даташиту; табл. 235: ENVR = 0, HIZ = 0 — буфер выключен, VREF+ притянут к VSSA; 0/1 — внешнее опорное (по умолчанию), VREF+ — вход; 1/0 — внутреннее опорное, VREF+ подключён к выходу буфера; 1/1 — режим удержания: напряжение на VREF+ держит внешний конденсатор, контроль VRR выключен; после включения (ENVR = 1, HIZ = 0) ждать флаг VRR; разд. 27.3.1: VREFBUF_CSR, сброс 0x0000 0002, VRS менять только при ENVR = 0; разд. 6.4 — VREF+ — внешнее опорное для АЦП и ЦАП; при включённом буфере VREF+ и VREF− формирует он
  2. STMicroelectronics. CMSIS device header stm32h743xx.h, cmsis-device-h7 v1.10.7 (GitHub, Apache-2.0) — VREFBUF, поля VREFBUF_CSR_ENVR, VREFBUF_CSR_HIZ, VREFBUF_CSR_VRR, VREFBUF_CSR_VRS, регистр подстройки VREFBUF_CCR_TRIM

Нашли ошибку?