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

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

372

Resolution (разрядность): кроме микроконтроллеров STM32F1, АЦП которых не

позволяет выбрать разрядность выборок (см. таблицу 1), с помощью этого поля можно задать разрядность аналого-цифрового преобразования. Оно может принимать значения из таблицы 2. Чем выше разрядность, тем меньшее количество преобразований возможно в течение нескольких секунд. Если скорость не важна для вашего приложения, настоятельно рекомендуется установить максимальную битовую разрядность и минимальную скорость преобразования.

ScanConvMode: это поле может принимать значение ENABLE или DISABLE, и оно ис-

пользуется для включения/отключения режима сканирования. Подробнее об этом позже.

ContinuousConvMode: определяет, выполняется ли преобразование в однократном

или в непрерывном режиме, и может принимать значение ENABLE или DISABLE. Подробнее об этом позже.

NbrOfConversion: задает количество каналов регулярной группы, которые будут

преобразовываться в режиме сканирования.

DataAlign: задает выравнивание данных преобразованного результата. Регистр

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

ADC_DATAALIGN_LEFT или ADC_DATAALIGN_RIGHT.

ExternalTrigConv: выбирает источник внешнего запуска для преобразования, ис-

пользующего таймер.

EOCSelection: в зависимости от режима преобразования (однократное или непре-

рывное преобразования) АЦП соответственно устанавливает флаг конца преобразования (End Of Conversion, EOC). Это поле используется API-интерфейсами режимов опроса или прерываний АЦП для определения того, когда преобразование завершено, и может принимать значения ADC_EOC_SEQ_CONV для непрерывного преобразования и ADC_EOC_SINGLE_CONV для однократных преобразований.

 

Таблица 2: Доступные варианты разрядности АЦП

Разрядность АЦП

Описание

 

 

ADC_RESOLUTION_12B

12-разрядное АЦП

ADC_RESOLUTION_10B

10-разрядное АЦП

ADC_RESOLUTION_8B

8-разрядное АЦП

ADC_RESOLUTION_6B

6-разрядное АЦП

Прежде чем мы сможем приступить к практическому примеру, нам нужно проанализировать еще две темы: как сконфигурировать входные каналы и как дискретизируются их входные сигналы.

12.2.1. Режимы преобразования

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

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

373

кратко представим наиболее значимые из них: AN31165 от ST описывает все возможные режимы преобразования, предоставляемые АЦП.

12.2.1.1. Режим однократного преобразования одного канала

Это (Single-Channel, Single Conversion Mode) самый простой режим АЦП. В данном ре-

жиме АЦП выполняет однократное преобразование (одну выборку) одного канала, как показано на рисунке 5, и останавливается после завершения преобразования.

Рисунок 5: Режим однократного преобразования одного канала

12.2.1.2. Режим сканирования с однократным преобразованием

Данный режим (Scan Single Conversion Mode), также называемый многоканальным режи-

мом с однократным преобразованием (multichannel single mode) в некоторых документах от

ST, используется для последовательного преобразования нескольких каналов в независимом режиме. Используя ранги, вы можете использовать этот режим АЦП для задания любой последовательности, составляющей до 16 каналов, с различным временем выборки и в различной очередности. Например, вы можете выполнить последовательность преобразований, показанную на рисунке 6. Таким образом, вам не нужно останавливать АЦП во время процесса преобразования, чтобы переконфигурировать следующий канал с другим временем выборки. Этот режим дополнительно нагружает ЦПУ и сложен в программной реализации. Режим сканирования осуществляется в режиме

DMA.

Рисунок 6: Режим сканирования с однократным преобразованием

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

5 http://www.st.com/content/ccc/resource/technical/document/application_note/c4/63/a9/f4/ae/f2/48/5d/CD002058017.pdf/files/CD00258017.pdf/jcr:content/translations/en.CD00258017.pdf

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

374

уровней сигнала (напряжения, давления, температуры и т. д.), чтобы определить, можно ли запустить систему или нет для защиты людей и оборудования.

12.2.1.3. Режим непрерывного преобразования одного канала

Данный режим (Single-Channel, Continuous Conversion Mode) преобразует один канал непрерывно и бесконечно долго в режиме преобразования регулярных каналов. Функция непрерывного режима позволяет АЦП работать в фоновом режиме. АЦП постоянно преобразует один канал без какого-либо вмешательства со стороны ЦПУ. Кроме того, можно использовать DMA в циклическом режиме, что дополнительно снижает нагрузку на ЦПУ.

Рисунок 7: Режим непрерывного преобразования одного канала

Например, этот режим АЦП может быть реализован для контроля уровня напряжения батареи, измерения и регулирования температуры в печи с использованием ПИД-регу- лятора и т. д.

12.2.1.4. Режим сканирования с непрерывным преобразованием

Данный режим (Scan Continuous Conversion Mode) также называется многоканальным не-

прерывным режимом (multichannel continuous mode), и его можно использовать для последовательного преобразования нескольких каналов с АЦП в независимом режиме. Используя ранги, вы можете задать любую последовательность преобразования, составляющую до 16 каналов, с различным временем выборки и в различной очередности. Этот режим аналогичен многоканальному режиму с однократным преобразованием, за исклю-

чением того, что он не прекращает преобразование после последнего канала последовательности, а перезапускает последовательность преобразования с первого канала, что продолжается бесконечно. Режим сканирования осуществляется в режиме DMA.

Рисунок 8: Режим сканирования с непрерывным преобразованием

Данный режим может использоваться, например, для контроля нескольких уровней напряжения и температур в зарядном устройстве для нескольких батарей. Напряжение и температура каждой батареи считываются в процессе зарядки. При достижении напряжением или температурой максимального уровня соответствующую батарею следует отсоединить от зарядного устройства.

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

375

12.2.1.5. Режим преобразования инжектированных каналов

Данный режим (Injected Conversion Mode) предназначен для использования при запуске преобразования по внешнему событию или при программном запуске. Группа инжектированных (введенных) каналов имеет более высокий приоритет над группой регулярных каналов. Режим прерывает преобразование текущего канала в группе регулярных каналов.

Рисунок 9: Режим преобразования инжектированных каналов

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

12.2.1.6. Парный режим

Парный режим (Dual mode) доступен в микроконтроллерах STM32, которые имеют два АЦП: ведущий ADC1 и ведомый ADC2. Триггеры ADC1 и ADC2 внутренне синхронизируются для преобразования регулярных и инжектированных каналов. ADC1 и ADC2 работают вместе. В некоторых устройствах имеется до 3 АЦП: ADC1, ADC2 и ADC3. В этом случае ADC3 всегда работает независимо и не синхронизируется с другими АЦП.

Парный режим работает так, что, когда преобразование заканчивается, результат от ADC1 и ADC2 одновременно сохраняется в 32-битном регистре данных ADC1. Разделяя два результата, мы можем получать данные, поступающие с двух независимых каналов одновременно.

Для получения дополнительной информации относительно парного режима, обрати-

тесь к AN31166 от ST.

6 http://www.st.com/content/ccc/resource/technical/document/application_note/c4/63/a9/f4/ae/f2/48/5d/CD00258017.pdf/files/CD00258017.pdf/jcr:content/translations/en.CD00258017.pdf