АЦП
Микросхема в своем составе содержит 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.
Регистры АЦП
№ | Аббревиатура | Доступ | Описание |
---|---|---|---|
2F00h | ADC_CTRL | RW | Регистр управления |
2F04h | ADC_CFG | RW | Регистр конфигурации |
2F08h | ADC_MSK | W | Регистр маски прерываний |
2F0Ch | ADC_ST | R | Регистр статусов |
2F10h | ADC_RES0 | R | Регистр принятых данных 0 |
2F11h | ADC_RES1 | R | Регистр принятых данных 1 |
ADC_CTRL
Бит | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
---|---|---|---|---|---|---|---|---|
Назначение | Резерв* | MUX | START_ADC | EN | ||||
Начальное значение | 0 |
*– Не изменять начальное значение.
MUX – выбор пина аналогового мультиплексора:
- 111b – TD (термодатчик);
- 011b – А3;
- 010b – А2;
- 001b – А1;
- 000b – А0.
START_ADC – разрешает подачу старта:
- 1 – подать START;
- 0 – START не подается.
ЕN – подача частоты и включение АЦП:
- 1 – подана тактовая частота и АЦП включен в рабочий режим;
- 0 – режим энергосбережения.
ADC_CFG
Бит | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
---|---|---|---|---|---|---|---|---|
Назначение | Резерв | SHIFT | DIV | READ_MODE | MODE | |||
Начальное значение | 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
Бит | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
---|---|---|---|---|---|---|---|---|
Назначение | Резерв | RDY | ERR_RDY | ERR_SPD | ||||
Тип статуса | EVENT | |||||||
Начальное значение | 0 |
RDY – новые данные готовы для считывания.
ERR_RDY – START был отправлен, но после 32 периодов частоты АЦП сигнал готовности данных не пришел.
ERR_SPD – данные читались настолько долго, что АЦП успел завершить еще одно преобразование и данные обновились, т.е. микроконтроллер не успевает читать данные. Процесс чтения должен быть завершен до момента прихода нового READY.
ADC_MSK
Возможно формирование прерывания по любому биту статусного регистра ADC_ST. Расположение битов в ADC_ST и ADC_MSK аналогично.
Бит | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
---|---|---|---|---|---|---|---|---|
Назначение | Резерв | RDY | ERR_RDY | ERR_SPD | ||||
Начальное значение | 0 |
Для каждого из битов справедливо:
- 1 – данное прерывание формируется;
- 0 – данное прерывание не формируется.
ADC_RES0
Бит | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
---|---|---|---|---|---|---|---|---|
Назначение | RESULT | |||||||
Начальное значение | 0 |
RESULT – результат преобразования, младшая часть.
В зависимости от 5 бита (SHIFT) в регистре ADC_CFG младший бит выходного кода (D0) находится в бите 4 (SHIFT=0), либо в бите 0 (SHIFT=1).
ADC_RES1
Бит | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
---|---|---|---|---|---|---|---|---|
Назначение | RESULT | |||||||
Начальное значение | 0 |
RESULT – результат преобразования, старшая часть.
В зависимости от 5 бита (SHIFT) в регистре ADC_CFG старший бит выходного кода (D11) находится в бите 7 (SHIFT = 0), либо в бите 3 (SHIFT = 1).