MSP430_Final
.pdf23.2. Функционирование модуля ADC12 513
23.2. Функционирование модуля ADC12
Конфигурирование модуля DAC12 осуществляется пользовательской про граммой. Настройка модуля и его функционирование рассматриваются в следую щих подразделах.
23.2.1. Ядро 12Cбитного ЦАП
С помощью бита DAC12RES модуль DAC12 может быть сконфигурирован для работы в 8 или 12 битном режиме. Максимальный уровень выходного сигнала (однократное или трёхкратное значение выбранного опорного напряжения) оп ределяется битом DAC12IR. Это позволяет пользователю управлять динамичес ким диапазоном ЦАП. Бит DAC12DF используется для выбора формата входных данных ЦАП — натуральный двоичный код или дополнительный код. Формулы для определения выходного напряжения ЦАП при использовании натурального кода приведены в Табл. 23.1.
Таблица 23.1. Выходной диапазон ЦАП (Vref = VeREF+ или VREF+)
Разрешение |
DAC12RES |
DAC12IR |
Выходное напряжение |
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
12 бит |
0 |
0 |
Vout = Vref ×3× |
|
DAC12_xDAT |
|
|
||||
|
|
|
|
||||||||
|
|
|
4096 |
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
12 бит |
0 |
1 |
Vout = Vref × |
DAC12_xDAT |
|
|
|||||
|
|
|
|||||||||
|
|
|
4096 |
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
8 бит |
1 |
0 |
Vout = Vref ×3× |
DAC12_xDAT |
|
||||||
|
|
||||||||||
|
|
|
256 |
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
8 бит |
1 |
1 |
Vout = Vref × |
DAC12_xDAT |
|
||||||
|
|||||||||||
|
|
|
256 |
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
В 8 битном режиме наибольшее используемое значение регистра DAC12_xDAT составляет 0FFh, а в 12 битном режиме — 0FFFh. Значения, пре вышающие указанные величины, могут быть записаны в регистр, однако все не используемые старшие биты будут проигнорированы.
Выбор порта модуля DAC12
Выходы модулей DAC12 мультиплексированы с выводами порта P6, аналого выми входами модуля ADC12, а также с выводами VeREF+. При DAC12AMPx > 0 соответствующий вывод микроконтроллера автоматически подключается к моду лю DAC12, независимо от состояния связанных с ним битов PxSELx и PxDIRx. Бит DAC12OPS используется для выбора конкретного вывода, к которому будет подключён выход ЦАП. Так, при DAC12OPS = 0 выход модуля DAC12_0 подклю чается к выводу порта P6.6, а выход модуля DAC12_1 — к выводу порта P6.7. При DAC12OPS = 1 выход модуля DAC12_0 подключается к выводу VeREF+, а выход модуля DAC12_1 — к выводу порта P6.5. Для получения дополнительной инфор мации обратитесь к принципиальной схеме вывода порта, которая приводится в справочной документации на конкретный микроконтроллер.
514 Глава 23. Модуль 12#битного ЦАП DAC12
23.2.2. Опорное напряжение модуля DAC12
Модуль DAC12 может использовать либо внешнее опорное напряжение, либо напряжение величиной 1.5 В/2.5 В от внутреннего генератора опорного напряже ния модуля ADC12. Выбор источника опорного напряжения осуществляется би тами DAC12SREFx. При DAC12SREFx = {0, 1} в качестве опорного используется
напряжение VREF+, а при DAC12SREFx = {2, 3} — напряжение VeREF+.
При использовании внутреннего опорного напряжения необходимо с по мощью соответствующих управляющих битов включить и сконфигурировать ге нератор опорного напряжения модуля ADC12.
Буферы опорного напряжения и выходного напряжения модуля DAC12
Буфер внешнего опорного напряжения и выходной буфер модуля DAC12 мо гут быть сконфигурированы для выбора оптимального соотношения между вре менем установления буфера и потребляемым током. С помощью битов DAC12AMPx можно выбрать одну из восьми возможных комбинаций. Чем мень ше быстродействие буфера, тем меньше потребляемый им ток. Точные значения указанных параметров приводятся в справочной документации на конкретный микроконтроллер.
23.2.3. Обновление состояния выхода модуля ADC12
Регистр DAC12_xDAT может подключаться к ядру ЦАП напрямую или через регистр защёлку. Событие, вызывающее обновление выходного сигнала модуля DAC12, определяется битами DAC12LSELx.
При DAC12LSELx = 0 защёлка данных отключается, и регистр DAC12_xDAT подключается напрямую к ядру ЦАП. В этом случае обновление выхода модуля DAC12 происходит сразу же после записи нового значения в регистр DAC12_xDAT, независимо от состояния бита DAC12ENC.
При DAC12LSELx = 1 новое значение модуля DAC12 сохраняется в защёлке и перегружается в ядро ЦАП после записи в регистр DAC12_xDAT очередного зна чения. При DAC12LSELx = 2 или 3 данные защёлкиваются по нарастающему фронту выходного сигнала блока CCR1 Таймера A или блока CCR2 Таймера B со ответственно. Для защёлкивания новых данных при DAC12LSELx > 0 должен быть установлен бит DAC12ENC.
23.2.4. Формат содержимого DAC12_xDAT
Модуль DAC12 поддерживает два формата представления данных: натуральный двоичный код и обратный код. При использовании данных, представленных в на туральном коде, максимальному выходному сигналу в 12 битном режиме соответс твует значение 0FFFh (0FFh в 8 битном режиме), как показано на Рис. 23.2.
При использовании данных, представленных в дополнительном коде, диапа зон сдвигается таким образом, чтобы при значении 0800h регистра DAC12_xDAT (0080h в 8 битном режиме) выходное напряжение ЦАП было равно нулю, при 0000h — половине от максимального значения, а при 07FFh (007Fh в 8 битном режиме) — максимальному значению, как показано на Рис. 23.3.
23.2. Функционирование модуля ADC12 515
Выходное
напряжение
Макс. значение выходного сигнала
0 Данные ЦАП
0 |
0FFFh |
Рис. 23.2. Зависимость выходного напряжения модуля DAC12 от входных данных, представ ленных в натуральном двоичном коде (12 битный режим).
Выходное
напряжение
Макс. значение выходного сигнала
Среднее значение выходного сигнала
Данные ЦАП
0
0800h (–2048) |
0 |
07FFh (+2047) |
Рис. 23.3. Зависимость выходного напряжения модуля DAC12 от входных данных, представ ленных в дополнительном коде (12 битный режим).
23.2.5.Калибровка смещения выходного усилителя модуля DAC12
Напряжение смещения выходного усилителя модуля DAC12 может быть как положительным, так и отрицательным. При отрицательном смещении усилитель пытается сформировать отрицательное напряжение, но не может этого сделать. Выходное напряжение остаётся равным нулю до тех пор, пока входной сигнал модуля не вызовет появления положительного выходного напряжения, превыша
516 Глава 23. Модуль 12#битного ЦАП DAC12
ющего по абсолютной величине напряжение смещения. Получающаяся переда точная функция приведена на Рис. 23.4.
Выходное |
|
|
напряжение |
|
|
|
0 |
|
Отрицательное |
Данные ЦАП |
|
смещение |
||
|
||
Рис. 23.4. Отрицательное смещение. |
При положительном смещении входной сигнал, соответствующий нулевому выходному напряжению, вызывает появление напряжения, отличного от нуля. Соответственно, напряжение на выходе модуля DAC12 достигает максимума раньше, чем на вход модуля будет подано значение, соответствующее максималь ному напряжению. Эта ситуация показана на Рис. 23.5.
Vcc |
|
Выходное |
|
напряжение |
|
0 |
|
Данные ЦАП |
Код максимального |
|
значения |
Рис. 23.5. Положительное смещение. |
В модуле DAC12 предусмотрена возможность калибровки напряжения сме щения выходного усилителя. Процесс калибровки запускается установкой бита DAC12CALON. Калибровка должна быть завершена до начала использования модуля DAC12. После завершения калибровки бит DAC12CALON автоматически сбрасывается. Биты DAC12AMPx должны быть сконфигурированы перед калиб ровкой. Для достижения наилучших результатов необходимо на время калибров ки свести к минимуму активность ЦПУ и портов ввода/вывода.
23.2. Функционирование модуля ADC12 517
23.2.6. Группирование нескольких модулей DAC12
Допускается группирование нескольких модулей DAC12 посредством бита DAC12GRP для синхронизации момента обновления выходного сигнала каждого из модулей. При этом гарантируется, что обновление состояния всех модулей группы произойдёт одновременно, вне зависимости от наличия обычных либо немаскируемых прерываний.
Группирование модулей DAC12_0 и DAC12_1 производится установкой бита DAC12GRP модуля DAC12_0. Значение бита DAC12GRP модуля DAC12_1 без различно. После группирования модулей DAC12_0 и DAC12_1:
биты DAC12LSELx модуля DAC12_1 определяют событие, инициирующее обновление, для обоих модулей;
содержимое битов DAC12LSELx обоих модулей должно быть отличным от нуля;
биты DAC12ENC обоих модулей должны быть установлены в 1.
При сгруппированных модулях DAC12_0 и DAC12_1 перед обновлением вы ходов необходимо осуществлять запись в оба регистра DAC12_xDAT, даже если входные данные одного или обоих модулей не изменяются. На Рис. 23.6 приведе ны временные диаграммы процесса обновления выходов сгруппированных моду лей DAC12_0 и DAC12_1.
DAC12_0 |
DAC12_0 и DAC12_1 |
|
DAC12GRP |
||
обновляются одновременно |
||
DAC12_0 |
||
|
||
DAC12ENC |
|
|
Выход OUT1 |
|
|
Таймера A |
|
|
Новые данные |
|
|
DAC12_0DAT |
|
|
Обновление DAC12_0 |
|
|
Новые данные |
|
|
DAC12_1DAT |
|
|
Защёлкивание |
|
|
DAC12_0 |
|
|
DAC12_0 DAC12LSELx = 2 |
DAC12_0 DAC12LSELx > 0 и |
|
|
DAC12_1 DAC12LSELx = 2 |
Рис. 23.6. Пример обновления состояния сгруппированных модулей DAC12, запуск
по сигналу Таймера A.
Если при установленном бите DAC12GRP модуля DAC12_0 и отличном от ну ля содержимом битов DAC12LSELx обоих модулей бит DAC12ENC хотя бы в од ном из модулей будет сброшен, то состояние обоих модулей не изменится.
Примечание. Время установления модуля DAC12
Контроллер DMA способен пересылать данные в модуль DAC12 быстрее, чем мо жет изменяться состояние выхода модуля. Поэтому при использовании контрол лера DMA пользователь должен гарантировать, что интервал загрузки очередных данных будет не меньше времени установления модуля DAC12. Точное значение этого параметра приводится в справочной документации на конкретную модель.
518 Глава 23. Модуль 12#битного ЦАП DAC12
23.2.7. Прерывания модуля DAC12
В некоторых моделях модуль DAC12 использует тот же вектор прерывания, что и контроллер DMA (см. справочную документацию на микроконтроллер). В этом случае в процедуре обработки прерывания необходимо проверять оба фла га DMAIFG и DAC12IFG для определения источника прерывания.
Флаг DAC12IFG устанавливается при DAC12LSELx > 0, когда входное значе ние модуля DAC12 перегружается из регистра DAC12_xDAT в защёлку данных. При DAC12LSELx = 0 флаг ADC12IFG не устанавливается.
Установленный флаг DAC12IFG означает, что модуль DAC12 готов к получе нию новых данных. Если установлены оба бита DAC12IE и GIE, то установка флага DAC12IFG генерирует запрос прерывания. Флаг DAC12IFG не сбрасывает ся автоматически — его необходимо сбрасывать программно.
23.3. Регистры модуля DAC12
Список регистров модуля DAC12 приведён в Табл. 23.2.
Таблица 23.2. Регистры модуля DAC12
Регистр |
Обозначение |
Тип регистра |
Адрес |
Исходное состояние |
|
|
|
|
|
Регистр управления модуля DAC12_0 |
DAC12_0CTL |
Чтение/запись |
01C0h |
Сбрасывается после POR |
|
|
|
|
|
Регистр данных модуля DAC12_0 |
DAC12_0DAT |
Чтение/запись |
01C8h |
Сбрасывается после POR |
|
|
|
|
|
Регистр управления модуля DAC12_1 |
DAC12_1CTL |
Чтение/запись |
01C2h |
Сбрасывается после POR |
|
|
|
|
|
Регистр данных модуля DAC12_1 |
DAC12_1DAT |
Чтение/запись |
01CAh |
Сбрасывается после POR |
|
|
|
|
|
DAC12_xCTL, регистр управления модуля DAC12_x
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
|
DAC12OPS |
DAC12SREFx |
DAC12RES |
DAC12LSELx |
DAC12 |
DAC12IR |
|||
CALON |
||||||||
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
rw–(0) |
rw–(0) |
rw–(0) |
rw–(0) |
rw–(0) |
rw–(0) |
rw–(0) |
rw–(0) |
|
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
|
|
|
|
|
|
|
|
|
DAC12AMPx |
|
DAC12DF |
DAC12IE |
DAC12IFG |
DAC12ENC |
DAC12 |
||
|
GRP |
|||||||
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
rw–(0) |
rw–(0) |
rw–(0) |
rw–(0) |
rw–(0) |
rw–(0) |
rw–(0) |
rw–(0) |
Может быть изменён только при DAC12ENC = 0.
DAC12OPS |
Бит 15 |
Выбор выхода модуля DAC12. |
|
|
|
0 |
Выход DAC12_0 — P6.6, выход DAC12_1 — P6.7 |
DAC12 |
|
1 |
Выход DAC12_0 — VeREF+, выход DAC12_1 — P6.5 |
Биты |
Выбор опорного напряжения модуля DAC12. |
||
SREFx |
14…13 |
00 |
VREF+ |
|
|
01 |
VREF+ |
|
|
10 |
VeREF+ |
|
|
11 |
VeREF+ |
|
|
|
23.3. Регистры модуля DAC12 519 |
|
|
|
|
DAC12 |
Бит 12 |
Выбор разрядности модуля DAC12. |
|
RES |
|
0 |
12 битный ЦАП |
|
|
1 |
8 битный ЦАП |
DAC12 |
Биты |
Управление загрузкой данных в защёлку DAC12. Эти биты определя |
|
LSELx |
11…10 ют сигнал, по которому производится загрузка данных в защёлку мо |
||
|
|
дуля. Если DAC12LSELx > 0, то для обновления состояния ЦАП дол |
|
|
|
жен быть установлен бит DAC12ENC. |
|
|
|
00 |
Данные загружаются в защёлку при записи в регистр |
|
|
|
DAC12_xDAT (состояние бита DAC12ENC игнорируется) |
|
|
01 |
Данные загружаются в защёлку при записи в регистр |
|
|
|
DAC12_xDAT или, при использовании группирования, после |
|
|
|
записи в регистры DAC12_xDAT всех модулей группы |
|
|
10 |
Нарастающий фронт сигнала OUT1 Таймера A (TA1) |
|
|
11 |
Нарастающий фронт сигнала OUT2 Таймера B (TB2) |
DAC12 |
Бит 9 |
Включение режима калибровки модуля DAC12. Установка этого бита |
|
CALON |
|
инициирует процесс калибровки смещения модуля DAC12. Бит |
|
|
|
DAC12CALON сбрасывается автоматически после завершения ка |
|
|
|
либровки. |
|
|
|
0 |
Калибровка не выполняется |
|
|
1 |
Начать калибровку/выполняется калибровка |
DAC12IR |
Бит 8 |
Входной диапазон модуля DAC12. Этот бит устанавливает зависи |
|
|
|
мость между величиной опорного напряжения и максимальным вы |
|
|
|
ходным сигналом. |
0Максимальный выходной сигнал ЦАП равен трёхкратному зна чению опорного напряжения
1Максимальный выходной сигнал ЦАП равен однократному
|
|
значению опорного напряжения |
||
DAC12 |
Биты Установки буферов модуля DAC12. Эти биты определяют соотноше |
|||
AMPx |
7…5 ние между временем установления и потребляемым током входных и |
|||
|
выходных буферов модуля DAC. |
|
||
|
|
|
|
|
|
|
DAC12AMPx |
Входной буфер |
Выходной буфер |
|
|
|
|
|
|
|
000 |
Выключен |
DAC12 выключен, выход в |
|
|
|
|
высокоимпедансном состоянии |
|
|
|
|
|
|
|
001 |
Выключен |
DAC12 выключен, на выходе 0 В |
|
|
|
|
|
|
|
010 |
Низкоебыстродействие/ |
Низкое быстродействие/ |
|
|
|
малый ток |
малый ток |
|
|
|
|
|
|
|
011 |
Низкоебыстродействие/ |
Среднее быстродействие/ |
|
|
|
малый ток |
средний ток |
|
|
|
|
|
|
|
100 |
Низкоебыстродействие/ |
Высокая скорость/ |
|
|
|
малый ток |
большой ток |
|
|
|
|
|
|
|
101 |
Среднее |
Среднее быстродействие/ |
|
|
|
быстродействие/ |
средний ток |
|
|
|
средний ток |
|
|
|
|
|
|
|
|
110 |
Среднее |
Высокое быстродействие/ |
|
|
|
быстродействие/ |
большой ток |
|
|
|
средний ток |
|
|
|
|
|
|
|
|
111 |
Высокое |
Высокое быстродействие/ |
|
|
|
быстродействие/ |
большой ток |
|
|
|
большой ток |
|
|
|
|
|
|