Skip to main content

АЦП

Микросхема в своем составе содержит 12 -ти разрядный АЦП последовательного приближения. Минимальное время преобразования – 16 тактов.

Блок управления АЦП имеет два режима работы:

  • одиночный режим;
  • автоматический режим.

Одиночный режим

После подачи сигнала START микроконтроллер ожидает READY на протяжении 32 периодов. Если READY не пришел, то в статусном регистре ADC_ST будет записана «1» в соответствующий бит. Можно разрешить прерывание по приходу READY. Результаты преобразования находятся в регистрах ADC_RES0, ADC_RES1. Далее START можно подать снова, записав бит START_ADC в регистре ADC_CTRL.

Временная диаграмма работы в одиночном режиме

Вне зависимости от режима, после включения АЦП записью «1» в бит EN регистра ADC_CTRL, начинается отсчет 16 таков частоты АЦП, по завершению которых формируется сигнал START, если записан бит START_ADC. Сигнал START формируется по фронту частоты АЦП и снимается по срезу, длится 1,5 периода.

Автоматический режим

В этом режиме START подается автоматически, пока записан бит START_ADC в регистре ADC_CTRL. Микроконтроллер ожидает READY на протяжении 32 периодов, если READY не придет START будет отправлен снова. Микроконтроллер должен успевать считывать данные с АЦП. В том случае, если микроконтроллер будет читать данные настолько долго, что АЦП успеет завершить новое преобразование, то в регистр ADC_ST будет записан соответствующий бит. Сигнал READY формируется и снимается по фронту частоты АЦП, длится 2 периода.

Временная диаграмма максимального быстродействия в автоматическом режиме

Алгоритмы работы

Процедура работы с АЦП в одиночном режиме:

  • в регистре ADC_MSK разрешить необходимые прерывания;
  • в регистре ADC_CFG:
    • установить выравнивание данных в регистрах ADC_RES1 и ADC_RES0 битом SHIFT;
    • установить биты DIV для определения частоты работы АЦП;
    • бит MODE должен быть в «0».
  • в регистре ADC_CTRL:
    • o выбрать необходимый вывод мультиплексора с помощью бит MUX;
    • подать START битом START_ADC;
    • включить АЦП битом EN.
  • по завершению преобразования вычитать результат из регистров ADC_RES1 и ADC_RES0;
  • выключить АЦП битом EN или продолжить работу снова записав бит START_ADC (в этом режиме после подачи START бит START_ADC автоматически перейдет в «0», снова записать «1» возможно только после завершения преобразования или по истечению времени ожидания READY).

Процедура работы с АЦП в автоматическом режиме:

  • в регистре ADC_MSK разрешить необходимые прерывания;
  • в регистре ADC_CFG:
    • установить выравнивание данных в регистрах ADC_RES1 и ADC_RES0 битом SHIFT;
    • установить биты DIV для определения частоты работы АЦП;
    • выбрать режим, в котором будет происходить чтение READ_MODE;
    • установить бит MODE в «1».
  • в регистре ADC_CTRL:
    • выбрать необходимый вывод мультиплексора с помощью бит MUX;
    • подать START битом START_ADC;
    • включить АЦП битом EN.
  • по завершению преобразования вычитать результат из регистров ADC_RES1 и ADC_RES0;
  • для завершения преобразования достаточно записать «0» в бит EN или START_ADC, при этом, если во время записи уже идет преобразование, то оно будет прервано.

Данный режим предполагает оперативное считывание данных по прерыванию RDY.

Регистры АЦП

АббревиатураДоступОписание
2F00hADC_CTRLRWРегистр управления
2F04hADC_CFGRWРегистр конфигурации
2F08hADC_MSKWРегистр маски прерываний
2F0ChADC_STRРегистр статусов
2F10hADC_RES0RРегистр принятых данных 0
2F11hADC_RES1RРегистр принятых данных 1

ADC_CTRL

Бит76543210
НазначениеРезерв*MUXSTART_ADCEN
Начальное значение0

*– Не изменять начальное значение.

MUX – выбор пина аналогового мультиплексора:

  • 111b – TD (термодатчик);
  • 011b – А3;
  • 010b – А2;
  • 001b – А1;
  • 000b – А0.

START_ADC – разрешает подачу старта:

  • 1 – подать START;
  • 0 – START не подается.

ЕN – подача частоты и включение АЦП:

  • 1 – подана тактовая частота и АЦП включен в рабочий режим;
  • 0 – режим энергосбережения.

ADC_CFG

Бит76543210
НазначениеРезервSHIFTDIVREAD_MODEMODE
Начальное значение0

SHIFT – выравнивание 12-бит данных в регистрах ADC_RES1 и ADC_RES0 по левому или правому краю (соответственно младшие или старшие 4 бита будут заполнены нулями):

  • 1 – выравнивание по правому краю;
  • 0 – выравнивание по левому краю.

DIV – выбор частоты АЦП:

  • 110b – fclk/2;
  • 101b – fclk/4;
  • 100b – fclk/8;
  • 011b – fclk/16;
  • 010b – fclk/32;
  • 001b – fclk/64;
  • 000b – fclk/128.

READ_MODE – выбор режима чтения, имеет значение только в автоматическом режиме:

  • 1 – режим чтения только старшего байта;
  • 0 – режим чтения старшего и младшего байта.

MODE – выбор режима работы:

  • 1 – автоматический режим;
  • 0 – одиночный режим.

ADC_ST

Бит76543210
НазначениеРезервRDYERR_RDYERR_SPD
Тип статусаEVENT
Начальное значение0

RDY – новые данные готовы для считывания.

ERR_RDY – START был отправлен, но после 32 периодов частоты АЦП сигнал готовности данных не пришел.

ERR_SPD – данные читались настолько долго, что АЦП успел завершить еще одно преобразование и данные обновились, т.е. микроконтроллер не успевает читать данные. Процесс чтения должен быть завершен до момента прихода нового READY.

ADC_MSK

Возможно формирование прерывания по любому биту статусного регистра ADC_ST. Расположение битов в ADC_ST и ADC_MSK аналогично.

Бит76543210
НазначениеРезервRDYERR_RDYERR_SPD
Начальное значение0

Для каждого из битов справедливо:

  • 1 – данное прерывание формируется;
  • 0 – данное прерывание не формируется.

ADC_RES0

Бит76543210
НазначениеRESULT
Начальное значение0

RESULT – результат преобразования, младшая часть.

В зависимости от 5 бита (SHIFT) в регистре ADC_CFG младший бит выходного кода (D0) находится в бите 4 (SHIFT=0), либо в бите 0 (SHIFT=1).

ADC_RES1

Бит76543210
НазначениеRESULT
Начальное значение0

RESULT – результат преобразования, старшая часть.

В зависимости от 5 бита (SHIFT) в регистре ADC_CFG старший бит выходного кода (D11) находится в бите 7 (SHIFT = 0), либо в бите 3 (SHIFT = 1).