Программирование ARM nRF52: COMP, компаратор Mon, September 27 2021  

Поделиться

Нашли опечатку?

Пожалуйста, сообщите об этом - просто выделите ошибочное слово или фразу и нажмите Shift Enter.

nRF52: COMP, компаратор Печать
Добавил(а) microsin   

Компаратор (COMP) сравнивает одно входное напряжение (VIN+) с другим входным напряжением (VIN-). VIN+ может быть получено с любого аналогового входа (выводы AIN0 .. AIN7). VIN- может получать уровень из нескольких источников, в зависимости от рабочего режима компаратора.

Примечание: новые термины и сокращения см. в Словарике [2].

Основные функции и возможности компаратора следующие.

• Диапазон входного напряжения от 0V до VDD.

• Не дифференциальный режим (Single-ended mode), гибко настраиваемый гистерезис на основе 64-уровневого делителя.

• Дифференциальный режим, конфигурируемый гистерезис 50 mV.

• Входы опорного напряжения (VREF):
  - VDD.
  - Внешнее напряжение, поданное на один из выводов AIN0 .. AIN7 (с уровнем от 0V до VDD).
  - Внутренние уровни опорного напряжения 1.2V, 1.8V и 2.4V.

• Три режима с разным соотношением скорость/потребление тока: low-power, normal и high-speed.

• Поддержка одноконтактного емкостного датчика.

• Генерация события от изменения на выходе:
  - Событие UP, когда VIN- > VIN+.
  - Событие DOWN, когда VIN- < VIN+.
  - Событие CROSS при пересечении уровней VIN+ и VIN-.
  - Событие READY на готовности ядра и внутреннего опорного напряжения (если оно используется).

nRF52 COMP block diagram fig01

Рис. 1. Общая блок-схема компаратора.

Будучи разрешенным (с помощью регистра ENABLE), компаратор запускается путем активации задачи START, и останавливается активацией задачи STOP. После  того, как пройдет время запуска tCOMP,START, компаратор сгенерирует событие READY, чтобы показать свою готовность к работе, и что уровень на его выходе корректен. Когда модуль COMP запущен, события будут генерироваться каждый раз, когда пересекаются изменения уровней VIN+ и VIN-.

[Рабочие режимы компаратора]

Компаратор может быть сконфигурирован для работы в двух основных рабочих режимах, дифференциальный режим и не дифференциальный (single-ended) режим. Для дополнительной информации см. описание регистра MODE. В этих обоих рабочих режимах компаратор может работать на трех разных скоростях, отличающихся соотношением времени реакции и тока потребления (low-power, normal и high-speed). Режим high-speed потребляет больше тока, чем режим low-power, и в режиме low-power компаратор будет срабатывать медленнее, чем в режиме high-speed.

Регистр PSEL используется для выбора любого из выводов AIN0 .. AIN7 в качестве входа VIN+, независимо от выбранного режима работы компаратора. Источник сигнала для VIN- зависит от используемого рабочего режима:

Дифференциальный режим. Сигнал на VIN- поступает поступает непосредственно от одного из выводов AIN0 .. AIN7.
Недифференциальный (single-ended) режим. Сигнал для VIN- берется от VREF. VREF может быть получен от уровней VDD, AIN0 .. AIN7, или от внутренних уровней опорного напряжения 1.2V, 1.8V и 2.4V.

Выбранные аналоговые выводы будут захвачены компаратором, как только он разрешен.

Опционально может быть разрешен гистерезис на VIN+ и VIN-, когда модуль COMP используется в дифференциальном режиме. Гистерезис настраивается регистром HYST. В недифференциальном режиме пороги VUP и VDOWN могут быть установлены для реализации гистерезиса, который основан на цепочке эталонных резисторов (см. рис. 4). Этот гистерезис имеет величину порядка 50 mV, и он должен предотвращать шум на сигнале, который может создавать лишние нежелательные события. См. рис. 5, где показана работа гистерезиса на входном сигнале, загрязненном шумом.

Пересечение входных уровней в положительном направлении (когда VIN+ становится больше VIN-) генерирует событие UP и пересечение входных уровней в отрицательном направлении (когда VIN- становится больше VIN+) генерирует событие DOWN. Событие CROSS генерируется всякий раз, когда происходит пересечение входных уровней, независимо от направления.

Немедленное значение на выходе компаратора может быть взято чтением регистра RESULT путем активации задачи SAMPLE.

Дифференциальный режим. В этом режиме на вход VIN- (опорное напряжение) сигнал поступает непосредственно с одной из аналоговых ножек AINx.

Перед разрешением компаратора с помощью регистра ENABLE в дифференциальном режиме должны быть сконфигурированы регистры PSEL, MODE и EXTREFSEL.

nRF52 COMP differential mode fig02

Рис. 2. Компаратор в дифференциальном режиме.

Ограничение: в зависимости от устройства, не все аналоговые входы могут быть доступны для каждого MUX. Для дополнительной информации по доступности аналоговых выводов для каждого чипа см. определения для PSEL и EXTREFSEL.

При включении регистра HYST в этом режиме выход компаратора (и соответствующие события) будет менять свой уровень с ABOVE ("выше") на BELOW ("ниже") всякий раз, когда уровень VIN+ становится ниже уровня VIN- на величину (VDIFFHYST / 2). Также уровень на выходе поменяется с BELOW на ABOVE всякий раз, когда уровень на VIN+ станет больше уровня VIN- на величину (VDIFFHYST / 2). Это поведение показано на рис. 3.

nRF52 COMP hysteresis differential mode fig03

Рис. 3. Работа гистерезиса в дифференциальном режиме.

Недифференциальный режим. В этом режиме сигнал VIN- формируется от уровней на внутреннем лестничном делителе из образцовых резисторов.

Перед разрешением компаратора с помощью регистра ENABLE в недифференциальном режиме должны быть сконфигурированы регистры PSEL, MODE, REFSEL, EXTREFSEL, TH.

Лестничный делитель использует опорное напряжение (VREF) для получения двух новых опорных напряжений: VUP и VDOWN. Напряжения VUP и VDOWN конфигурируются полями THUP и THDOWN и соответственно, которые находятся в регистре TH. VREF может быть получено от любого из доступных источников опорного напряжения, что конфигурируется регистрами EXTREFSEL и REFSEL, как показано на рис. 4. Когда в регистре REFSEL выбрано опорное напряжение AREF, регистр EXTREFSEL используется для выбора одного из аналоговых выводов AIN0 .. AIN7 в качестве входа для опорного напряжения. Выбранные аналоговые выводы будут захвачены компаратором, как только он разрешен.

nRF52 COMP single ended mode fig04

Рис. 4. Компаратор в недифференциальном (single-ended) режиме.

Ограничение: в зависимости от устройства, не все аналоговые входы могут быть доступны для каждого MUX. Для дополнительной информации по доступности аналоговых выводов для каждого чипа см. определения для PSEL и EXTREFSEL.

Когда компаратор детектирует, что VIN+ > VIN-, например уровень на выходе стал выше (ABOVE), чем показывает регистр RESULT, VIN- переключится на VDOWN. Когда уровень VIN+ снова упадет ниже VIN-, VIN- переключится обратно на VUP. Путем указание VUP больше, чем VDOWN, может быть получен гистерезис, как показано на рисунках 5 и 6.

В недифференциальном режиме запись в регистр HYST не дает никакого эффекта, и содержимое этого регистра игнорируется.

nRF52 COMP hysteresis example VINP starts below VUP fig05

Рис. 5. Пример гистерезиса, когда VIN+ начинается с уровня ниже VUP.

nRF52 COMP hysteresis example VINP starts above VUP fig06

Рис. 6. Пример гистерезиса, когда VIN+ начинается с уровня выше VUP.

[Регистры компаратора]

Таблица 1. Экземпляры COMP.

Баз. адрес Периф. устройство Экз. Описание Конфигурация
0x40013000 COMP COMP Компаратор общего назначения  

Таблица 2. Обзор регистров COMP.

Регистр Смещ. Описание
TASKS_START 0x000 Задача запуска компаратора.
TASKS_STOP 0x004 Задача остановки компаратора.
TASKS_SAMPLE 0x008 Задача выборки состояния компаратора.
EVENTS_READY 0x100 Событие, сигнализирующее о готовности компаратора к работе, и что уровень на выходе достоверный.
EVENTS_DOWN 0x104 Событие пересечения уровней на входе в отрицательном направлении (вниз).
EVENTS_UP 0x108 Событие пересечения уровней на входе в положительном направлении (вверх).
EVENTS_CROSS 0x10C Событие пересечения уровней на входе в любом направлении.
SHORTS 0x200 Регистр шортката.
INTEN 0x300 Регистр разрешения или запрета прерываний.
INTENSET 0x304 Разрешение прерываний.
INTENCLR 0x308 Запрет прерываний.
RESULT 0x400 Результат сравнения.
ENABLE 0x500 Разрешение компаратора.
PSEL 0x504 Выбор ножки.
REFSEL 0x508 Выбор источника опорного напряжения в недифференциальном режиме.
EXTREFSEL 0x50C Выбор внешнего опорного напряжения.
TH 0x530 Конфигурация порога блока гистерезиса.
MODE 0x534 Регистр конфигурации режима.
HYST 0x538 Разрешение гистерезиса компаратора.
ISOURCE 0x53C Выбор источника тока на аналоговом входе.

Смещение адреса: 0x200. Запись 1 разрешает шорткат, запись 0 запрещает. Чтение показывает текущее состояние.

Биты регистра SHORTS:

№ бита 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10  9  8  7  6  5  4  3  2  1  0
Id                                                       E D C B A
Reset 0x00000000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Назначение бит:

Id RW Поле Описание
A RW READY_SAMPLE Шорткат между событием READY и задачей SAMPLE. См. описание EVENTS_READY и TASKS_SAMPLE.
B RW READY_STOP Шорткат между событием READY и задачей STOP. См. описание EVENTS_READY и TASKS_STOP.
C RW DOWN_STOP Шорткат между событием DOWN и задачей STOP. См. описание EVENTS_DOWN и TASKS_STOP.
D RW UP_STOP Шорткат между событием UP и задачей STOP. См. описание EVENTS_UP и TASKS_STOP.
E RW CROSS_STOP Шорткат между событием CROSS и задачей STOP. См. описание EVENTS_CROSS и TASKS_STOP.

Смещение адреса: 0x300. Запись 1 разрешает соответствующее прерывание, запись 0 запрещает. Чтение показывает текущее состояние прерывания: 0 прерывание запрещено, 1 разрешено.

Биты регистра INTEN:

№ бита 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10  9  8  7  6  5  4  3  2  1  0
Id                                                         D C B A
Reset 0x00000000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Назначение бит:

Id RW Поле Описание
A RW READY Разрешение/запрет прерывания для события READY. См. EVENTS_READY.
B RW DOWN Разрешение/запрет прерывания для события DOWN. См. EVENTS_DOWN.
C RW UP Разрешение/запрет прерывания для события UP. См. EVENTS_UP.
D RW CROSS Разрешение/запрет прерывания для события CROSS. См. EVENTS_CROSS.

Смещение адреса: 0x304. Запись 1 разрешает соответствующее прерывание. Запись 0 не оказывает никакого влияния. Чтение показывает текущее состояние прерывания: 0 прерывание запрещено, 1 разрешено.

Биты регистра INTENSET:

№ бита 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10  9  8  7  6  5  4  3  2  1  0
Id                                                         D C B A
Reset 0x00000000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Назначение бит:

Id RW Поле Описание
A RW READY Разрешение прерывания для события READY. См. EVENTS_READY.
B RW DOWN Разрешение прерывания для события DOWN. См. EVENTS_DOWN.
C RW UP Разрешение прерывания для события UP. См. EVENTS_UP.
D RW CROSS Разрешение прерывания для события CROSS. См. EVENTS_CROSS.

Смещение адреса: 0x308. Запись 1 запрещает соответствующее прерывание. Запись 0 не оказывает никакого влияния. Чтение показывает текущее состояние прерывания: 0 прерывание запрещено, 1 разрешено.

Биты регистра INTENCLR:

№ бита 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10  9  8  7  6  5  4  3  2  1  0
Id                                                         D C B A
Reset 0x00000000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Назначение бит:

Id RW Поле Описание
A RW READY Запрет прерывания для события READY. См. EVENTS_READY.
B RW DOWN Запрет прерывания для события DOWN. См. EVENTS_DOWN.
C RW UP Запрет прерывания для события UP. См. EVENTS_UP.
D RW CROSS Запрет прерывания для события CROSS. См. EVENTS_CROSS.

Смещение адреса: 0x400.

Биты регистра RESULT:

№ бита 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10  9  8  7  6  5  4  3  2  1  0
Id                                                               A
Reset 0x00000000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Назначение бит:

Id RW Поле Описание
A R RESULT Результат последнего сравнения. Точка принятия решения задачи SAMPLE.
0, Below: входное напряжение ниже порога (VIN+ < VIN-).
1, Above: входное напряжение выше порога (VIN+ > VIN-).

Смещение адреса: 0x500.

Биты регистра ENABLE:

№ бита 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10  9  8  7  6  5  4  3  2  1  0
Id                                                             A A
Reset 0x00000000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Назначение бит:

Id RW Поле Описание
A RW ENABLE 0: COMP запрещен.
2: COMP разрешен.

Смещение адреса: 0x504.

Биты регистра PSEL:

№ бита 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10  9  8  7  6  5  4  3  2  1  0
Id                                                           A A A
Reset 0x00000000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Назначение бит:

Id RW Поле Описание
A RW PSEL Выбор ножки аналогового порта в качестве входа компаратора.
0, AnalogInput0: в качестве входа выбрана ножка AIN0.
..
7, AnalogInput7: в качестве входа выбрана ножка AIN7.

Смещение адреса: 0x508.

Биты регистра REFSEL:

№ бита 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10  9  8  7  6  5  4  3  2  1  0
Id                                                           A A A
Reset 0x00000004 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0

Назначение бит:

Id RW Поле Описание
A RW REFSEL Выбор источника опорного напряжения в режиме single-ended.
0, Int1V2: VREF = 1.2V внутреннего опорного источника (VDD должно быть ≥ 1.7V).
1, Int1V8: VREF = 1.8V внутреннего опорного источника (VDD должно быть ≥ VREF + 0.2V).
2, Int2V4: VREF = 2.4V внутреннего опорного источника (VDD должно быть ≥ VREF + 0.2V).
4, VDD: VREF = VDD.
7, ARef: VREF = AREF (VDD ≥ VREF ≥ AREFMIN).

Смещение адреса: 0x50C.

Биты регистра EXTREFSEL:

№ бита 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10  9  8  7  6  5  4  3  2  1  0
Id                                                           A A A
Reset 0x00000000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Назначение бит:

Id RW Поле Описание
A RW EXTREFSEL Выбор ножки аналогового порта в качестве входа для опорного напряжения.
0, AnalogInput0: в качестве входа выбрана ножка AIN0.
..
7, AnalogInput7: в качестве входа выбрана ножка AIN7.

Смещение адреса: 0x530.

Биты регистра TH:

№ бита 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10  9  8  7  6  5  4  3  2  1  0
Id                                     B B B B B B     A A A A A A
Reset 0x00000000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Назначение бит:

Id RW Поле Описание
A RW THDOWN Значение в диапазоне 0 .. 63. Порог VDOWN = (THDOWN + 1) / 64 · VREF
B RW THUP Значение в диапазоне 0 .. 63. Порог VUP = (THUP + 1) / 64 · VREF

Смещение адреса: 0x534.

Биты регистра MODE:

№ бита 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10  9  8  7  6  5  4  3  2  1  0
Id                                               B             A A
Reset 0x00000000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Назначение бит:

Id RW Поле Описание
A RW SP Режим, определяющий быстродействие и энергопотребление.
0, Low: пониженное потребление энергии, низкое быстродействие.
1, Normal: нормальный режим.
2, High: повышенное потребление энергии, высокое быстродействие.
B RW MAIN Выбирает недифференциальный или дифференциальный режим.
0, SE: недифференциальный режим (single-ended mode).
1, Diff: дифференциальный режим.

Смещение адреса: 0x538.

Биты регистра HYST:

№ бита 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10  9  8  7  6  5  4  3  2  1  0
Id                                                               A
Reset 0x00000000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Назначение бит:

Id RW Поле Описание
A RW HYST 0: гистерезис компаратора запрещен.
1: гистерезис компаратора разрешен.

Смещение адреса: 0x53C.

Биты регистра ISOURCE:

№ бита 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10  9  8  7  6  5  4  3  2  1  0
Id                                                             A A
Reset 0x00000000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Назначение бит:

Id RW Поле Описание
A RW ISOURCE 0: источник тока запрещен.
1: разрешен источник тока (± 2.5 мкА).
2: разрешен источник тока (± 5 мкА).
3: разрешен источник тока (± 10 мкА).

[Электрические параметры компаратора]

Символ Описание min Typ MAX Ед.
ICOMP,LP Ток потребления в low-power mode   2   мкА
ICOMP,N Ток потребления normal mode   5  
ICOMP,HS Ток потребления в high-speed mode   10  
tPROPDLY,LP Задержка распространения в low-power mode(1)   0.6   мкс
tPROPDLY,N Задержка распространения в normal mode(1)   0.2  
tPROPDLY,HS Задержка распространения в lhigh-speed mode(1)   0.1  
VDIFFHYST Опциональный гистерезис, приложенный к дифференциальному входу   30   mV
VVDD-VREF Требуемая разница между VDD и выбранным VREF, VDD должно быть больше VREF 0.3     V
IINT_REF Ток, используемый внутренним опорным блоком запрещенной зоны, когда в качестве источника для VREF   13   мкА
tINT_REF,START Время запуска для внутреннего опорного блока запрещенной зоны   50 80 мкс
EINT_REF Ошибка внутреннего блока запрещенной зоны -3   3 %
RLADDER Сопротивление лестничного делителя, ILADDER = VREF / RLADDER   550   кОм
VINPUTOFFSET Смещение по входу -10   10 mV
DNLLADDER Дифференциальная нелинейность лестничного делителя   < 0.1   LSB
tCOMP,START Время запуска блока компаратора   3   мкс

Примечание (1): время распространиения с перегрузкой 10 mV.

Общий ток потребления компаратора вычисляется от токов ICOMP, IINT_REF и ILADDER для используемого опорного напряжения.

[Ссылки]

1. nRF52 COMP Comparator site:nordicsemi.com.
2. nRFxx: аббревиатуры и термины.

 

Добавить комментарий


Защитный код
Обновить

Top of Page