[Home] | [Donate!] [Контакты] |
[<< ADC (аналого-цифровой преобразователь микроконтроллера)] |
В предыдущей статье "ADC: аналого-цифровой преобразователь микроконтроллера" были подробно рассмотрены функции, режимы работы и особенности, порядок инициализации и применения ADC, входящего в состав микроконтроллеров линейки STM32F100xx. В данной статье даётся систематическое описание всех регистров ADC.
Оглавление
31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | |
Reserved | ||||||||||||||||
15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
Reserved | STRT | JSTRT | JEOC | EOC | AWD | |||||||||||
rc_w0 | rc_w0 | rc_w0 | rc_w0 | rc_w0 |
Address offset: 0x00
Reset value: 0x0000 0000
STRT: Regular channel Start flag
Бит устанавливается аппаратно, когда запускается преобразование из регулярной группы. Сбрасывается программно.
0: Регулярное преобразование не запускалось.
1: Регулярное преобразование было запущено.
JSTRT: Injected channel Start flag
Бит устанавливается аппаратно, когда происходит запуск преобразования из инжектируемой группы. Сбрасывается программно.
0: Инжектируемое преобразование не запускалось.
1: Инжектируемое преобразование было запущено.
JEOC: Injected channel end of conversion
Бит устанавливается аппаратно после завершения всех преобразований из инжектируемой группы в сканирующем режиме или после каждого инжектируемого преобразования в других режимах. Если этот бит устанавливается, то EOC тоже устанавливается. Сбрасывается программно.
0: Преобразование не завершено.
1: Преобразование завершено.
EOC: End of conversion
Бит устанавливается аппаратно после завершения всех преобразований в группе (регулярной или инжектируемой) в сканирующем режиме или после каждого преобразования в других режимах. Сбрасывается программно записью 0 в бит или чтением регистра ADC_DR.
0: Преобразование не завершено.
1: Преобразование завершено.
AWD: Analog watchdog flag
Бит устанавливается аппаратно при срабатывании сторожевой схемы (если результат преобразования на одном из контролируемых каналов выходит за пределы заданных в регистрах ADC_LTR и ADC_HTR порогов). Сбрасывается программно.
0: Не происходило срабатывания сторожевой схемы.
1: Произошло срабатывание сторожевой схемы.
Address offset: 0x04
Reset value: 0x0000 0000
AWDEN: Analog watchdog enable on regular channels
Бит устанавливается и сбрасывается программно и используется для включения и отключения сторожевой схемы для каналов из регулярной группы.
0: Сторожевая схема отключена для каналов регулярной группы.
1: Сторожевая схема включена для каналов регулярной группы.
JAWDEN: Analog watchdog enable on injected channels
Бит устанавливается и сбрасывается программно и используется для включения и отключения сторожевой схемы для каналов из инжектируемой группы.
0: Сторожевая схема отключена для каналов инжектируемой группы.
1: Сторожевая схема включена для каналов инжектируемой группы.
DISCNUM[2:0]: Discontinuous mode channel count
Изменяемое программно битовое поле, которое определяет количество преобразований, которые будут последовательно выполнены для каналов регулярной группы после каждого запуска регулярного преобразования ADC при работе в прерывистом режиме. Количество выполняемых преобразований n=DISCNUM[2:0]+1:
000: 1 преобразование;
001: 2 преобразования;
...
111: 8 преобразований.
JDISCEN: Discontinuous mode on injected channels
Бит устанавливается и сбрасывается программно для включения и отключения прерывистого режима преобразования в инжектируемой группе каналов.
0: Прерывистый режим в инжектируемой группе отключён.
1: Прерывистый режим в инжектируемой группе включён.
DISCEN: Discontinuous mode on regular channels
Бит устанавливается и сбрасывается программно для включения и отключения прерывистого режима преобразования в регулярной группе каналов.
0: Прерывистый режим в регулярной группе отключён.
1: Прерывистый режим в регулярной группе включён.
JAUTO: Automatic Injected Group conversion
Бит устанавливается и сбрасывается программно для включения и отключения режима автоинжекции, когда преобразования для каналов из инжектируемой группы автоматически выполняются после завершения преобразований из регулярной группы.
0: Режим автоинжекции отключён.
1: Режим автоинжекции включён.
AWDSGL: Enable the watchdog on a single channel in scan mode
Бит устанавливается и сбрасывается программно для включения и отключения режима сторожевой схемы, в котором она контролирует результаты преобразования для единственного канала, номер которого задаётся битами AWDCH[4:0]. Биты AWDEN, JAWDEN определяют, какие преобразования (регулярные, инжектируемые) на этом канале должны контролироваться сторожевой схемой.
0: Сторожевая схема контролирует все каналы (если включена).
1: Сторожевая схема контролирует только один заданный канал (если включена).
SCAN: Scan mode
Бит устанавливается и сбрасывается программно для включения и отключения режима сканирования. В режиме сканирования, после запуска ADC последовательно произойдёт автоматическое подключение к каждому из каналов в группе и будет выполнено преобразование для него. Регулярная или инжектируемая группа будет выбрана в зависимости от способа запуска.
0: Режим сканирования отключен.
1: Режим сканирования включён.
Примечание. Установка флага завершения преобразования EOC или JEOC произойдёт только после выполнения последнего преобразования в группе.
Биты JEOCIE, AWDIE, EOCIE используются для разрешения или запрета генерации прерывания от ADC при установке соответствующего флага (JEOC, AWD, EOC).
Значение 0 запрещает генерацию прерывания при установке соответствующего флага;
Значение 1 разрешает генерацию прерывания.
JEOCIE: Interrupt enable for injected channels
Бит устанавливается и сбрасывается программно для включения и отключения генерации прерывания при установке флага JEOC (при завершении инжектируемого преобразования).
0: Отключить генерацию прерывания при установке флага JEOC.
1: Включить генерацию прерывания при установке флага JEOC.
AWDIE: Analog watchdog interrupt enable
Бит устанавливается и сбрасывается программно для включения и отключения генерации прерывания при установке флага AWD (при срабатывании сторожевой схемы).
0: Отключить генерацию прерывания при срабатывании сторожевой схемы.
1: Включить генерацию прерывания при срабатывании сторожевой схемы.
EOCIE: Interrupt enable for EOC
Бит устанавливается и сбрасывается программно для включения и отключения генерации прерывания при установке флага EOC (после выполнения преобразования, как регулярного, так и инжектируемого).
0: Отключить генерацию прерывания при установке флага EOC.
1: Включить генерацию прерывания при установке флага EOC.
AWDCH[4:0]: Analog watchdog channel select bits
Изменяемое программно битовое поле, содержит номер канала, контролируемого сторожевой схемой. Значение используется в том случае, когда установлен бит AWDSGL.
Допустимые значения: 0..17 (00000..10001).
Каналы 16, 17 внутренне подключены к датчику температуры микроконтроллера и встроенному источнику опорного напряжения VREFINT соответственно; перед использованием, их требуется включить установкой бита TSVREFE в регистре ADC_CR2.
Address offset: 0x08
Reset value: 0x0000 0000
TSVREFE: Temperature sensor and VREFINT enable
Бит устанавливается и сбрасывается программно для включения/отключения датчика температуры и источника опорного напряжения. После установки бита требуется от 4 до 10 мкс до полной готовности датчика температуры.
0: Датчик температуры и источник опорного напряжения отключены.
1: Датчик температуры и источник опорного напряжения включены.
SWSTART: Start conversion of regular channels
Бит устанавливается программно для запуска преобразования и сбрасывается программно либо аппаратно (сразу же после старта преобразования). Установка бита запускает регулярное преобразование. Этот способ запуска работает только в том случае, если разрешён старт регулярных преобразований по внешнему сигналу запуска (EXTTRIG=1) и в качестве внешнего сигнала запуска EXTSEL[2:0] выбран вариант запуска посредством установки SWSTART (EXTSEL[2:0]=111).
0: Сброшенное состояние.
1: Запускает регулярное преобразование (если выполнены перечисленные выше условия).
JSWSTART: Start conversion of injected channels
Бит устанавливается программно для запуска преобразования и сбрасывается программно либо аппаратно (сразу же после старта преобразования). Установка бита запускает инжектируемое преобразование. Этот способ запуска работает только в том случае, если разрешён старт инжектируемых преобразований по внешнему сигналу запуска (JEXTTRIG=1) и в качестве внешнего сигнала запуска JEXTSEL[2:0] выбран вариант запуска посредством установки JSWSTART (JEXTSEL[2:0]=111).
0: Сброшенное состояние.
1: Запускает инжектируемое преобразование (если выполнены перечисленные выше условия).
EXTTRIG: External trigger conversion mode for regular channels
Бит устанавливается и сбрасывается программно для включения/отключения возможности запуска регулярного преобразования внешним сигналом запуска.
0: Разрешён запуск внешним сигналом.
1: Отключён запуск внешним сигналом.
EXTSEL[2:0]: External event select for regular group
Битовое поле используется для того, чтобы выбрать источник сигнала для запуска преобразования в регулярной группе:
000: Timer 1 CC1 event
001: Timer 1 CC2 event
010: Timer 1 CC3 event
011: Timer 2 CC2 event
100: Timer 3 TRGO event
101: Timer 4 CC4 event
110: EXTI line 11
111: SWSTART
JEXTTRIG: External trigger conversion mode for injected channels
Бит устанавливается и сбрасывается программно для включения/отключения возможности запуска инжектируемого преобразования внешним сигналом запуска.
0: Разрешён запуск внешним сигналом.
1: Отключён запуск внешним сигналом.
JEXTSEL[2:0]: External event select for injected group
Битовое поле используется для того, чтобы выбрать источник сигнала для запуска преобразования в инжектируемой группе:
000: Timer 1 TRGO event
001: Timer 1 CC4 event
010: Timer 2 TRGO event
011: Timer 2 CC1 event
100: Timer 3 CC4 event
101: Timer 4 TRGO event
110: EXTI line15
111: JSWSTART
ALIGN: Data alignment
Бит устанавливается и сбрасывается программно, используется для выбора варианта выравнивания результата аналого-цифрового преобразования в регистрах данных.
0: Выравнивание вправо.
1: Выравнивание влево.
DMA: Direct memory access mode
Бит устанавливается и сбрасывается программно для включения/отключения генерации запросов DMA.
0: DMA режим отключён.
1: DMA режим включён.
RSTCAL: Reset calibration
Бит устанавливается программно для сброса калибровки ADC, сбрасывается аппаратно после завершения инициализации регистров калибровки.
0: Инициализация регистров калибровки завершена.
1: Сбросить калибровку ADC.
Примечание. Если бит RSTCAL устанавливается в то время, когда происходит процесс преобразования, потребуются дополнительные циклы для сброса регистров калибровки.
CAL: A/D Calibration
Бит устанавливается программно для запуска калибровки ADC. Сбрасывается аппаратно после завершения калибровки.
0: Калибровка завершена.
1: Запустить калибровку.
CONT: Continuous conversion
Бит устанавливается и сбрасывается программно. Если бит установлен, преобразование будет выполняться в непрерывном режиме до сброса данного бита (непрерывность означает, что сразу после завершения одного преобразования будет автоматически запускаться следующее).
0: Режим однократного преобразования.
1: Режим непрерывного преобразования.
ADON: A/D converter ON / OFF
Бит устанавливается и сбрасывается программно. Если этот бит содержал значение 0, запись 1 в него включает питание ADC. Для включения может потребоваться время tSTAB от 0 до 1 мкс (типичное значение 0). Если бит содержал 1, запись в него 1 запускает процесс преобразования для канала из регулярной группы.
0: Прекратить преобразование/калибровку и отключить питание ADC.
1: Включить питание или запустить преобразование (в зависимости от предыдущего состояния бита).
Примечание. Если изменяется любой бит регистра ADC_CR2, не считая ADON, то преобразование не запускается. Это сделано для того, чтобы можно было модифицировать настройки ADC, управляемые регистром ADC_CR2, не вызывая ложных запусков ADC.
Address offset: 0x0C
Reset value: 0x0000 0000
Address offset: 0x10
Reset value: 0x0000 0000
SMPx[2:0]: Channel x Sample time selection
Модифицируемые программно битовые поля, которые в индивидуальном порядке определяют время выборки в тактах ADC для каждого канала ADC. Должны оставаться неизменными во время циклов выборки.
000: 1.5 такта;
001: 7.5 тактов;
010: 13.5 тактов;
011: 28.5 тактов;
100: 41.5 тактов;
101: 55.5 тактов;
110: 71.5 тактов;
111: 239.5 тактов.
Address offset: 0x14-0x20
Reset value: 0x0000 0000
JOFFSETx[11:0]: Data offset for injected channel x
Эти битовые поля модифицируются программно и содержат величины, которые вычитаются из результатов преобразований для инжектируемых каналов перед сохранением в соответствующий регистр данных ADC_JDRx.
31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | |
Reserved | ||||||||||||||||
15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
Reserved | HT[11:0] | |||||||||||||||
rw | rw | rw | rw | rw | rw | rw | rw | rw | rw | rw | rw |
Address offset: 0x24
Reset value: 0x0000 0FFF
HT[11:0]: Analog watchdog high threshold
Данное битовое поле модифицируется программно и определяет значение для верхнего порога сторожевой схемы.
31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | |
Reserved | ||||||||||||||||
15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
Reserved | LT[11:0] | |||||||||||||||
rw | rw | rw | rw | rw | rw | rw | rw | rw | rw | rw | rw |
Address offset: 0x28
Reset value: 0x0000 0000
LT[11:0]: Analog watchdog low threshold
Данное битовое поле модифицируется программно и определяет значение для нижнего порога сторожевой схемы.
Address offset: 0x2C
Reset value: 0x0000 0000
L[3:0]: Regular channel sequence length
Данное битовое поле модифицируется программно и определяет общее количество преобразований в регулярной последовательности преобразований (определяет размер регулярной группы), n=L[3:0]+1:
0000: 1 преобразование;
0001: 2 преобразования;
.....
1111: 16 преобразований.
SQ16[4:0]: 16th conversion in regular sequence
Данное битовое поле модифицируется программно и задаёт номер канала (0..17), который будет назначен для 16-го преобразования в последовательности. То есть, когда ADC будет выполнять 16-е регулярное преобразование, он автоматически подключится к каналу, заданному в SQ16[4:0] и будет использовать его как источник сигнала (в том случае, конечно, если последовательность имеет длину 16 элементов).
SQx[4:0]: xth conversion in regular sequence
Аналогичным образом, битовое поле SQx[4:0] задаёт номер канала, используемого как источник сигнала при выполнении регулярного преобразования с порядковым номером x.
Если длина последовательности определена равной n (L[3:0]=n-1), то должны быть заданы битовые поля SQx, x=1..n; инициализировать остальные нет необходимости.
Address offset: 0x30
Reset value: 0x0000 0000
Назначение битов SQx[4:0] смотрите в описании регистра ADC_SQR1.
Address offset: 0x34
Reset value: 0x0000 0000
Назначение битов SQx[4:0] смотрите в описании регистра ADC_SQR1.
Номер канала в SQ1[4:0] используется в режиме однократного преобразования и в непрерывном режиме, остальные биты этого регистра и содержимое регистров ADC_SQR1, ADC_SQR2 в этих режимах игнорируются.
Address offset: 0x38
Reset value: 0x0000 0000
JL[1:0]: Injected sequence length
Данное битовое поле модифицируется программно и определяет общее количество преобразований в инжектируемой последовательности, n=JL[1:0]+1:
00: 1 преобразование;
01: 2 преобразования;
10: 3 преобразования;
11: 4 преобразования.
JSQx[4:0], x=1, 2, 3, 4: 1th (2th, 3th, 4th) conversion in injected sequence.
Битовое поле задаётся программно и определяет номер канала, используемого в данном по счёту инжектируемом преобразовании.
В случае инжектируемой группы имеются отличия по сравнению с регулярной группой в способе определения и порядке выполнения преобразований. Заданные номерами 1, 2, 3, 4 элементы группы будут использоваться в таком порядке только в случае, если определена последовательность максимальной длины, когда JL[1:0]=3, n=4. Если же n<4, то выполнение начнётся с элемента 4-JL и продолжится до 4-го элемента (т.е. будут выполнены преобразования для n последних элементов группы).
Пример: значение регистра
ADC_JSQR[21:0] = 10 00011 00011 00111 00010
задаёт следующую последовательность использования каналов из 3-х элементов: 7, 3, 3.
Здесь
JL[2:0]=10=2, n=3;
JSQ4[4:0]=00011=3, в последнем преобразовании используется канал 3;
JSQ3[4:0]=00011=3, во втором преобразовании используется канал 3;
JSQ2[4:0]=00111=7, в первом преобразовании используется канал 7;
JSQ1[4:0]=00010=2, данное поле игнорируется при длине последовательности менее 4.
В зависимости от значения JL, будет использоваться следующая инжектируемая последовательность каналов:
00: JSQ4[4:0];
01: JSQ3[4:0] >> JSQ4[4:0];
10: JSQ2[4:0] >> JSQ3[4:0] >> JSQ4[4:0];
11: JSQ1[4:0] >> JSQ2[4:0] >> JSQ3[4:0] >> JSQ4[4:0].
В регистрах данных результаты сохраняются в обычном порядке: результат первого преобразования - в ADC_JDR1, второго - в ADC_JDR2, и т.д., независимо от длины используемой последовательности.
В режиме однократного преобразования и в непрерывном режиме всегда используется канал, заданный элементом JSQ1, остальные элементы и длина группы игнорируются.
31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | |
Reserved | ||||||||||||||||
15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
JDATA[15:0] | ||||||||||||||||
r | r | r | r | r | r | r | r | r | r | r | r | r | r | r | r |
Address offset: 0x3C - 0x48
Reset value: 0x0000 0000
JDATA[15:0]: Injected data
Только для чтения, содержат результат, полученный при аналого-цифровом преобразовании для соответствующего по счёту элемента в инжектируемой последовательности преобразований. В режиме однократного преобразования и в непрерывном режиме используется регистр ADC_JDR1.
Данные могут быть выровнены вправо (по умолчанию) или влево в зависимости от настроек (смотрите описание регистра ADC_CR2, бит ALIGN).
Для каждого регистра данных ADC_JDRx есть соответствующий ему регистр смещения ADC_JOFRx; записанное в него значение будет вычитаться из полученного ADC результата перед сохранением в регистр данных (и перед выполнением выравнивания).
31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | |
Reserved | ||||||||||||||||
15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
JDATA[15:0] | ||||||||||||||||
r | r | r | r | r | r | r | r | r | r | r | r | r | r | r | r |
Address offset: 0x4C
Reset value: 0x0000 0000
DATA[15:0]: Regular data
Только для чтения, биты содержат результат, полученный при аналого-цифровом преобразовании в регулярной группе.
Данные могут быть выровнены вправо (по умолчанию) или влево в зависимости от настроек (смотрите описание регистра ADC_CR2, бит ALIGN).
В отличие от преобразований для инжектируемой группы, где каждый элемент группы имеет отдельный регистр данных, результаты всех регулярных преобразований помещаются в один и тот же регистр. Поэтому, в групповых операциях необходимо своевременно считывать результат, не допуская, чтобы результат очередного преобразования затёр предыдущие данные.