Раздел 18 АЦП10
Модуль АЦП10 представляет собой высокоэффективный 10-разрядный аналого-цифровой преобразователь. В этом разделе описывается АЦП10. АЦП10 реализован в устройствах MSP430x11x2 и MSP430x12x2.
18.1 Введение в АЦП10
Модуль АЦП10 обеспечивает быстрые 10-разрядные аналого-цифровые преобразования. Модуль имеет 10-разрядное ядро с регистром последовательного приближения SAR, схему выборки, опорный генератор и контроллер переноса данных (DTC).
DTC позволяет выборкам АЦП10 преобразовываться и сохраняться в любом месте памяти без вмешательства ЦПУ. Модуль может конфигурироваться программным обеспечением пользователя для поддержки разнообразных приложений.
АЦП10 обладает следующими возможностями:
- Максимальная скорость преобразования свыше 200 ksps (200000 преобразований в сек.)
- Монотонный 10-разрядный преобразователь без ошибочных кодов
- Выборка и хранение с программируемыми периодами выборки
- Преобразование инициируется программным обеспечением или таймером А
- Программно выбираемый интегрированный генератор опорного напряжения (1,5 В или 2,5 В)
- Программно выбираемый внутренний или внешний опорный источник
- Восемь индивидуально конфигурируемых внешних входных каналов
- Каналы преобразования для внутреннего температурного датчика, AVCC и внешних опорных источников
- Выбираемый источник тактирования преобразований
- Одноканальный, повторный одноканальный, последовательный и повторно-последовательный режимы преобразования
- Ядро АЦП и опорное напряжение могут выключаться раздельно
- Контроллер переноса данных для автоматического сохранения результатов преобразований
Блок-схема АЦП10 показана на рис.18-1.
Рис.18-1 Блок-схема АЦП10
18.2 Функционирование АЦП10
Модуль АЦП10 конфигурируется программным обеспечением пользователя. Настройка и работа АЦП10 рассматриваются в следующих далее разделах.
18.2.1 10-разрядное ядро АЦП
Ядро АЦП преобразует аналоговый входной сигнал в 10-разрядное цифровое представление и сохраняет результат в регистре ADC10MEM. Ядро использует два программно выбираемых уровня напряжений (VR+ и VR-) для задания верхнего и нижнего пределов преобразования. Цифровой выход (NADC) составляет полную шкалу (03FFh), когда входной сигнал равен или выше VR+, и равен нулю, когда входной сигнал равен или ниже VR-. Входной канал и опорные уровни напряжений (VR+ и VR-) задаются в памяти управления преобразованиями. Результаты преобразования могут быть представлены в натуральном двоичном формате или формате с дополнением до двух. Формула преобразования для результата АЦП NADC с использованием натурального двоичного формата выглядит следующим образом:
Ядро АЦП12 конфигурируется двумя управляющими регистрами: ADC10CTL0 и ADC10CTL1. Ядро включается битом ADC10ON. За некоторыми исключениями биты управления АЦП10 могут быть модифицированы только когда ENC=0. ENC должен быть установлен в 1 перед выполнением любого преобразования.
Выбор тактирования преобразования
ADC10CLK используется как для тактирования преобразования, так и для генерации периода выборки. Для выбора источника тактирования АЦП10 используются биты ADC10SSELx, а частота этого источника может быть поделена на 1-8 с помощью битов ADC10DIVx. Возможны следующие источники ADC10CLK: SMCLK, MCLK, ACLK и внутренний осциллятор ADC10OSC.
Внутренне генерируемая частота ADC10OSC лежит в диапазоне 5 МГц, на варьируется в зависимости от конкретного устройства, напряжения питания и температуры. См. справочное руководство конкретного устройства для уточнения значения ADC10OSC.
Пользователь должен гарантировать, что выбранный источник тактирования для ADC10CLK останется активным до конца преобразования. Если тактовые сигналы будут сняты во время преобразования, операция не будет завершена и любой результат будет неверным.
18.2.2 Входы АЦП10 и мультиплексор
Восемь внешних и четыре внутренних аналоговых сигнала выбираются как канал для преобразования входным аналоговым мультиплексором. Входной мультиплексор имеет тип break-before-make (разрыв перед включением), что уменьшает инжекцию шумов от канала к каналу, возникающую при переключении каналов, как показано на рис.18-2. Входной мультиплексор также является Т-переключателем, минимизирующим взаимосвязь между каналами. Невыбранные каналы изолированы от АЦП, а промежуточный узел подключен к аналоговой земле (AVSS), поэтому паразитная емкость заземляется, что помогает устранить перекрестные помехи.
АЦП10 использует метод перераспределения заряда. Когда входы внутренне переключаются, переключение может привести к переходным процессам на входном сигнале. Эти переходные процессы затухают и устанавливаются до появления ошибочного преобразования.
Рис.18-2 Аналоговый мультиплексор
Выбор аналогового порта
Внешние входы АЦП10 c A0 по А4, VeREF+ и VeREF- мультиплексированы с ножками порта Р2, являющимися цифровые КМОП ячейками. Опциональные входы с А5 по А7 являются у некоторых устройств общими с портом Р3 (см. справочные данные конкретного устройства). Когда аналоговые сигналы прикладываются к цифровым КМОП-схемам, может течь паразитный ток от VCC к GND. Этот паразитный ток появляется, когда величина входного напряжения находится около переходного уровня ячейки. Отключение буфера ножки порта устраняет протекание паразитного тока и вследствие этого уменьшает общий потребляемый ток. Биты ADC10AEx дают возможность отключать входные буфера ножек порта.
; P2.3 конфигурируется как аналоговый вход
BIS.B #4h,&ADC10AE ; P2.3 включен как функция АЦП10
BIC.B #3h,&P6DIR ; P2.3 переведен на направление ввода
18.2.3 Генератор опорного напряжения
Модуль АЦП10 содержит встроенный генератор опорного напряжения с двумя выбираемыми уровнями напряжения: 1,5 В и 2,5 В. Любое из этих опорных напряжений может быть использовано внутренне или внешне на выводе VREF+.
Внутренний опорный источник включается при установке REFON=1. Когда REF2_5V=1, внутреннее опорное напряжение равно 2,5 В, при REF2_5V=0 опорное напряжение равно 1,5 В.
Внешние опорные источники могут быть задействованы для VR+ и VR- через выводы А4 и А3 соответственно.
Маломощные приложения
Внутренний генератор опорного напряжения АЦП10 разработан для маломощных приложений и имеет особые возможности для быстрого запуска. Для правильной работы не требуется внешнего накопительного конденсатора и связанного с ним времени смещения. Общее время включения опорного источника меньше 30 мкС. Для нормальной развязки источника питания требуется только комбинация параллельно включенных конденсаторов на 10 мкФ и 100 нФ.
- Когда VCC и VSS используются как опорные напряжения, внутренний опорный источник должен быть полностью выключен установкой REFON=0.
- Когда используется внешний опорный источник, внутренний источник должен быть полностью выключен. Внешние опорные источники могут быть задействованы для VR+ и VR- через выводы А4 и А3 соответственно.
- Когда используется внутренний источник и максимальная скорость преобразования ниже 50 ksps, установка ADC10SR=1 уменьшает потребление тока внутренним опорным буфером примерно на 50%.
- Когда оба бита REFOUT=1 и REFBURST=1, опорный источник представлен снаружи только во время периода выборки и преобразования. Когда REFOUT1=1, а REFBURST=0 очищен, опорное напряжение присутствует внешне постоянно.
18.2.4 Тактирование выборки и преобразования
Аналого-цифровое преобразование инициируется по нарастающему фронту входного сигнала выборки SHI. Источник для SHI выбирается с помощью битов SHSx и может быть таким:
- Бит ADC10SC
- Модуль вывода 1 таймера А
- Модуль вывода 0 таймера А
- Модуль вывода 2 таймера А
Полярность источника сигнала SHI может быть инвертирована битом ISSH. Биты SHTx выбирают период выборки tsample равным 4, 8, 16 или 64 цикла ADC10CLK. Таймер выборки устанавливает SAMPCON в высокий уровень для выбранного периода выборки после синхронизации с ADC10CLK. Общее время выборки составляет tsample плюс tsync. Переход SAMPCON с высокого уровня на низкий стартует аналого-цифровое преобразование, которому необходимо 13 циклов ADC10CLK, как показано на рис.18-3.
Рис.18-3 Тактирование выборки
Определение длительности выборки
Когда SAMPCON=0, все входы Ax имеют высокое входное сопротивление. Когда SAMPCON=1, выбранный вход Ax можно смоделировать в виде RC фильтра нижних частот в течение периода выборки tsample, как показано на рис.18-4. Внутреннее сопротивление RI (около 2 кОм) мультиплексированного входа последовательно с конденсатором СI (максимум 40 пФ) представляется источником. Конденсатор СI должен быть заряжен напряжением VC в пределах ? младшего бита источника напряжения VS для получения точного 10-разрядного преобразования.
Рис.18-4 Эквивалентная схема аналогового входа
Сопротивление источника RS и RI влияет на tsample. Следующее выражение может быть использовано для вычисления минимального времени выборки tsample при 10-разрядном преобразовании:
При подстановке значений RI и СI, указанных выше, уравнение приобретает следующий вид:
К примеру, если RS равно 10 кОм, tsample должно быть больше 1,83 мкС.
18.2.5 Режимы преобразования
ADC10 имеет четыре режима работы, выбираемые битами CONSEQx так, как описано в таблице 18-1.
Таблица 18-1. Сводный перечень режимов преобразования
CONSEQx |
Режим |
Операция |
00 |
Одноканальный с одиночным преобразованием |
Выполняется одно преобразование в одном канале. |
01 |
Последовательность каналов |
Выполняются однократные преобразования последовательности каналов. |
10 |
Повторяющийся одноканальный |
Выполняется повторяющееся преобразование в одном канале. |
11 |
Повторяющаяся последовательность каналов |
Выполняются повторяющиеся преобразования последовательности каналов. |
Одноканальный режим с одиночным преобразованием
В одном канале, выбранном INCHx, однократно выполняется выборка и преобразование. Результат АЦП записывается в регистр ADC10MEM. На рис.18-5 показан процесс одноканального режима с одиночным преобразованием. Если преобразование запускается ADC10SC, поочередные преобразования могут быть запущены битом ADC10SC. Когда используется другой источник запуска, ENC должен переключаться между каждым преобразованием.
Рис.18-5 Одноканальный режим одиночного преобразования
Режим последовательности каналов
В режиме последовательности каналов однократно выполняется выборка и преобразование. Последовательность запускается с выбранного INCHx каналом и декрементируется к каналу А0. Каждый результат АЦП записывается в ADC10MEM. Последовательность останавливается после преобразования в канале А0. На рис.18-6 показан режим последовательности каналов. Если последовательность запускается ADC10SC, поочередные преобразования могут запускаться битом ADC10SC. Когда используется любой другой источник запуска, ENC должен переключаться между каждой последовательностью.
Рис.18-6 Режим последовательности каналов
Повторяющийся одноканальный режим
В одном канале, выбранном INCHx, непрерывно выполняются выборка и преобразование. Каждый результат АЦП записывается в ADC10MEM. На рис.18-7 показан повторяющийся одноканальный режим.
Рис.18-7 Повторяющийся одноканальный режим
Режим повторяющейся последовательности каналов
Непрерывно выполняются выборка и преобразование последовательности каналов. Последовательность начинается с канала, выбранного INCHx и декрементируется к каналу А0. Каждый результат АЦП записывается в ADC10MEM. Последовательность останавливается после преобразования в канале А0, а следующий сигнал запуска стартует последовательность снова. На рис.18-8 показан режим повторяющейся последовательности каналов.
Рис.18-8 Режим повторяющейся последовательности каналов
Использование бита MSC
Для конфигурирования преобразователя на выполнение автоматических поочередных преобразований с максимальной быстротой можно воспользоваться функцией множественных выборок и преобразований. Если MSC=1 и CONSEQx>1, первый фронт сигнала SHI запустит первое преобразование. Поочередные преобразования запускаются автоматически после завершения предыдущего преобразования. Дополнительные фронты на SHI игнорируются, пока последовательность не закончена в режиме одиночной последовательности или пока бит ENC не будет переключен в повторяющийся одноканальный режим или повторяющийся режим последовательностей. Функция бита ENC не изменяется, пока используется бит MSC.
Останов преобразований
Прекращение активности АЦП10 зависит от режима работы. Рекомендуются следующие способы останова активного преобразования или последовательности преобразований:
- Сброс ENC в одноканальном режиме одиночного преобразования немедленно останавливает преобразование, при этом результат оказывается непредсказуемым. Для получения правильного результата необходимо опрашивать бит занятости ADC10BUSY до сброса перед очисткой ENC.
- Сброс ENC во время повторяющегося одноканального преобразования останавливает преобразователь в конце текущего преобразования.
- Сброс ENC во время последовательного или повторно-последовательного режимов останавливает преобразователь в конце последовательности.
- Любой режим преобразования может быть немедленно остановлен установкой CONSEQx=0 и сбросом бита ENC. Данные преобразования будут ненадежны.
18.2.6 Котроллер переноса данных АЦП10
АЦП10 имеет контроллер переноса данных (DTC) для автоматического переноса результатов преобразования из ADC10MEM в другое место памяти на кристалле. DTC включается установкой регистра ADC10DTC1 в ненулевое значение.
Когда DTC включен, каждый раз по завершении преобразования АЦП10 и загрузки результата в ADC10MEM, запускается перенос данных. Вмешательства программного обеспечения для управления АЦП10 не требуется до тех пор, пока заданное количество данных преобразования не будет перемещено. Для каждого DTC-переноса требуется один такт MCLK ЦПУ. Во избежание любой конфликтной ситуации на шине во время DTC-переноса ЦПУ приостанавливается, если было активно, на один MCLK, необходимый для переноса.
DTC-перенос не должен инициироваться, пока АЦП10 занят. Программное обеспечение должно гарантировать, что никакое активное преобразование или последовательность не выполняется, когда DTC конфигурируется:
; Проверка активности АЦП10
BIC.W #ENC,&ADC10CTL0 ;
busy_test BIT.W #BUSY,&ADC10CTL1 ;
JNZ busy_test ;
MOV.W #xxx,&ADC10SA ; Безопасность
MOV.B #xx,&ADC10DTC1 ;
; продолжение настройки
Режим одноблочного переноса
Одноблочный режим выбирается, если ADC10TB сброшен. Значение n в ADC10DTC1 определяет общее количество переносов для блока. Стартовый адрес блока задается где-либо в адресном диапазоне MSP430 с помощью 16-разрядного регистра ADC10SA. Блок заканчивается на адресе ADC10SA+2n-2. Режим одноблочного переноса показан на рис.18-9.
Рис.18-9 Одноблочный перенос
Внутренний указатель адреса первоначально равен ADC10SA, а внутренний счетчик перенос первоначально равен «n». Внутренний указатель и счетчик не видимы для программного обеспечения. DTC переносит значение слова ADC10MEM по адресу, находящемуся в адресном указателе ADC10SA. После каждого DTC-переноса внутренний адресный указатель инкрементируется на два, а внутренний счетчик переносов декрементируется на один.
DTC переносы продолжаются с каждой загрузкой ADC10MEM, пока внутренний счетчик переносов не станет равным нулю. Дополнительные DTC переносы происходить не будут до записи в ADC10SA. Когда DTC используется в одноблочном режиме, флаг ADC10IFG устанавливается только после завершения переноса полного блока. На рис.18-10 показана диаграмма состояний одноблочного режима.
Рис.18-10 Диаграмма состояний управления переносом данных в одноблочном режиме переноса
Режим двухблочного переноса
Двухблочный режим выбирается, если бит ADC10TB установлен. Значение n в ADC10DTC1 определяет количество переносов для одного блока. Адресный диапазон первого блока задается в любом месте диапазона адресов MSP430 с помощью 16-разрядного регистра ADC10SA. Первый блок заканчивается на адресе ADC10SA+2n-2. Адресный диапазон для второго блока задается с SA+2n по SA+4n-2. Режим двухблочного переноса показан на рис.18-11.
Рис.18-11 Двухблочный перенос
Внутренний указатель адреса первоначально равен ADC10SA, а внутренний счетчик переносов первоначально равен «n». Внутренний указатель и счетчик являются невидимыми для программного обеспечения. DTC переносит значение слова ADC10MEM по адресу, находящемуся в адресном указателе ADC10SA. После каждого DTC-переноса внутренний адресный указатель инкрементируется на два, а внутренний счетчик переносов декрементируется на один.
DTC переносы продолжаются с каждой загрузкой ADC10MEM, пока внутренний счетчик переносов не станет равным нулю. К этому моменту блок один полон и оба бита ADC10IFG и ADC10B1 установлены. Пользователь может проверить бит ADC10B1 для определения, что блок один полон.
DTC продолжает с блока два. Во внутренний счетчик переносов автоматически перезагружается значение «n». При следующей загрузке ADC10MEM контроллер DTC начинает перенос результатов преобразований в блок два. После завершения n переносов блок два полон. Флаг ADC10IFG устанавливается, а бит ADC10B1 очищается. Программное обеспечение пользователя может проверить очистку бита ADC10B1 для определения, что блок два полон. На рис. 18-12 показана диаграмма состояний двухблочного режима.
Рис.18-12 Диаграмма состояний для управления переносом данных в двухблочном режиме переноса
Непрерывный перенос
Режим непрерывного переноса выбирается, если установлен бит ADC10CT. DTС не будет останавливаться после завершения переноса блока один (в одноблочном режиме) или блока два (в двухблочном режиме). Внутренний адресный указатель и счетчик переносов устанавливаются на значения ADC10SA и n соответственно. Переносы продолжаются, начиная с блока один. Если бит ADC10CT сброшен, DTC прекращает переносы после завершения текущих переносов в блоке один (в одноблочном режиме) или блоке два (в двухблочном режиме).
Длительность цикла DTC переноса
Для каждого переноса ADC10MEM контроллеру DTC требуется один или два тактовых цикла MCLK для синхронизации, один для выполнения собственно переноса (пока ЦПУ приостановлено) и один цикл времени ожидания. Поскольку DTC использует MCLK, длительность цикла DTC определяется рабочим режимом MSP430 и настройками системы тактирования.
Если источник MCLK активен, но ЦПУ выключено, DTC использует источник MCLK для каждого переноса без включения ЦПУ. Если источник MCLK выключен, DTC временно рестартует MCLK, с использованием в качестве источника тактирования для MCLK частоту DCOCLK, но только во время переноса. ЦПУ остается выключенным и после DTC переноса, MCLK снова выключается. Максимальная длительность цикла DTC для всех рабочих режимах показана в таблице 18-2.
Таблица 18-2. Максимальная длительность цикла DTC
Режим работы ЦПУ |
Источник тактирования |
Максимальная длительность цикла DTC |
Активный режим |
MCLK=DCOCLK |
3 цикла MCLK |
Активный режим |
MCLK=LFXT1CLK |
3 цикла MCLK |
Режим пониженного энергопотребления LPM0/1 |
MCLK=DCOCLK |
4 цикла MCLK |
Режим пониженного энергопотребления LPM3/4 |
MCLK=DCOCLK |
4 цикла MCLK + 6 мкС* |
Режим пониженного энергопотребления LPM0/1 |
MCLK=LFXT1CLK |
4 цикла MCLK |
Режим пониженного энергопотребления LPM3 |
MCLK=LFXT1CLK |
4 цикла MCLK |
Режим пониженного энергопотребления LPM4 |
MCLK=LFXT1CLK |
4 цикла MCLK + 6 мкС* |
* Дополнительные 6 мкС необходимы для запуска DCOCLK. Этот параметр в справочном руководстве называется t(LPMx).
18.2.7 Использование интегрированного температурного датчика
При использовании имеющегося на кристалле температурного датчика пользователь выбирает входной аналоговый канал INCHx=1010. Любая другая конфигурация рассматривается как выбор внешнего канала, включая выбор опорного источника, выбор памяти преобразований и т.д.
Типичная передаточная функция температурного датчика показана на рис.18-13. При использовании температурного датчика, период выборки должен быть больше 30 мкС. Ошибка смещения температурного датчика может быть большой и для большинства приложений может потребоваться калибровка. См. справочные данные конкретного устройства для выяснения подробностей.
При выборе температурного датчика автоматически запускается расположенный на кристалле опорный генератор в качестве источника напряжения для температурного датчика. Однако это не включает выход VREF+ и не влияет на выбор опорного источника для преобразования. Процедура выбора источника для преобразования информации с температурного датчика подобна процедуре выбора любого другого канала.
Рис.18-13 Типичная передаточная функция температурного датчика
18.2.8 Заземление АЦП и рассмотрение влияния помех
Как в любом АЦП с высоким разрешением, для устранения нежелательных паразитных эффектов и шумов, а также предотвращения возникновения паразитных контуров с замыканием на землю, необходима особая разводка печатной платы и методы заземления.
Паразитные общие петли формируются, когда ток возврата от АЦП проходит совместно с токами других аналоговых и цифровых схем. Если не принимать специальных мер, этот ток может генерировать небольшие нежелательные напряжения смещения, которые могут прибавляться или вычитаться из опорного или входного напряжений аналого-цифрового преобразователя. Способ подключения, показанный на рис.18-14 позволяет этого избежать.
В дополнение к заземлению, пульсации и шумовые выбросы на линиях источника питания, вызванные переключениями цифровых схем или переключениями в источнике питания могут повредить результат преобразования. Для получения высокой точности рекомендуется создавать разработки, свободные от шумов.
Рис.18-14. Заземление АЦП10 и устранение помех
18.2.9 Прерывания АЦП10
Одно прерывание и один вектор прерываний связаны с АЦП10, как показано на рис.18-15. Когда DTC не используется (ADC10DTC1=0), флаг ADC10IFG устанавливается, когда результаты преобразования загружаются в ADC10MEM. Когда DTC используется (ADC10DTC1>0), флаг ADC10IFG устанавливается, когда завершается перенос блока и внутренний счетчик переносов «n»=0. Если оба бита ADC10IE и GIE установлены, флаг ADC10IFG генерирует запрос прерывания. Флаг ADC10IFG автоматически сбрасывается, когда запрос прерывания обработан, кроме того, он может быть сброшен программно.
Рис.18-15. Система прерываний АЦП10
|