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

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

391

HAL_ADCEx_Calibration_Start(ADC_HandleTypeDef* hadc, uint32_t SingleDiff);

 

автоматически выполняет процедуру калибровки. Она должна вызываться сразу после HAL_ADC_Init() и перед использованием любой процедуры HAL_ADC_Start_XXX(). При передаче параметра ADC_SINGLE_ENDED выполняется калибровка несимметричного входа, а при передаче ADC_DIFFERENTIAL_ENDED выполняется калибровка дифференциального входа.

Функция

uint32_t HAL_ADCEx_Calibration_GetValue(ADC_HandleTypeDef* hadc, uint32_t SingleDiff);

используется для получения вычисленного значения коэффициента калибровки, в то время как

HAL_StatusTypeDef HAL_ADCEx_Calibration_SetValue(ADC_HandleTypeDef* hadc,\ uint32_t SingleDiff, uint32_t CalibrationFactor);

используется для установки пользовательского значения коэффициента калибровки. Для получения дополнительной информации обратитесь к справочному руководству по микроконтроллеру, который вы рассматриваете.

12.3. Использование CubeMX для конфигурации АЦП

CubeMX позволяет легко сконфигурировать периферийное устройство АЦП в несколько шагов. Первый состоит в том, чтобы выбрать нужные каналы АЦП в представлении IP Tree pane, как показано на рисунке 11.

Рисунок 11: Панель представления IP Tree pane позволяет выбрать входные каналы АЦП

После того как выбраны входные каналы, мы можем сконфигурировать периферийное устройство АЦП в представлении Configuration, как показано на рисунке 12.

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

392

Рисунок 12: Представление конфигурации АЦП в CubeMX

Поля отражают параметры конфигурации АЦП, рассмотренные ранее. Существует только одна часть, которая может сбить с толку начинающих пользователей: способ конфигурации каналов. Фактически нам сначала нужно сконфигурировать количество используемых каналов, установив значение в поле Number of Conversion. Далее (это действительно важно) нам нужно щелкнуть в другом месте диалогового окна конфигурации, чтобы количество полей Rank увеличивалось в соответствии с указанным количеством каналов. В тех микроконтроллерах, которые предоставляют понятия регулярных и инжектированных групп, мы можем выбрать время выборки для каждого канала независимо. CubeMX сгенерирует весь код инициализации автоматически.

Как указывалось ранее в данной главе, модуль HAL_ADC в HAL CubeF1 отличается от других HAL. Для запуска преобразования, управляемого программным обеспечением, необходимо, чтобы во время инициализации АЦП был указан параметр hadc.Init.ExternalTrigConv = ADC_SOFTWARE_START. CubeMX отражает эту другую конфигурацию, но сложно понять, как правильно сконфигурировать периферийное устройство. Итак, чтобы включить программно-управляемое преобразование, для параметра External Trigger Conversion Edge должно быть установлено Trigger detection on the rising edge. Это делает доступным поле External Trigger Conversion Source, в котором вам необходимо выбрать пункт Software trigger. В противном случае вы не сможете выполнять преобразования.

13.Цифро-аналоговое преобразование

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

ется цифро-аналоговый преобразователь (ЦАП).

Взависимости от используемого семейства и корпуса микроконтроллеры STM32 обычно предоставляют ЦАП только с одним или с двумя выделенными выходами, за исключением нескольких номеров устройств по каталогу (P/N) серии STM32F3, в которых реализовано два ЦАП: первый с двумя выходами, другой – только с одним выходом.

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

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

13.1. Введение в периферийное устройство ЦАП

ЦАП представляет собой устройство, которое преобразует числовое представление в аналоговый сигнал, который пропорционален подаваемому опорному напряжению VREF (см рисунок 1). Существует много категорий периферийных устройств ЦАП. Некоторые из них включают в себя широтно-импульсные модуляторы (ШИМ), интерполяционные, сигма-дельта ЦАП и высокоскоростные ЦАП. В Главе 11 мы проанализировали, как использовать таймер STM32 для генерации ШИМ-сигналов, и использовали эту возможность для генерации выходного синусоидального сигнала с помощью RC-фильтра нижних частот.

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

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

394

Периферийные устройства ЦАП, доступные в микроконтроллерах STM32, основаны на общей цепочке резисторов R-2R. Резисторная матрица (resistor ladder) представляет собой электрическую цепь, состоящую из повторяющихся блоков резисторов, и это недорогой и простой способ выполнения цифро-аналогового преобразования с использованием повторяющихся цепочек резисторов, выполненных с помощью высокоточных резисторов. Цепочка действует как программируемый делитель напряжения между опорным напряжением и землей.

Рисунок 2: Как можно использовать цепочку R-2R для преобразования цифровой величины в аналоговый сигнал

8-разрядная цепочка резисторной матрицы R–2R показана на рисунке 2. Каждый разряд ЦАП управляется цифровыми логическими вентилями. В идеале эти вентили переключают входной разряд между V = 0 (логический 0) и V = VREF (логическая 1). Цепочка R–2R «взвешивает» вклад этих цифровых разрядов в выходное напряжение VOUT. В зависимости от того, какие разряды установлены в 1, а какие в 0, выходное напряжение будет иметь соответствующее ступенчатое значение между 0 и VREF минус значение минимального шага, соответствующего разряду с 0.

Для заданного числового значения D устройства R–2R ЦАП с N разрядами и логическими уровнями 0 В/VREF выходное напряжение VOUT составляет:

V

=

V

REF

D

 

 

OUT

 

 

2

N

 

 

 

 

 

[1]

Например, если N = 12 (следовательно, 2N = 4096) и VREF = 3,3 В (типовое аналоговое напряжение питания в микроконтроллере STM32), то VOUT будет варьироваться от 0 В

(VAL 0 = 000000002) до максимального значения (VAL = 4095 = 111111112):

V

= 3,3

4095

3,29 В

 

OUT

 

4096

 

 

 

 

с шагами (соответствующими VAL = 1):

VOUT = 3,3 40961 0,0002 В

Однако всегда имейте в виду, что на точность и стабильность выхода ЦАП сильно влияет качество домена питания VDDA и разводка печатной платы.

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

395

В микроконтроллерах STM32 модуль ЦАП имеет точность 12 бит, но он также может быть сконфигурирован на работу и в 8 бит. В 12-разрядном режиме данные могут быть выровнены по левому или правому краю. В зависимости от вида поставки (sales type) и используемого корпуса, ЦАП имеет два выходных канала, каждый из которых имеет свой собственный преобразователь. В парном режиме каналы ЦАП могут выполнять преобразования независимо или одновременно, когда оба канала сгруппированы для синхронных операций обновления. Входной вывод опорного напряжения VREF+ (используется совместно с другими аналоговыми периферийными устройствами) доступен для лучшего разрешения. Как и в случае с периферийным устройством АЦП, ЦАП может использоваться вместе с контроллером DMA для генерации переменных выходных напряжений с заданной фиксированной частотой. Это чрезвычайно полезно в приложениях, обрабатывающих звук, или когда мы хотим генерировать аналоговые сигналы, работающие на заданной несущей частоте. Как мы увидим позже в данной главе, ЦАП STM32 способны генерировать шумовые и треугольные сигналы.

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

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

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