Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Кармин Новиелло - Освоение STM32.pdf
Скачиваний:
2743
Добавлен:
23.09.2021
Размер:
47.68 Mб
Скачать

12. Аналого-цифровое преобразование

Довольно часто к микроконтроллеру подключают аналоговые периферийные устройства. В цифровую эпоху все еще существует множество устройств, вырабатывающих аналоговые сигналы: датчики, потенциометры, преобразователи и аудиоустройства – это всего лишь несколько примеров аналоговых устройств, генерирующих переменное напряжение, которое обычно находится в определенном фиксированном интервале значений. Считывая это напряжение, мы можем преобразовать его в числовое представление, подходящее для обработки нашей микропрограммой. Например, TMP36 является достаточно популярным датчиком температуры, который вырабатывает изменяющееся напряжение, пропорциональное рабочему напряжению схемы (говорят, что он дает про-

порционально зависимый (ratiometric) выходной сигнал) и температуре окружающей среды.

Все микроконтроллеры STM32 имеют как минимум один аналого-цифровой преобразователь (АЦП) – периферийное устройство, способное получать несколько входных напряжений через специально предназначенный I/O и преобразовывать их в числовое представление. Входные напряжения сравниваются с хорошо известным фиксированным напряжением, также известным как опорное напряжение (reference voltage). Это опорное напряжение может быть либо получено из домена (секции питания) VDDA, или от внешнего генератора фиксированного опорного напряжения в микроконтроллерах с большим количеством выводов (эти микроконтроллеры предоставляют отдельный вывод, называемый VREF+). Большинство микроконтроллеров STM32 предоставляют 12разрядный АЦП. Некоторые из ассортимента STM32F3 имеют даже 16-разрядный АЦП.

В отличие от других периферийных устройств STM32, которые мы видели до сих пор, АЦП могут сильно отличаться между различными сериями STM32 и даже в пределах одного семейства. По этой причине приведем только введение в работу этого полезного периферийного устройства, оставляя читателю ответственность за глубокий анализ АЦП в конкретном микроконтроллере, который он рассматривает.

Прежде чем анализировать функции, предлагаемые АЦП в микроконтроллере STM32 и связанный с ним CubeHAL, будет лучшим кратко рассказать о том, как работает данное периферийное устройство.

12.1. Введение в АЦП последовательного приближения

Почти во всех микроконтроллерах STM32 АЦП реализован как 12-разрядный АЦП, после-

довательного приближения (Successive Approximation Register, SAR)1. В зависимости от вида

1 На момент написания данной главы АЦП, предоставляемый серией STM32F37x, является единственным заметным исключением из этого правила, поскольку он предоставляет более точный 16-разрядный АЦП с сигма-дельта (Σ-Δ) модулятором. Этот тип АЦП не будет рассмотрен в данной книге. Однако процедуры HAL для его использования имеют одинаковую организацию.

Аналого-цифровое преобразование

366

поставки и используемого корпуса, он может иметь различное количество мультиплексированных входных каналов (обычно более десяти каналов в большинстве микроконтроллеров STM32), позволяющих измерять сигналы от внешних источников. Кроме того, также доступны некоторые внутренние каналы: канал для внутреннего датчика температуры (VSENSE), канал для внутреннего опорного напряжения (VREF INT), канал для контроля внешнего напряжения источника питания (VBAT) и канал для мониторинга напряжения ЖК-дисплеев в тех микроконтроллерах, которые нативно предоставляют контроллер монохромных пассивных ЖК-дисплеев (например, STM32L053 является одним из них). АЦП, реализованные в STM32F3 и в большинстве микроконтроллеров STM32L4, также способны преобразовывать полностью дифференциальные входы. В таблице 1 приведено точное количество АЦП и связанные с ними источники входного сигнала для всех микроконтроллеров STM32, оснащающих шестнадцать плат Nucleo, рассматриваемых нами в данной книге.

Таблица 1: Наличие АЦП в микроконтроллерах STM32, оснащающих платы Nucleo

Аналого-цифровое преобразование различных каналов может выполняться в одноканальном, многоканальном (режиме сканирования), непрерывном или прерывистом режимах. Результат АЦП сохраняется в 16-разрядном регистре данных с левым или правым выравниванием. Кроме того, АЦП также реализует функцию аналогового сторожевого таймера, которая позволяет приложению обнаруживать, выходит ли входное напряжение за пределы пользовательских верхнего или нижнего пороговых значений: если это происходит, срабатывает специальный IRQ.

Рисунок 1: Упрощенная структурная схема АЦП

Аналого-цифровое преобразование

367

На рисунке 1 показана структурная схема АЦП. Блок выбора входного канала и управления сканированием выполняет выбор источника входного сигнала для АЦП. В зависимости от режима преобразования (одноканальный, многоканальный или непрерывный режимы) данный блок автоматически переключается между входными каналами, так что каждый из них может быть считан с определенным периодом. Выход этого блока питает АЦП.

На рисунке 1 также показана другая важная часть АЦП: блок управления запуском и остановом. Его роль заключается в управлении процессом аналого-цифрового преобразования, который может запускаться программно или переменным количеством источников входного сигнала. Кроме того, он внутренне подключен к линии TRGO некоторых таймеров, поэтому преобразования могут выполняться автоматически по таймеру в режиме DMA. Мы проанализируем этот важный режим АЦП позже.

Рисунок 2: Внутренняя структура блока SAR ADC

На рисунке 2 показаны основные блоки, формирующие блок АЦП последовательного приближения (SAR ADC), показанный на рисунке 1. Входной сигнал проходит через блок SHA. Как вы могли заметить на рисунке 1, переключатель и конденсатор подключены последовательно ко входу АЦП. Эта часть представляет блок выборки и хранения (Sample-and-Hold, SHA), показанный на рисунке 2, который доступен во всех АЦП. Данный блок играет важную роль, заключающуюся в поддержании неизменным входного сигнала в течение такта преобразования (выборки; дискретизации). Благодаря внутреннему блоку синхронизации, который регулируется конфигурируемым тактовым сигналом, как мы увидим позже, SAR непрерывно подключает/отключает источник входного сигнала, закрывая/открывая «переключатель» на рисунке 1. Чтобы поддерживать уровень напряжения на входе постоянным SHA выполняется в связке с цепью конденсаторов: это гарантирует, что сигнал источника поддерживается на определенном уровне на время аналого-цифрового преобразования, которое требует определенного количества времени, в зависимости от выбранной частоты преобразования (выборки; дискретизации).

Выходной сигнал блока выборки и хранения SHA поступает на компаратор, который сравнивает его с другим сигналом, генерируемым внутренним ЦАП. Результат сравнения отправляется в блок логики, который вычисляет числовое представление входного сигнала в соответствии с хорошо охарактеризованным алгоритмом. Этот алгоритм отличает АЦП SAR от других аналого-цифровых преобразователей.

Алгоритм последовательного приближения вычисляет напряжение входного сигнала путем сравнения его с генерируемым напряжением от внутреннего ЦАП, которое представляет собой часть опорного напряжения VREF: если входной сигнал больше данного

Аналого-цифровое преобразование

368

внутреннего опорного напряжения, то происходит дальнейшее увеличение этого опорного напряжения пока входной сигнал не станет меньше него. Окончательный результат будет соответствовать числу в диапазоне от нуля до максимального 12-разрядного целого беззнакового числа, то есть 212 − 1 = 4095. Предположим, что VREF = 3300 мВ, тогда

получается, что 3300 мВ представляется числом 4095. Это означает, что

Например, входное напряжение, равное 2,5 В, будет преобразовано в:

1

=

3300

 

10

 

4095

 

 

0,8

мВ

.

x =

4095

2500 мВ = 3102

3300 мВ

 

 

Алгоритм SAR работает следующим образом:

1.Значение в выходном регистре данных обнуляется, а старший значащий бит (MSB) устанавливается в 1. Это значение будет соответствовать четко определенному уровню напряжения, генерируемому внутренним ЦАП.

2.Выходной сигнал ЦАП сравнивается с входным сигналом VIN:

1.если VIN больше, то бит остаётся равным 1;

2.если VIN меньше, то бит возвращается в 0;

3.Алгоритм переходит к следующему MSB-биту в регистре данных, пока все биты не будут установлены в 1 или 0.

На рисунке 3 представлен процесс преобразования, выполняемый блоком логики SAR внутри 4-разрядного АЦП. Рассмотрим путь, выделенный красным цветом, и предположим, что VIN = 2700 мВ и VREF = 3300 мВ. Алгоритм начинается с установки MSB-бита в 1, что соответствует 10002 = 810. Это означает, что:

x =

3300 мВ

8

= 1760 мВ

 

4

 

 

2

−1

10

 

 

 

 

 

При значении VIN большем, чем 1760 мВ, 4-й бит остается равным 1, и алгоритм переходит к следующему MSB-биту. Теперь значение в регистре данных равно 11002 = 1210, и ЦАП генерирует выходной сигнал, равный 2640 мВ. Текущее значение VIN все еще больше, чем значение внутреннего напряжения, поэтому третий бит снова остается равным 1. Регистр устанавливается в значение 11102 = 1410, которое соответствует внутреннему напряжению, равному 3080 мВ. На этот раз VIN меньше внутреннего напряжения, и второй бит сбрасывается в ноль. Алгоритм теперь устанавливает 1-й бит в 1, который установит значение внутреннего напряжения равным 2860 мВ. Это значение все еще больше, чем VIN, и алгоритм сбрасывает последний бит в ноль. АЦП обнаруживает, что входное напряжение близко к 2640 мВ. Очевидно, что чем большее разрешение обеспечивает АЦП, тем ближе к VIN будет преобразованное значение.

Как видите, алгоритм SAR, по сути, выполняет поиск в бинарном дереве. Большим преимуществом этого алгоритма является то, что преобразование выполняется за N тактов, где N соответствует разрядности АЦП. Таким образом, 12-разрядный АЦП требует 12 тактов для выполнения преобразования. Но как долго может длиться такт? Количество тактов в секунду, то есть частота АЦП, является параметром оценки производительности АЦП. АЦП последовательного приближения могут быть очень быстрыми, особенно если разрядность АЦП уменьшается (чем меньше бит выборки, тем меньше тактов на преобразование). Однако импеданс источника аналогового сигнала или последовательное сопротивление (RIN) между источником сигнала и выводом микроконтроллера вызывают падение напряжения на нем из-за тока, протекающего в вывод.

Аналого-цифровое преобразование

369

Рисунок 3: Процесс преобразования, выполняемый SAR ADC

Заряд внутренней цепи конденсаторов (которую мы обозначаем CADC) контролируется переключателем на рисунке 1, имеющим сопротивление, равное RADC. С добавлением сопротивления источника (то есть RTOT = RADC + RIN) время, необходимое для полной зарядки накопительного конденсатора, увеличивается. На рисунке 4 показан эффект сопротивления источника аналогового сигнала. На эффективный заряд емкости CADC влияет RTOT, поэтому постоянная времени заряда становится tC = (RADC + RIN) × CADC. Если время выборки (sampling time, или время преобразования; дискретизации) меньше времени, необходимого для полной зарядки CADC через сопротивление RTOT (т.е. tS < tC), то цифровое значение, преобразованное АЦП, будет меньше, чем фактическое значение. В общем, для достижения приемлемой точности необходимо выждать кратное tC время.

Рисунок 4: Влияние сопротивления АЦП на источник аналогового сигнала