Перейти к содержимому

#42. DAC: Digital Analog Converter (Цифровой аналоговый преобразователь)

Серии STM32 F1xx имеют 12-разрядный модуль цифрового аналого-цифрового преобразователя (ЦАП) с двумя независимыми выходными каналами — ЦАП1 (контакт PA4) и ЦАП2 (контакт PA5). Каналы могут быть сконфигурированы в 8-битном режиме или 12-битном режиме, и преобразования могут выполняться независимо или одновременно. Одновременный режим может использоваться, когда должны генерироваться два независимых, но синхронизированных сигнала — например, левый и правый каналы стереозвука. Часто важно, чтобы аналоговый выход обновлялся в точные моменты времени, иногда управляя внешним оборудованием — таким образом, процесс преобразования может запускаться таймерами или внешними сигналами. Наконец, обычное использование аппаратного обеспечения ЦАП — генерация изменяющегося во времени сигнала. Там, где частота дискретизации высока, нецелесообразно полностью контролировать процесс преобразования с помощью прикладного программного обеспечения или даже обработчиков прерываний. Таким образом, каждый канал ЦАП имеет возможность DMA, которой можно управлять с помощью сигнала запуска.

Мы рассмотрим использование одного канала ЦАП. Начнем с самого простого случая — прямого программного управления аналоговым выходом — который полезен для создания медленных изменяющихся сигналов, которые не нужно синхронизировать во времени. Затем рассмотрим генерацию синхронизированных по времени сигналов — сначала с модулем ЦАП запустим генератор треугольных волн, а затем напишем код, управляемый прерываниями, для получения синусоидальной волны. Операция, управляемая прерываниями, плохо масштабируется до больших скоростей обновления — в конце концов, все циклы процессора требуются только для обслуживания прерывания. Таким образом, рассмотрим использование DMA для «подачи» ЦАП с использованием прерывания с более низкой частотой, используемого для обновления буфера DMA. Наконец, приведем примеры для чтения аудиофайлов с SD-карты и воспроизведения их через DMA на внешний аудиоусилитель, управляемый ЦАП.

Предупреждение: упражнения которые мы будем рассматривать не могут быть выполнены без осциллографа — для отображения сигналов. Последнее упражнение, — «аудиоплеер», может быть выполнено без осциллографа, но его отладка будет трудной.

DAC Channel x

Упрощенная блок-схема одного канала ЦАП. Каждый канал имеет отдельную логику управления, которая конфигурируется через один регистр управления (CR). Данные для преобразования по каналу x записываются в регистр хранения данных (DHRx). В ответ на триггерное событие DHRx передается в регистр вывода данных (DORx), и по истечении времени установления на выходе появляется соответствующее аналоговое значение. Выходное напряжение ЦАП линейно между 0 и Vref+ (3,3 В на плате) и определяется следующим уравнением:

DACoutput = Vref+ * (DOR/4095)

События запуска могут включать сигналы запуска от различных таймеров (TIM2-TIM7, TIM15), внешнего прерывания (линия 9 EXTI) и программного обеспечения. Также возможно настроить ЦАП без триггера, и в этом случае DHRx автоматически копируется в DORx после задержки одного такта.

Генератор сигналов

Добавить комментарий