Встраиваемые системы. Проектирование приложений на микроконтроллерах семейства 68HC12/HCS12 с применением языка С - Стивен Барретт
Шрифт:
Интервал:
Закладка:
• последовательного приближения;
• двойного интегрирования;
• прямого счета;
• параллельные АЦП.
Мы рассмотрим только способ последовательного приближения, поскольку именно этот способ используется в модуле аналого-цифрового преобразователя МК семейства 68HC12/HCS12. Если у читателя возникнет желание познакомиться с другими способами преобразования, то он может обратиться к книге авторов Pack и Barret [2002].
4.21.1. АЦП последовательного приближения
а) Функциональная схема
б) Диаграмма, поясняющая принцип действия АЦП последовательного приближения
Рис. 4.82. Аналого-цифровой преобразователь последовательного приближения
Структурная схема АЦП последовательного приближения представлена на рис. 4.82. Алгоритм функционирования АЦП последовательного приближения рассмотрим на примере. Предположим, что вывод низкого уровня опорного напряжения VRL нашего АЦП подключен к потенциалу 0 В, а вывод высокого уровня опорного напряжения VHL — к потенциалу 5,0 В. АЦП формирует на выходе 8-разрядный двоичный код. Число различных кодов, которыми может быть представлен результат оцифровки, составляет 28 = 256. Разрешающая способность нашего АЦП составляет:
(5,0 – 0,0)/256 = 19,53 мВ
Процесс аналого-цифрового преобразования по способу последовательного приближения многотактный. Число тактов, необходимое для выполнения одного преобразования, равно числу двоичных разрядов в представлении результата. Таким образом, в нашем примере на выходе АЦП будет сформирован восьмиразрядный двоичный код результата после завершения восьмого такта преобразования. Процесс преобразования запускается по сигналу Start.
Диаграмма рис. 4.82 отражает процесс формирования цифрового кода в АЦП последовательного приближения. На каждом такте формируется один двоичный разряд результата: на первом такте — старший разряд D7, на втором такте — разряд D6 и т.д., заканчивая младшим разрядом D0 на восьмом такте.
На первом такте в регистре последовательного приближения устанавливается код K1=10000000b. Этот код поступает на вход цифро-аналогового преобразователя (ЦАП), опорное напряжение которого равно UREF=URH–URL=5,0 В.
На выходе ЦАП установится напряжение UDAC=UREF×K1/28=2,5 В. Аналоговый компаратор сравнивает измеряемое напряжение UINP с напряжением на выходе ЦАП UDAC. Если UINP>UDAC, то на выходе компаратора формируется логическая 1. Если UINP<UDAC, на выходе компаратора устанавливается логический 0. Сигнал с выхода компаратора поступает на вход регистра последовательного приближения. Его значение определяет код на выходе регистра последовательного приближения в следующем такте преобразования. Если на выходе компаратора 1, то во втором такте преобразования регистр сформирует код K2 = 11000000b, если 0, то K2 = 01000000b. Иными словами, значение формируемого в текущем такте преобразования двоичного разряда равно значению логического сигнала на выходе компаратора.
На рис. 4.82 показаны возможные уровни напряжения на выходе ЦАП во втором, третьем и четвертом тактах работы АЦП. Количество уровней увеличивается с ростом номера такта, так как увеличивается число возможных комбинаций кодов на выходе регистра последовательного приближения. Так во втором такте при значении кода K2 = 11000000b на выходе ЦАП будет сформировано напряжение 3,75 В, а при коде K2 = 01000000b — 1,25 В. На восьмом такте число возможных уровней на выходе ЦАП составит 256.
АЦП последовательного приближения имеют ряд достоинств и недостатков. К достоинствам следует отнести следующие свойства:
Время преобразования не зависит от амплитуды входного сигнала и определяется только частотой тактирования и числом двоичных разрядов результата. Постоянное время преобразования удобно в микропроцессорной технике, поскольку позволяет разработчику точно рассчитать время выполнения отдельных программных фрагментов.
При получении каждого цифрового отсчета аналого-цифровое преобразование выполняется полностью сначала, результат предыдущего преобразования не оказывает влияния на последующее преобразование. Это свойство чрезвычайно важно в многоканальных модулях АЦП микроконтроллеров. Так при последовательном подключении двух измеряемых сигналов мультиплексором к одному АЦП оба измерения будут за два цикла преобразования, каждый цикл равен восьми тактам. Никаких дополнительных циклов не потребуется.
В качестве недостатков АЦП последовательного приближения следует отметить их относительно низкую скорость преобразования и достаточно сложную структуру.
Вопросы для самопроверки1. Какому напряжению на входе АЦП соответствует код код результата «все единицы». Равно ли это измеряемое напряжение напряжению полной шкалы, т.е. UREF=URH–URL?
Ответ: Максимальный код на выходе АЦП соответствует значениям напряжения входного сигнала UINP>UREF(1–2–n). Так для 12-разрядного преобразователя с напряжением опоры 10,0 В максимальный код на выходе, равный 1111 1111 1111b, будет соответствовать напряжению входного измеряемого сигнала UINP>UREF(1–2–n)=10,0(1–2–12)=9,99756 В. Поскольку полученное значение крайне близко к UREF, то часто говорят, что максимальный код соответствует напряжению полной шкалы UREF. Однако, как мы установили, максимальный код в действительности несколько меньше напряжения полной шкалы.
4.22. Подсистема аналого-цифрового преобразования МК 68HC12
В этом разделе мы рассмотрим подсистему аналого-цифрового преобразования в составе микроконтроллеров семейства 68HC12. Эту подсистему именуют модулем ATD (Analog-To-Digital). Структура модуля представлена на рис. 4.83.
Рис. 4.83. Структура модуля аналого-цифрового преобразователя ATD в составе МК 68HC12
Модуль ATD — восьмиканальный, он имеет восемь входов AN0…AN7 для подключения аналоговых сигналов. В каждый момент времени аналоговый мультиплексор коммутирует один из восьми сигналов AN0…AN7 ко входу АЦП модуля ATD. Для преобразования аналогового сигнала в 8-разрядный цифровой код АЦП использует способ последовательного приближения. Ошибка преобразования составляет ±1 младшего разряда, т.е. ±1/256 полной шкалы преобразования: ±1/256 UREF = ±1/256 (URH–URL).
Модуль ATD может работать как в режиме однократного преобразования, так и в режиме многократного преобразования. При однократном преобразовании модуль выполняется одно преобразование сигнала с заданным номером канала, после чего модуль ожидает следующего программного запуска. При многократном преобразовании модуль ATD ведет непрерывную оцифровку входного сигнала с заданным номером. После завершения одного преобразования немедленно автоматически запускается следующее. Третий режим работы модуля ATD — режим измерительной сессии. В этом режиме в регистры управления модуля ATD записывается последовательность номеров каналов, которые подлежат оцифровке. После поступления от программы сигнала запуска сначала оцифровывается канал с первым указанным номером. Затем аналоговый мультиплексор автоматически подключает ко входу АЦП канал со вторым запрограммированным номером. Запускается следующее преобразование. И так до окончания запрограммированной последовательности каналов.
Для управления процессом оцифровки восьми аналоговых сигналов предназначены регистры специальных функций модуля ATD, которые объединены в массив из 32 однобайтовых ячеек памяти. Диапазон измерения может варьироваться разработчиком, поскольку выводы для подключения опорных напряжений VHL и VRL выведены на ножки корпуса МК.
4.22.1 Структура и порядок функционирования
Модуль ATD использует линии порта AD в качестве входов AN0…AN7 для подключения измеряемых аналоговых сигналов. Обслуживание модуля ATD — альтернативная функция линий PAD0…PAD7 порта AD. Поэтому на рисунках функциональной схемы МК и модуля ATD (рис. 4.83) эти линии обозначаются AN0/PAD0… AN7/PAD7.
Аналоговые сигналы поступают на вход аналогового мультиплексора. Мультиплексор коммутирует один из аналоговых сигналов на вход АЦП последовательного приближения. Номер коммутируемого канала выбирается программно посредством установки определенных битов в регистрах специальных функций модуля ATD.
Запуск АЦП на преобразование осуществляется программной установкой бита в регистре управления ATDCTL5. После завершения преобразования полученный код загружается в один из регистров результата ADR0H…ADR7H. Номер регистра результата для каждого преобразования выбирается в соответствии с номером измеряемого канала. После завершения преобразования также устанавливаются флаги в регистре состояния ATDSTAT.