АЦП12
Модуль АЦП12 представляет собой высокоэффективный 12-разрядный аналого-цифровой преобразователь. В этом разделе описывается АЦП12. АЦП12 реализован в устройствах MSP430x13x, MSP430x14x, MSP430x15x и MSP430x16x.
17.1 Введение в АЦП12
Модуль АЦП12 обеспечивает быстрые 12-разрядные аналого-цифровые преобразования. Модуль имеет 12-разрядное ядро SAR, схему выборки, опорный генератор и буфер преобразования и управления объемом 16 слов. Буфер преобразования и управления позволяет получать и сохранять до 16 независимых выборок АЦП без вмешательства ЦПУ.
АЦП12 обладает следующими возможностями:
- Максимальная скорость преобразования свыше 200 ksps
- Монотонный 12-разрядный преобразователь без кодов ошибок
- Выборка и хранение с программируемыми периодами выборки, определяемыми программным обеспечением или таймерами
- Преобразование инициируется программным обеспечением, таймером А или таймером В
- Программно выбираемый интегрированный генератор опорного напряжения (1,5 В или 2,5 В)
- Программно выбираемый внутренний или внешний опорный источник
- Восемь индивидуально конфигурируемых внешних входных каналов
- Каналы преобразования для внутреннего температурного датчика, AVCC и внешних опорных источников
- Независимые опорные источники, задаваемые путем выбора канала, для обоих положительных и отрицательных опорных источников
- Выбираемый источник тактирования преобразований
- Одноканальный, повторный одноканальный, последовательный и повторно-последовательный режимы преобразования
- Ядро АЦП и опорное напряжение могут выключаться раздельно
- Регистр вектора прерываний для быстрого декодирования 18 прерываний АЦП
- 16 регистров хранения результата.
Блок-схема АЦП12 показана на рис.17-1.
Рис.17-1 Блок-схема АЦП12
17.2 Функционирование АЦП12
Модуль АЦП12 конфигурируется программным обеспечением пользователя. Настройка и работа АЦП12 рассматриваются в следующих разделах.
17.2.1 12-разрядное ядро АЦП
Ядро АЦП преобразует аналоговый входной сигнал в 12-разрядное цифровое представление и сохраняет результат в памяти преобразований. Ядро использует два программируемых/выбираемых уровня напряжения (VR+ и VR-) для задания верхнего и нижнего пределов преобразования. На цифровом выходе (NADC) представлена полная шкала (0FFFh), когда входной сигнал равен или выше VR+, и ноль, когда входной сигнал равен или ниже VR-. Входной канал и опорные уровни напряжения (VR+ и VR-) задаются в памяти управления преобразованиями. Формула преобразования для результата АЦП NADC выглядит следующим образом:
Ядро АЦП12 конфигурируется двумя управляющими регистрами: ADC12CTL0 и ADC12CTL1. Ядро включается битом ADC12ON. Если ADC12 не используется, для сохранения энергии оно может быть выключено. За некоторыми исключениями биты управления АЦП12 могут быть модифицированы, только когда ENC=0. ENC должен быть установлен в 1 перед выполнением любого преобразования.
Рис.17-2 Аналоговый мультиплексор
Выбор тактирования преобразования
ADC12CLK используется как для тактирования преобразования, так и для генерации периода выборки, когда выбран импульсный режим выборки. Для выбора источника тактирования ADC12 используются биты ADC12SSELx, а частота выбранного источника может быть поделена на 1-8 с помощью битов ADC12DIVx. Возможно использование следующих источников ADC12CLK: SMCLK, MCLK, ACLK и внутреннего осциллятора ADC12OSC.
ADC12OSC, генерируемый внутренне, лежит в диапазоне 5 МГц, но варьируется в зависимости от конкретного устройства, напряжения питания и температуры. См. справочное руководство конкретного устройства для уточнения значения ADC12OSC.
Пользователь должен гарантировать, что выбранный источник тактирования для ADC12CLK останется активным до конца преобразования. Если тактовые сигналы будут сняты во время преобразования, операция не будет завершена и любой результат будет неверным.
17.2.2 Входы АЦП12 и мультиплексор
Восемь внешних и четыре внутренних аналоговых сигнала выбираются как канал для преобразования аналоговым входным мультиплексором. Входной мультиплексор имеет тип break-before-make (разрыв перед включением), что уменьшает инжекцию шумов от канала к каналу, возникающую при переключении каналов, как показано на рис.17-2. Входной мультиплексор также является Т-переключателем, минимизирующим взаимосвязь между каналами. Невыбранные каналы изолированы от АЦП, а промежуточный узел подключен к аналоговой земле (AVSS), поэтому паразитная емкость заземляется, что помогает устранять перекрестные помехи.
АЦП12 использует метод перераспределения заряда. Когда входы внутренне переключаются, переключение может привести к переходным процессам на входном сигнале. Эти переходные процессы затухают и устанавливаются до появления ошибочного преобразования.
Выбор аналогового порта
Входы АЦП12 мультиплексированы с ножками порта Р6, имеющими цифровые КМОП ячейки. Когда аналоговые сигналы прикладываются к цифровым КМОП-схемам, может течь паразитный ток от VCC к GND. Этот паразитный ток появляется, если величина входного напряжения находится около переходного уровня ячейки. Отключение буфера ножки порта устраняет протекание паразитного тока и вследствие этого уменьшает общий потребляемый ток. Биты P6SELx дают возможность отключать входные буферы ножки порта.
; P6.0 и P6.1 конфигурирются как аналоговые входы
BIS.B #3h,&P6SEL ; P6.1 и P6.0 – функция АЦП12
BIC.B #3h,&P6DIR ; P6.1 и P6.0 переключены на ввод
17.2.3 Генератор опорного напряжения
Модуль АЦП12 содержит встроенный генератор опорного напряжения с двумя выбираемыми уровнями напряжения: 1,5 В и 2,5 В. Любое из этих опорных напряжений может быть использовано внутренне или внешне на выводе VREF+.
Установкой REFON=1 включается внутренний опорный источник. Когда REF2_5V=1, внутреннее опорное напряжение равно 2,5 В, при REF2_5V=0 опорное напряжение равно 1,5 В. Если генератор опорного напряжения не используется, он может быть выключен для уменьшения потребления энергии.
Для правильной работы внутреннего генератора опорного напряжения необходимо использовать емкость временного хранения энергии, подключенную между VREF+ и AVSS. Рекомендуется в качестве такой емкости использовать комбинацию из включенных параллельно конденсаторов на 10 мкФ и 0,1 мкФ. После включения в течение максимум 17 мС необходимо дать возможность генератору опорного напряжения зарядить конденсаторы хранения энергии. Если внутренний опорный генератор не используется при преобразованиях, конденсаторы не требуются
Примечание: рекомендация по развязке
Около 200 мкА необходимы от любого опорного источника, используемого АЦП во время определения двух младших бит в течение преобразования. Комбинация из параллельно включенных конденсаторов на 10 мкФ и 0,1 мкФ рекомендуется при использовании любого опорного источника.
|
Внешние опорные источники могут быть задействованы для VR+ и VR- через выводы VeREF+ и VRED-/VeREF- соответственно.
17.2.4 Синхронизация выборки и преобразования
Аналого-цифровое преобразование инициируется по нарастающему фронту входного сигнала выборки SHI. Источник для SHI выбирается с помощью битов SHSx и может быть таким:
- Бит ADC12SC
- Модуль вывода 1 таймера А
- Модуль вывода 0 таймера В
- Модуль вывода 1 таймера В
Полярность источника сигнала SHI может быть инвертирована битом ISSH. Сигнал SAMPCON управляет периодом выборки и началом преобразования. Когда SAMPCON имеет высокий уровень, выборка активна. Переход сигнала SAMPCON с высокого уровня на низкий стартует аналого-цифровое преобразование, которому необходимо 13 циклов ADC12CLK. Два различных метода выборки-синхронизации задаются управляющим битом SHP, расширяющим режим выборки и импульсный режим.
Расширенный режим выборки
Расширенный режим выборки выбирается, когда SHP=0. Сигнал SHI напрямую управляет SAMPCON и определяет длительность периода выборки tsample. Когда SAMPCON имеет высокий уровень, выборка активна. Переход сигнала SAMPCON с высокого уровня на низкий стартует преобразование после синхронизации с ADC12CLK. См. рис.17-3.
Рис.17-3 Расширенный режим выборки
Импульсный режим выборки
Импульсный режим выборки выбирается, когда SHP=0. Сигнал SHI используется для запуска таймера выборки. Биты SHT0x и SHT1x в ADC12CTL0 управляют интервалом таймера выборки, который задает период tsampe выборки SAMPCON. Таймер выборки оставляет высокий уровень SAMPCON после синхронизации с ADC12CLK для запрограммированного интервала tsampe. Общее время выборки равно tsampe плюс tsync. См. рис.17-4.
Биты SHTx устанавливают время выборки в 4 раза больше чем ADC12CLK. SHT0x устанавливает время выборки для ADC12MCTL0-7, а SHT1x устанавливает время выборки для ADC12MCTL8-15.
Рис.17-4 Импульсный режим выборки
Определение длительности выборки
Когда SAMPCON=0, все входы Ax имеют высокое входное сопротивление. Когда SAMPCON=1, выбранный вход Ax можно смоделировать в виде RC-фильтра нижних частот в течение периода квантования tsample, как показано на рис.17-5. Внутреннее сопротивление RI (около 2 кОм) мультиплексированного входа последовательно с конденсатором СI (максимум 40 пФ) представляется источником. Конденсатор СI должен быть заряжен напряжением VC в пределах ? младшего бита источника напряжения VS для получения точного 12-разрядного преобразования.
Рис.17-5 Эквивалентная схема аналогового входа
Сопротивление источника RS и RI влияет на tsample. Следующее выражение может быть использовано для вычисления минимального времени выборки tsample при 12-разрядном преобразовании:
tsample > (RS+RI)*ln(213)*CI
При подстановке значений RI и СI, указанных выше, уравнение приобретает следующий вид:
tsample > (RS+2кОм)*9.011*40pF
К примеру, если RS равно 10 кОм, tsample должно быть больше 4,33 мкС.
17.2.5 Память преобразований
Результаты преобразований сохраняются в 16-ти регистрах памяти преобразований ADC12MEMx. Каждый регистр ADC12MEMx конфигурируется соответствующим управляющим регистром ADC12MCTLx. Биты SREFx устанавливают опорное напряжение, а биты INCHx задают входной канал. Бит EOS определяет конец последовательности, когда используется последовательный режим преобразования. Следующие друг за другом преобразования последовательно сохраняются в регистрах с ADC12MEM15 по ADC12MEM0, когда бит EOS в ADC12MCTL15 не установлен.
Биты CSTARTADDx определяют первый регистр ADC12MCTLx, используемый для любого преобразования. Если выбраны одноканальный или повторный одноканальный режимы преобразования, CSTARTADDx указывают на единственный ADC12MCTLx, который будет использован.
Если выбран режим преобразования «последовательность каналов» или «повторяющаяся последовательность каналов», CSTARTADDx указывают на расположение ADC12MCTLx, который будет использоваться в последовательности. Программно невидимый указатель автоматически инкрементируется до следующего ADC12MCTLx в последовательности после каждого завершения преобразования. Последовательность продолжается до обработки бита EOS в ADC12MCTLx – это будет обработка последнего управляющего байта.
Когда результат преобразования записывается в выбранный регистр ADC12MEMx, устанавливается соответствующий флаг в регистре ADC12IFGx.
17.2.6 Режимы преобразований АЦП12
АЦП12 имеет четыре режима работы, выбираемые битами CONSEQx так, как описано в таблице 17-1.
Таблица 17-1. Сводный перечень режимов преобразования
CONSEQx |
Режим |
Операция |
00 |
Одноканальный с одиночным преобразованием |
Выполняется одно преобразование в одном канале. |
01 |
Последовательность каналов |
Выполняются однократные преобразования последовательности каналов. |
10 |
Повторяющийся одноканальный |
Выполняется повторяющееся преобразование в одном канале. |
11 |
Повторяющаяся последовательность каналов |
Выполняются повторяющиеся преобразования последовательности каналов. |
Одноканальный режим с одиночным преобразованием
В одном канале однократно выполняется выборка и преобразование. Результат АЦП записывается в регистр ADC12MEMx, определенный битами CSTARTADDx. На рис.17-6 показан процесс одноканального режима с одиночным преобразованием. Если преобразования запускаются ADC12SC, поочередные преобразования могут быть запущены битом ADC12SC. Когда используется другой источник запуска, ENC должен переключаться между каждым преобразованием.
Рис.17-6 Одноканальный режим одиночного преобразования
Режим последовательности каналов
В режиме последовательности каналов однократно выполняется выборка и преобразование. Результат АЦП записывается в память преобразований, начиная с ADCMEMx, определенным битами CSTARTADDx. Последовательность останавливается после измерения в канале с установленным битом EOS. На рис.17-7 показан режим последовательности каналов. Если последовательность запускает ADC12SC, поочередные последовательности могут запускаться битом ADC12SC. Когда используется другой источник запуска, ENC должен переключаться между каждой последовательностью.
Рис.17-7 Режим последовательности каналов
Повторяющийся одноканальный режим
В одном канале непрерывно выполняются выборка и преобразование. Результат АЦП записывается в ADC12MEMx, определенный битами CSTARTADDx. Необходимо считывать результат после завершения преобразования, потому что используется только один регистр памяти ADC12MEMx, перезаписываемый с каждым новым преобразованием. На рис.17-8 показан повторяющийся одноканальный режим.
Рис.17-8 Повторяющийся одноканальный режим
Режим повторяющейся последовательности каналов
Непрерывно выполняются выборка и преобразование последовательности каналов. Результат АЦП записывается в память преобразований, начиная с ADC12MEMx, определенного битами CSTARTADDx. Последовательность останавливается после измерения в канале с установленным битом EOS и стартует снова по следующему сигналу запуска. На рис.17-9 показан режим повторяющейся последовательности каналов.
Рис.17-9 Режим повторяющейся последовательности каналов
Использование бита множественных выборок и преобразований (MSC)
Для конфигурирования преобразователя на выполнение автоматических поочередных преобразований с максимальной быстротой можно воспользоваться функцией множественных выборок и преобразований. Если MSC=1, CONSEQx>1 и используется таймер выборок, первый фронт сигнала SHI запустит первое преобразование. Очередные преобразования запускаются автоматически после завершения предыдущего преобразования. Дополнительные фронты на SHI игнорируются, пока последовательность не закончена или пока бит ENC не переключен в повторяющийся одноканальный режим или повторяющийся режим последовательностей. Функция бита ENC не изменяется, пока используется бит MSC.
Останов преобразований
Прекращение активности АЦП12 зависит от режима работы. Рекомендуются следующие способы останова активного преобразования или последовательности преобразований:
- Сброс ENC в одноканальном режиме одиночного преобразования немедленно останавливает преобразование, при этом результат оказывается непредсказуемым. Для получения правильного результата необходимо опрашивать бит занятости до сброса перед очисткой ENC.
- Сброс ENC во время повторяющегося одноканального преобразования останавливает преобразователь в конце текущего преобразования.
- Сброс ENC во время последовательного или повторно-последовательного режимов останавливает преобразователь в конце последовательности.
- Любой режим преобразования может быть немедленно остановлен установкой CONSEQx=0 и сбросом бита ENC. Данные преобразования будут ненадежны.
Примечание:Отсутствие установленного бита EOS для последовательности
Если установленного бита EOS нет и выбран режим последовательностей, сброс бита ENC не приведет к останову последовательности. Для останова последовательности сначала нужно выбрать одноканальный режим, а затем сбросить ENC.
|
17.2.7 Использование АЦП12 с контроллером DMA
Устройства MSP430 с интегрированным контроллером DMA могут автоматически перемещать данные из любого регистра ADC12MEMx в другое место. DMA-переносы выполняются без вмешательства ЦПУ и независимо от любого выбранного режима пониженного энергопотребления. Контроллер DMA увеличивает пропускную способность модуля АЦП12 и расширяет круг приложений с пониженным энергопотреблением, позволяющих ЦПУ оставаться выключенным во время переноса данных.
DMA-переносы могут запускаться от любого флага ADC12IFGx. Когда CONSEQx={0,2}, флаг ADC12IFGx для ADC12MEMx, используемый для преобразования, может запустить DMA-перенос. Когда CONSEQx={1,3}, флаг ADC12IFGx для последнего ADC12MEMx в последовательности может запустить DMA-перенос. Любой флаг ADC12IFGx автоматически очищается, когда контроллер DMA обращается к соответствующему регистру ADC12MEMx. См. раздел DMA-контроллер.
17.2.8 Использование интегрированного температурного датчика
При использовании имеющегося на кристалле температурного датчика пользователь выбирает аналоговый входной канал INCHx=1010. Любая другая конфигурация рассматривается как выбор внешнего канала, включая выбор опорного источника, выбор памяти преобразований и т.д.
Типичная передаточная функция температурного датчика показана на рис.17-10. Если используется температурный датчик, период выборки должен быть больше 30 мкС. Ошибка смещения температурного датчика может быть большой и может потребоваться калибровка для большинства приложений. См. справочные данные конкретного устройства для выяснения подробностей.
При выборе температурного датчика автоматически запускается расположенный на кристалле опорный генератор в качестве источника напряжения для температурного датчика. Однако это не включает выход VREF+ и не влияет на выбор опорного источника для преобразования. Процедура выбора источника для преобразования информации с температурного датчика подобна процедуре выбора для любого другого канала.
Рис.17-10 Типичная передаточная функция температурного датчика
17.2.9 Заземление АЦП12 и рассмотрение влияния помех
Как в любом АЦП с высоким разрешением, для устранения нежелательных паразитных эффектов и шумов, а также предотвращения возникновения паразитных контуров с замыканием на землю, необходимы особая разводка печатной платы и особые методы заземления.
Паразитные общие петли формируются, когда ток возврата от АЦП проходит совместно с токами других аналоговых и цифровых схем. Если не принимать специальных мер, этот ток может генерировать нежелательные напряжения смещения, которые могут прибавляться или вычитаться из опорного или входного напряжений аналого-цифрового преобразователя. Способ подключения, показанный на рис.17-11 позволяет этого избежать.
В дополнение к заземлению, пульсации и шумовые выбросы на линиях источника питания, вызванные переключениями цифровых схем или переключениями в источнике питания могут повредить результат преобразования. Для получения высокой точности рекомендуется создавать разработки, свободные от шумов, что достигается разделением аналоговых и цифровых контуров земли с соединением их в одной точке.
Рис.17-11 Заземление АЦП12 и устранение помех
17.2.10 Прерывания АЦП12
АЦП12 имеет 18 источников прерывания:
- ADC12IFG0-ADC12IFG15
- ADC12OV, переполнение AD12MEMx
- ADC12TOV, переполнение времени преобразования АЦП12
Биты ADC12IFGx устанавливаются, когда в их соответствующие регистры памяти ADC12MEMx загружается результат преобразования. Если соответствующий бит ADC12IEx и бит GIE установлены, генерируется запрос прерывания. Состояние ADC12OV появляется, когда результат преобразования записывается в любой регистр ADC12MEMx до прочтения предыдущего результата. Состояние ADC12TOV генерируется, когда до завершения текущего преобразования затребована другая выборка-преобразование.
ADC12IV, генератор вектора прерываний
Все источники прерываний АЦП12 разделены по приоритетам и являются источником одного вектора прерываний. Регистр вектора прерываний ADC12IV используется для определения, какой разрешенный источник прерываний АЦП12 запрашивает прерывание.
Разрешенное прерывание АЦП12 с наивысшим приоритетом генерирует число в регистре ADC12IV (см. описание регистра). Это число может быть оценено или добавлено к программному счетчику для автоматического входа в соответствующую программную процедуру. Запрещенные прерывания АЦП12 не влияют на значение ADC12IV.
При любом типе доступа (чтение или запись), регистр ADC12IV автоматически сбрасывает состояние ADC12OV или состояние ADC12TOV, если любое из них было наивысшим ожидающим прерыванием. Никакое состояние прерывания не имеет доступного флага прерывания. Флаги ADC12IFGx не сбрасываются при доступе к ADC12IV. Биты ADC12IFGx сбрасываются автоматически при доступе к их соответствующим регистрам ADC12MEMx или же могут быть сброшены программно.
Если после обработки текущего прерывания ожидается другое прерывание, генерируется другое прерывание. К примеру, если ожидается обработка прерываний ADC12OV и ADC12IFG3, когда процедура обработки прерывания обращается к регистру ADC12IV, состояние прерывания ADC12OV автоматически сбрасывается. После выполнения команды RETI процедуры обработки прерывания ADC12IFG3 генерирует другое прерывание.
Пример программы-обработчика прерываний АЦП12
Приведенный далее пример программного обеспечения показывает рекомендуемое использование ADC12IV и временные затраты на обработку. Значение ADC12IV добавляется к PC для автоматического перехода к соответствующей процедуре.
Числа в правом поле показывают необходимое для каждой команды количество циклов ЦПУ. Программные затраты для различных источников включают время задержки прерывания и циклы возврата из прерывания, но не обработку собственно задачи. Задержки таковы:
- ADC12IFG0-ADC12IFG14, ADC12TOV и ADC12OV 16 циклов
- ADC12IFG15 14 циклов
Обработчик прерывания для ADC12IFG15 показывает путь к немедленной проверке, если произошло прерывание с наивысшим приоритетом во время обработки ADC12IFG15. Это позволяет сэкономить девять циклов, если ожидается другое прерывание АЦП12.
; Обработчик прерывания для АЦП12.
INT_ADC12 ; Вход процедуры обработки прерывания 6
ADD&ADC12IV,PC ; Добавление смещения к PC 3
RETI ; Вектор 0: Нет прерывания 5
JMPADOV ; Вектор 2: Переполнение АЦП 2
JMPADTOV ; Вектор 4: Переполнение тактирования АЦП 2
JMPADM0 ; Вектор 6: ADC12IFG0 2
.... ; Векторы 8-32 2
JMPADM14 ; Вектор 34: ADC12IFG14 2
;
; Обработчик ADC12IFG15 стартует здесь. JMP не требуется.
;
ADM15 MOV &ADC12MEM15,xxx ; Перемещение результата, флаг сброшен
... ; Другая команда необходима?
JMP INT_ADC12 ; Проверка другого ожидаемого прерывания
;
; Обработчик ADC12IFG14-ADC12IFG1 запускается здесь
;
ADM0 MOV &ADC12MEM0,xxx ; Перемещение результата, флаг сброшен
... ; Другая команда необходима?
RETI ; Возврат 5
;
ADTOV ... ; Обработка переполнения времени преобразования
RETI ; Возврат 5
;
ADOV ... ; Обработка переполнения ADCMEMx
RETI ; Возврат 5
|