Программирование ARM nRF52: SAADC, АЦП с последовательным приближением Mon, September 27 2021  

Поделиться

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

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

nRF52: SAADC, АЦП с последовательным приближением Печать
Добавил(а) microsin   

SAADC расшифровывается как successive approximation ADC, т. е. аналого-цифровой преобразователь (АЦП), использующий для оцифровки регистр с последовательным приближением (successive approximation register, SAR). Все непонятные термины и сокращения см. в Словарике [2].

Основные функции и возможности SAADC:

• Разрешающая способность 8/10/12 разрядов, 14 разрядов с применением техники передискретизации (oversampling) [4].
• До 8 входных каналов, привязанных к фиксированным портам и выводам корпуса:
   - По одному каналу для недифференциального входа, и по 2 канала на дифференциальный вход.
   - Может быть сконфигурирован режим сканирования как для недифференциальных, так и дифференциальных каналов.
• Диапазон оцифровываемых уровней от 0 до VDD.
• Запуск оцифровки срабатывает программно через task, или от канала PPI.
• Гибкая настройка для компромисса между энергопотреблением и точностью - выбор частоты оцифровки от маломощного генератора 32.768 кГц RTC, или работа с повышенной точностью от таймеров 1/16 МГц.
• Режим одиночного преобразования (one-shot conversion mode) для оцифровки одного канала.
• Режим сканирования для последовательности оцифровки нескольких каналов. Задержка между каналами tACQ + tCONV, которая может меняться между каналами с помощью конфигурирования tack.
• Поддержка прямой передачи выборки в RAM с помощью EasyDMA.
• Прерывания на событии одиночной выборки и событии заполнения буфера.
• Выборки сохраняются как 16-разрядные значения в формате двоичного дополнения (2’s complement) для дифференциальной и недифференциальной оцифровки.
• Повторяющиеся выборки без необходимости использования внешнего таймера.
• Внутренняя управляемая цепочка резисторов для делителей на входах.
• Мониторинг на лету выхода уровня на входе за установленные пределы.

Общие ресурсы. ADC может сосуществовать с COMP и другими периферийными устройствами для использования выводов (ножек корпуса) AIN0 .. AIN7 [5], когда они назначены на разные выводы. Не рекомендуется выбирать один и тот же аналоговый вход для обоих модулей (хотя есть возможность программной поочередной перенастройки).

У ADC имеется до 8 внешних аналоговых каналов ввода, в зависимости от используемого корпуса чипа. Каналы могут работать в режиме одиночного запуска / однократной выборки (one-shot mode) под управлением программы, или в режиме автоматического повторения выборок (continuous conversion mode) с программируемой частотой выборок (sampling rate).

Аналоговые входы могут быть сконфигурированы как 8 недифференциальных входов (single-ended inputs), 4 дифференциальных входа, или как комбинация этих вариантов. Каждый канал может быть сконфигурирован для выбора ножек от AIN0 до AIN7, или для ножки VDD. Каналы могут оцифровываться индивидуально в режиме one-shot выборок или continuous выборок, или при использовании режима сканирования (scan mode) несколько каналов могут оцифроваться в настроенной последовательности. Для повышения разрядности выборок каналов и увеличения соотношения сигнал/шум также может применяться техника передискретизации.

nRF52 simplified ADC block diagram fig01

Рис. 1. Упрощенная блок-схема АЦП.

Внутренне ADC всегда работает как дифференциальный АЦП, но по умолчанию сконфигурированный на недифференциальные входы (single-ended input) в поле MODE регистра CH[n].CONFIG. В режиме single-ended, отрицательный вход замкнут на землю внутри чипа. В этом режиме предполагается, что внутреннее соединение на землю входа АЦП совпадает с потенциалом внешней земли, относительно которого измеряется напряжение на входе. Поэтому в режиме single-ended ADC чувствительно к импульсам помех по земле, уровень которых зависит от качества разводки печатной платы. По этой причине рекомендуется использовать дифференциальный режим измерений.

Результат преобразования ADC зависит о настроек в регистрах CH[n].CONFIG и RESOLUTION:

RESULT = [V(P)V(N) ] * GAIN/REFERENCE * 2(RESOLUTION - m)

Здесь:

V(P) напряжение на положительном входе P
V(N) напряжение на отрицательном входе N
GAIN выбранная настройка усиления
REFERENCE напряжение опорного источника
m=0, если CONFIG.MODE=SE (недифференциальный режим), или m=1 если CONFIG.MODE=Diff (дифференциальный режим).

Результат, генерируемый ADC будет отличаться от ожидаемого из-за ошибок по постоянному току (DC errors) таких как смещение (offset), ошибка усиления (gain), дифференциальная нелинейность (DNL) и интегральная нелинейность (INL). Подробно по этим параметрам см. далее секцию "Электрические параметры ADC". Также результат может варьироваться от ошибок по переменному току (AC errors), таких как нелинейность в блоке усиления GAIN, ошибок установки уровня на входе из за высокого сопротивления источника сигнала и джиттера выборки. Для изменения напряжения батареи наиболее важны ошибки по постоянному току (DC errors).

У ADC имеется широкий выбор коэффициентов усиления, что управляется полем GAIN регистра CH[n].CONFIG. Если CH[n].CONFIG.REFSEL=0, то входной диапазон ядра ADC номинально ±0.6V для дифференциального входа, и соответствующим образом должно быть масштабировано напряжение на входах.

Ошибка смещения ADC зависит от температуры. Если ADC работает в широком диапазоне температур, то рекомендуется запускать CALIBRATEOFFSET с регулярными интервалами времени. По завершению калибровки будет срабатывать событие CALIBRATEDONE.

Аналоговые входы и каналы. Можно сконфигурировать до 8 аналоговых входных каналов CH[n] (n = 0 .. 7). Как уже упоминалось выше, эти ножки фиксированы на корпусе чипа, и совместно используются для входов компараторов.

Любой из доступных каналов может быть разрешено для оцифровки ADC в режиме однократной выборки (one-shot mode). Если сконфигурировано больше одного канала CH[n], то ADC входит в режим сканирования (scan mode).

Аналоговый вход выбирается как положительный вход преобразователя, если установлен CH[n].PSELP, установка CH[n].PSELP также разрешает определенный канал.

Аналоговый вход выбирается как отрицательный вход преобразователя, если установлен CH[n].PSELN. Установка регистра CH[n].PSELN не дает никакого эффекта, кроме как если разрешен дифференциальный режим, см. описание поля MODE регистра CH[n].CONFIG.

Если установлено больше одного регистра CH[n].PSELP, устройство входит в режим сканирования каналов (scan mode). В этом режиме выбранные входы управляются регистрами CH[n].PSELP и CH[n].PSELN, где CH[n].PSELN используется только когда этот определенный сканируемый канал настроен как дифференциальный, см. описание поля MODE регистра CH[n].CONFIG.

Важное замечание: каналы, выбранные для COMP не могу использоваться одновременно для входов оцифровки ADC, но каналы, не выбранные для COMP, могут использоваться ADC.

Таблица 1. Допустимые варианты подключения CH[n] как аналоговых входов.

Вход канала Источник Возможность подключения
CH[n].PSELP AIN0 .. AIN7 Имеется (к любому входу)
VDD Имеется
CH[n].PSELN AIN0 .. AIN7 Имеется (к любому входу)
VDD Имеется

[Рабочие режимы ADC]

Конфигурации входов ADC поддерживают режимы однократного измерения (one-shot mode), повторяющихся измерений (continuous mode) и сканирования (scan mode). Режим сканирования и передискретизация не могут использоваться одновременно.

One-shot mode. Однократный режим конфигурируется путем разрешения только одного из доступных каналов, определяемого регистрами CH[n].PSELP, CH[n].PSELN и CH[n].CONFIG.

В задаче SAMPLE преобразователь ADC запускается для оцифровки входного напряжения. CH[n].CONFIG.TACQ управляет временем оцифровки (acquisition time, tACQ).

Событие DONE сигнализирует о том, что получен один результат преобразования (sample).

В однократном режиме событие RESULTDONE означает то же самое, что и DONE, если не используется передискретизация (oversampling). Имейте в виду, что оба этих события могут произойти до того, как реальное значение результата преобразования было передано в RAM с помощью EasyDMA. Для дополнительной информации см. далее описание EasyDMA.

Continuous mode. Непрерывный режим, когда запуск выборок автоматически повторяется, реализуется с помощью внутреннего таймера ADC, или запуском задачи SAMPLE одного из периферийных таймеров TIMERx с помощью PPI [6].

Следует позаботиться о том, чтобы частота дискретизации (sample rate) удовлетворяла следующему критерию, в зависимости от того, сколько имеется активных каналов ADC:

fSAMPLE < 1/[tACQ + tCONV]

Регистр SAMPLERATE может использоваться как локальный таймер вместо срабатывания с помощью индивидуальных задач SAMPLE. Когда SAMPLERATE.MODE установлен в Timers, достаточно вызвать срабатывание задачи SAMPLE только 1 раз, чтобы запустить SAADC, и вызвать срабатывание задачи STOP, чтобы остановить оцифровку. Поле SAMPLERATE.CC управляет частотой дискретизации (частотой следования выборок, sample rate).

Режим таймера SAMPLERATE не может комбинироваться с режимом сканирования (SCAN mode), и в этом режиме может быть разрешен только 1 канал.

Событие DONE сигнализирует о том, что была получена одна выборка (sample).

В этом режиме событие RESULTDONE имеет то же самое значение, что и DONE, когда не используется передискретизация. Имейте в виду, что оба этих события могут произойти до того, как реальное значение результата преобразования было передано в RAM с помощью EasyDMA.

Oversampling. Аккумулятор ADC может использоваться для усреднения шума на аналоговом входе. В общем, техника передискретизации (oversampling) улучшает параметр соотношения сигнал/шум (signal-to-noise ratio, SNR). Однако передискретизация не улучшает интегральную нелинейность (INL) или дифференциальную нелинейность (DNL).

Передискретизация и режим сканирования не должны комбинироваться, поскольку передискретизация при сканировании будет усреднять выборки разрешенных каналов.

Аккумулятор управляется в регистром OVERSAMPLE. Задача SAMPLE должна быть установлена в количество усредняемых выборок 2OVERSAMPLE, после набора этих выборок результат запишется в RAM. Этого можно достичь следующим образом:

• Конфигурированием фиксированной частоты выборок (sampling rate), используя локальный таймер или таймер общего назначения TIMERx и PPI, чтобы запустить задачу SAMPLE.
• Программным запуском SAMPLE на количество 2OVERSAMPLE раз.
• Разрешением режима BURST.

CH[n].CONFIG.BURST может быть разрешено, чтобы избежать необходимости программно устанавливать задачу SAMPLE в количестве 2OVERSAMPLE раз. При BURST = 1 преобразователь ADC будет оцифровывать вход 2OVERSAMPLE раз настолько быстро, насколько сможет (реальный тайминг: < (tACQ + tCONV) × 2OVERSAMPLE). Таким образом для пользователя это будет выглядеть просто как будто преобразование теперь занимает больше времени, но в остальном точно так же, как и в режиме one-shot. Режим сканирования может комбинироваться с установкой BURST=1, если burst разрешен на всех каналах.

Событие DONE сигнализирует о том, что была получена одна выборка. В этом режиме событие RESULTDONE говорит о том, что было произведено достаточное количество преобразований передискретизации, чтобы результат мог быть перемещен в RAM. Имейте в виду, что оба этих события могут произойти до того, как реальное значение результата преобразования было передано в RAM с помощью EasyDMA.

Scan mode. Считаются разрешенными каналы, у которых установлен CH[n].PSELP. Если разрешено больше одного канала CH[n], то ADC входит в режим сканирования каналов (scan mode). В этом режиме один запуск задачи SAMPLE запустит по одному преобразованию на каждый разрешенный каналl. Время, которое потребуется на оцифровку всех каналов, можно рассчитать по формуле (x это количество разрешенных каналов):

Total time < Sum(CH[x].tACQ+tCONV)

Событие DONE сигнализирует о том, что была получена одна выборка.

В этом режиме событие RESULTDONE означает то же самое, что и событие DONE, когда не используется передискретизация. Имейте в виду, что оба этих события могут произойти до того, как реальное значение результата преобразования было передано в RAM с помощью EasyDMA.

Рис. 2 показывает пример размещения результатов в Data RAM, с четным количеством RESULT.MAXCNT. В этом примере разрешены каналы 1, 2 и 5, другие каналы запрещены.

nRF52 ADC example RAM placement fig02

Рис. 2. Пример размещения результатов оцифровки каналов в ОЗУ (четное RESULT.MAXCNT), когда разрешены каналы 1, 2 и 5.

Рис. 3 показывает пример размещения результатов в Data RAM, с нечетным количеством RESULT.MAXCNT. В этом примере разрешены каналы 1, 2 и 5, другие каналы запрещены. Последнее 32-битное слово представляет только один 16-битный результат.

nRF52 ADC example RAM placement fig03

Рис. 3. Пример размещения результатов оцифровки каналов в ОЗУ (нечетное RESULT.MAXCNT), когда разрешены каналы 1, 2 и 5.

[EasyDMA]

После конфигурирования RESULT.PTR и RESULT.MAXCNT срабатыванием задачи START запускаются ресурсы ADC. ADC использует EasyDMA для сохранения результатов преобразования в RAM-буфере Result.

Буфер Result находится по адресу, указанному в регистре RESULT.PTR. Регистр RESULT.PTR снабжен двойной буферизацией, и может обновляться и быть подготовленным к следующей задаче START немедленно после генерации события STARTED. Размер буфера Result указывается в регистре RESULT.MAXCNT, и ADC будет генерировать событие END когда заполнит буфер Result, см. рис. 4. Результаты сохраняются в little-endian [7] порядке следования байт Data RAM. Каждая выборка перед сохранением в буфер Result получит знак с расширением до 16 бит.

ADC останавливается запуском задачи STOP. Задача STOP завершит осуществляющуюся оцифровку. ADC сгенерирует событие STOPPED, когда остановит оцифровку. Если ADC уже остановлено, когда запущена задача STOP, то событие STOPPED все равно сгенерируется.

nRF52 ADC lifetime fig04

Рис. 4. Алгоритм работы ADC.

Если RESULT.PTR не указывает в область Data RAM, то транзакция EasyDMA может привести к ошибке HardFault или повреждению содержимого RAM. Для дополнительной информации по регионам памяти см. [3].

EasyDMA завершит доступ к RAM, когда будут сгенерированы события END или STOPPED.

Регистр RESULT.AMOUNT может быть прочитан после события END или события STOPPED, чтобы увидеть, сколько результатов было передано в буфер Result в результате запуска задачи START.

В режиме сканирования размер буфера Result должен быть достаточным, чтобы сохранить как минимум по одному результату на каждый разрешенный канал. Чтобы это обеспечить, значение RESULT.MAXCNT должно быть задано RESULT.MAXCNT >= "количество разрешенных каналов". См. выше секцию "Scan mode" для дополнительной информации по режиму сканирования.

[Резисторный делитель]

В ADC есть внутренняя цепочка резисторов на положительном и отрицательном входе, см. рис. 5. Эта цепочка управляется регистрами CH[n].CONFIG.RESP и CH[n].CONFIG.RESN.

nRF52 ADC resistor ladder for positive input fig05

Рис. 5. Цепочка резисторов на положительном входе (цепочка на отрицательном входе эквивалентная, просто управляется она RESN, а не RESP).

[Опорное напряжение]

ADC может использовать 2 разных источника опорного напряжения, управляемых полем REFSEL в регистре CH[n].CONFIG:

• Внутренний источник опорного напряжения.
• VDD в качестве опорного напряжения.

Внутренний источник опорного напряжения дает ядру ADC оцифровывать входные уровни в диапазоне ±0.6V. Опорное напряжение VDD дает входной диапазон ±VDD/4. Может использоваться блок усиления (gain) для изменения эффективного входного диапазона (input range) измерений для ADC.

Input range = (±0.6V или ±VDD/4) / Gain

Например, если в качестве опорного напряжения выбрано VDD, настроен недифференциальный вход (отрицательный вход заземлен внутри чипа), и усиления установлено 1/4, то входной диапазон будет следующий:

Input range = (VDD/4)/(1/4) = VDD

С внутренним источником опорного напряжения, недифференциальным входом и усилением 1/6 входной диапазон получится следующий:

Input range = (0.6V)/(1/6) = 3.6 V

На входах AIN0 .. AIN7 нельзя превышать уровень VDD, или делать его ниже земли VSS.

[Время захвата уровня]

Чтобы сделать выборку входного напряжения, ADC подключает ко входу конденсатор. Это традиционная техника выборки-хранения, применяемая для захвата измеряемого сигнала.

nRF52 ADC simplified sample network fig06

Рис. 6. Упрощенная схема формирования выборки входного сигнала для ADC.

Как это работает, показано на рис. 6. Время оцифровки tACQ показывает, как долго подключен конденсатор, см. описание поля TACQ в регистре CH[n].CONFIG. Требуемое время оцифровки зависит от сопротивления источника сигнала (Rsource). Для источника сигнала с высоким внутренним сопротивлением время оцифровки должно быть увеличено, см. таблицу 2.

Таблица 2. Время оцифровки. Rsource это максимально допустимое источника сигнала для входной цепи ADC.

TACQ (мкс) Rsource (кОм)
3 10
5 40
10 100
15 200
20 400
40 800

[Мониторинг выхода уровня на входе за установленные пределы]

Канал может быть сконфигурирован на генерацию события по мониторингу уровня путем конфигурирования регистра пределов CH[n].LIMIT.

Если результат преобразования выше, чем было задано в верхнем пределе (high limit), либо ниже, чем было задано в нижнем пределе (low limit), то сработает соответствующее событие.

nRF52 ADC example limits monitoring channel n fig07

Рис. 7. Пример мониторинга пределов канала 'n'.

Обратите внимание, что когда устанавливаются пределы, CH[n].LIMIT.HIGH должен быть всегда больше или равен CH[n].LIMIT.LOW. Другими словами, событие может сработать только когда оцифрованный входной сигнал вышел за определенные пределы. Невозможно инициировать событие, когда входной сигнал находится вне заданного диапазона, путем перестановки верхнего и нижнего пределов.

Всегда осуществляется сравнение пределов, нет необходимости это специально разрешать. Если для канала сравнение не требуется, то программа просто должна игнорировать соответствующие события. В этой ситуации значение регистров предела не имеет значения, так что не важно, меньше ли значение CH[n].LIMIT.LOW, чем CH[n].LIMIT.HIGH, или нет.

[Регистры ADC]

Таблица 3. Экземпляр ADC.

Баз. адрес Периф. устройство Экз. Описание
0x40007000 SAADC SAADC Аналого-цифровой преобразователь

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

Регистр Смещ. Описание
TASKS_START 0x000 Запуск преобразования ADC и подготовка буфера результата в RAM.
TASKS_SAMPLE 0x004 Получает одну выборку ADC. Если разрешено сканирование, то оцифровываются все каналы.
TASKS_STOP 0x008 Остановка ADC, обрыв происходящего процесса преобразования.
TASKS_CALIBRATEOFFSET 0x00C Запуск автокалибровки смещения.
EVENTS_STARTED 0x100 Событие: ADC запустился.
EVENTS_END 0x104 Событие: ADC заполнил буфер результатом преобразования.
EVENTS_DONE 0x108 Событие: задача преобразования завершена. В зависимости от режима, может понадобиться несколько преобразований, чтобы конечный результат был помещен в RAM.
EVENTS_RESULTDONE 0x10C Событие: результат готов к перемещению в RAM.
EVENTS_CALIBRATEDONE 0x110 Событие: калибровка завершена.
EVENTS_STOPPED 0x114 Событие: ADC остановлено.
EVENTS_CH[0].LIMITH 0x118 Последний результат равен или больше CH[0].LIMIT.HIGH.
EVENTS_CH[0].LIMITL 0x11C Последний результат равен или меньше CH[0].LIMIT.LOW.
EVENTS_CH[1].LIMITH 0x120 Последний результат равен или больше CH[1].LIMIT.HIGH.
EVENTS_CH[1].LIMITL 0x124 Последний результат равен или меньше CH[1].LIMIT.LOW.
EVENTS_CH[2].LIMITH 0x128 Последний результат равен или больше CH[2].LIMIT.HIGH.
EVENTS_CH[2].LIMITL 0x12C Последний результат равен или меньше CH[2].LIMIT.LOW.
EVENTS_CH[3].LIMITH 0x130 Последний результат равен или больше CH[3].LIMIT.HIGH.
EVENTS_CH[3].LIMITL 0x134 Последний результат равен или меньше CH[3].LIMIT.LOW.
EVENTS_CH[4].LIMITH 0x138 Последний результат равен или больше CH[4].LIMIT.HIGH.
EVENTS_CH[4].LIMITL 0x13C Последний результат равен или меньше CH[4].LIMIT.LOW.
EVENTS_CH[5].LIMITH 0x140 Последний результат равен или больше CH[5].LIMIT.HIGH.
EVENTS_CH[5].LIMITL 0x144 Последний результат равен или меньше CH[5].LIMIT.LOW.
EVENTS_CH[6].LIMITH 0x148 Последний результат равен или больше CH[6].LIMIT.HIGH.
EVENTS_CH[6].LIMITL 0x14C Последний результат равен или меньше CH[6].LIMIT.LOW.
EVENTS_CH[7].LIMITH 0x150 Последний результат равен или больше CH[7].LIMIT.HIGH.
EVENTS_CH[7].LIMITL 0x154 Последний результат равен или меньше CH[7].LIMIT.LOW.
INTEN 0x300 Разрешение или запрет прерываний ADC.
INTENSET 0x304 Установка бит (разрешение) прерываний ADC.
INTENCLR 0x308 Сброс бит (запрет) прерываний.
STATUS 0x400 Состояние ADC.
ENABLE 0x500 Разрешение или запрет ADC.
CH[0].PSELP 0x510 Выбор положительного входа для канала 0.
CH[0].PSELN 0x514 Выбор отрицательного входа для канала 0.
CH[0].CONFIG 0x518 Конфигурация входа для канала 0.
CH[0].LIMIT 0x51C Установка верхнего и нижнего пределов контроля уровня (мониторинга событий) для канала 0.
CH[1].PSELP 0x520 Выбор положительного входа для канала 1.
CH[1].PSELN 0x524 Выбор отрицательного входа для канала 1.
CH[1].CONFIG 0x528 Конфигурация входа для канала 1.
CH[1].LIMIT 0x52C Установка верхнего и нижнего пределов контроля уровня (мониторинга событий) для канала 1.
CH[2].PSELP 0x530 Выбор положительного входа для канала 2.
CH[2].PSELN 0x534 Выбор отрицательного входа для канала 2.
CH[2].CONFIG 0x538 Конфигурация входа для канала 2.
CH[2].LIMIT 0x53C Установка верхнего и нижнего пределов контроля уровня (мониторинга событий) для канала 2.
CH[3].PSELP 0x540 Выбор положительного входа для канала 3.
CH[3].PSELN 0x544 Выбор отрицательного входа для канала 3.
CH[3].CONFIG 0x548 Конфигурация входа для канала 3.
CH[3].LIMIT 0x54C Установка верхнего и нижнего пределов контроля уровня (мониторинга событий) для канала 3.
CH[4].PSELP 0x550 Выбор положительного входа для канала 4.
CH[4].PSELN 0x554 Выбор отрицательного входа для канала 4.
CH[4].CONFIG 0x558 Конфигурация входа для канала 4.
CH[4].LIMIT 0x55C Установка верхнего и нижнего пределов контроля уровня (мониторинга событий) для канала 4.
CH[5].PSELP 0x560 Выбор положительного входа для канала 5.
CH[5].PSELN 0x564 Выбор отрицательного входа для канала 5.
CH[5].CONFIG 0x568 Конфигурация входа для канала 5.
CH[5].LIMIT 0x56C Установка верхнего и нижнего пределов контроля уровня (мониторинга событий) для канала 5.
CH[6].PSELP 0x570 Выбор положительного входа для канала 6.
CH[6].PSELN 0x574 Выбор отрицательного входа для канала 6.
CH[6].CONFIG 0x578 Конфигурация входа для канала 6.
CH[6].LIMIT 0x57C Установка верхнего и нижнего пределов контроля уровня (мониторинга событий) для канала 6.
CH[7].PSELP 0x580 Выбор положительного входа для канала 7.
CH[7].PSELN 0x584 Выбор отрицательного входа для канала 7.
CH[7].CONFIG 0x588 Конфигурация входа для канала 7.
CH[7].LIMIT 0x58C Установка верхнего и нижнего пределов контроля уровня (мониторинга событий) для канала 7.
RESOLUTION 0x5F0 Установка разрядности ADC.
OVERSAMPLE 0x5F4 Конфигурация передискретизации.
SAMPLERATE 0x5F8 Управление частотой выборок и режимом - однократная оцифровка или автоматически повторяющиеся оцифровки.
RESULT.PTR 0x62C Указатель на буфер для результата преобразования ADC.
RESULT.MAXCNT 0x630 Максимальное количество слов буфера для транзакции.
RESULT.AMOUNT 0x634 Количество слов в буфере, переданных с момента последнего START.

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

Биты регистра 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                     V U T S R Q P O N M L K J I H G F 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 STARTED Разрешение или запрет прерывания по событию STARTED. См. EVENTS_STARTED.
0: прерывание запрещено.
1: прерывание разрешено.
B RW END Разрешение или запрет прерывания по событию END. См. EVENTS_END.
0: прерывание запрещено.
1: прерывание разрешено.
C RW DONE Разрешение или запрет прерывания по событию DONE. См. EVENTS_DONE.
0: прерывание запрещено.
1: прерывание разрешено.
D RW RESULTDONE Разрешение или запрет прерывания по событию RESULTDONE. См. EVENTS_RESULT_DONE.
0: прерывание запрещено.
1: прерывание разрешено.
E RW CALIBRATEDONE Разрешение или запрет прерывания по событию CALIBRATEDONE. См. EVENTS_CALIBRATEDONE.
0: прерывание запрещено.
1: прерывание разрешено.
F RW STOPPED Разрешение или запрет прерывания по событию STOPPED. См. EVENTS_STOPPED.
0: прерывание запрещено.
1: прерывание разрешено.
G RW CH0LIMITH Разрешение или запрет прерывания по событию CH[0].LIMITH. См. EVENTS_CH[0].LIMITH.
0: прерывание запрещено.
1: прерывание разрешено.
H RW CH0LIMITL Разрешение или запрет прерывания по событию CH[0].LIMITL См. EVENTS_CH[0].LIMITL.
0: прерывание запрещено.
1: прерывание разрешено.
I RW CH1LIMITH Разрешение или запрет прерывания по событию CH[1].LIMITH. См. EVENTS_CH[1].LIMITH.
0: прерывание запрещено.
1: прерывание разрешено.
J RW CH1LIMITL Разрешение или запрет прерывания по событию CH[1].LIMITL См. EVENTS_CH[1].LIMITL.
0: прерывание запрещено.
1: прерывание разрешено.
K RW CH2LIMITH Разрешение или запрет прерывания по событию CH[2].LIMITH. См. EVENTS_CH[2].LIMITH.
0: прерывание запрещено.
1: прерывание разрешено.
L RW CH2LIMITL Разрешение или запрет прерывания по событию CH[2].LIMITL См. EVENTS_CH[2].LIMITL.
0: прерывание запрещено.
1: прерывание разрешено.
M RW CH3LIMITH Разрешение или запрет прерывания по событию CH[3].LIMITH. См. EVENTS_CH[3].LIMITH.
0: прерывание запрещено.
1: прерывание разрешено.
N RW CH3LIMITL Разрешение или запрет прерывания по событию CH[3].LIMITL См. EVENTS_CH[3].LIMITL.
0: прерывание запрещено.
1: прерывание разрешено.
O RW CH4LIMITH Разрешение или запрет прерывания по событию CH[4].LIMITH. См. EVENTS_CH[4].LIMITH.
0: прерывание запрещено.
1: прерывание разрешено.
P RW CH4LIMITL Разрешение или запрет прерывания по событию CH[4].LIMITL См. EVENTS_CH[4].LIMITL.
0: прерывание запрещено.
1: прерывание разрешено.
Q RW CH5LIMITH Разрешение или запрет прерывания по событию CH[5].LIMITH. См. EVENTS_CH[5].LIMITH.
0: прерывание запрещено.
1: прерывание разрешено.
R RW CH5LIMITL Разрешение или запрет прерывания по событию CH[5].LIMITL См. EVENTS_CH[5].LIMITL.
0: прерывание запрещено.
1: прерывание разрешено.
S RW CH6LIMITH Разрешение или запрет прерывания по событию CH[6].LIMITH. См. EVENTS_CH[6].LIMITH.
0: прерывание запрещено.
1: прерывание разрешено.
T RW CH6LIMITL Разрешение или запрет прерывания по событию CH[6].LIMITL См. EVENTS_CH[6].LIMITL.
0: прерывание запрещено.
1: прерывание разрешено.
U RW CH7LIMITH Разрешение или запрет прерывания по событию CH[7].LIMITH. См. EVENTS_CH[7].LIMITH.
0: прерывание запрещено.
1: прерывание разрешено.
V RW CH7LIMITL Разрешение или запрет прерывания по событию CH[7].LIMITL См. EVENTS_CH[7].LIMITL.
0: прерывание запрещено.
1: прерывание разрешено.

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

Биты регистра 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                     V U T S R Q P O N M L K J I H G F 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 STARTED Записанная 1 разрешает прерывание по событию STARTED. См. EVENTS_STARTED.
0: прерывание запрещено.
1: прерывание разрешено.
B RW END Записанная 1 разрешает прерывание по событию END. См. EVENTS_END.
0: прерывание запрещено.
1: прерывание разрешено.
C RW DONE Записанная 1 разрешает прерывание по событию DONE. См. EVENTS_DONE.
0: прерывание запрещено.
1: прерывание разрешено.
D RW RESULTDONE Записанная 1 разрешает прерывание по событию RESULTDONE. См. EVENTS_RESULT_DONE.
0: прерывание запрещено.
1: прерывание разрешено.
E RW CALIBRATEDONE Записанная 1 разрешает прерывание по событию CALIBRATEDONE. См. EVENTS_CALIBRATEDONE.
0: прерывание запрещено.
1: прерывание разрешено.
F RW STOPPED Записанная 1 разрешает прерывание по событию STOPPED. См. EVENTS_STOPPED.
0: прерывание запрещено.
1: прерывание разрешено.
G RW CH0LIMITH Записанная 1 разрешает прерывание по событию CH[0].LIMITH. См. EVENTS_CH[0].LIMITH.
0: прерывание запрещено.
1: прерывание разрешено.
H RW CH0LIMITL Записанная 1 разрешает прерывание по событию CH[0].LIMITL См. EVENTS_CH[0].LIMITL.
0: прерывание запрещено.
1: прерывание разрешено.
I RW CH1LIMITH Записанная 1 разрешает прерывание по событию CH[1].LIMITH. См. EVENTS_CH[1].LIMITH.
0: прерывание запрещено.
1: прерывание разрешено.
J RW CH1LIMITL Записанная 1 разрешает прерывание по событию CH[1].LIMITL См. EVENTS_CH[1].LIMITL.
0: прерывание запрещено.
1: прерывание разрешено.
K RW CH2LIMITH Записанная 1 разрешает прерывание по событию CH[2].LIMITH. См. EVENTS_CH[2].LIMITH.
0: прерывание запрещено.
1: прерывание разрешено.
L RW CH2LIMITL Записанная 1 разрешает прерывание по событию CH[2].LIMITL См. EVENTS_CH[2].LIMITL.
0: прерывание запрещено.
1: прерывание разрешено.
M RW CH3LIMITH Записанная 1 разрешает прерывание по событию CH[3].LIMITH. См. EVENTS_CH[3].LIMITH.
0: прерывание запрещено.
1: прерывание разрешено.
N RW CH3LIMITL Записанная 1 разрешает прерывание по событию CH[3].LIMITL См. EVENTS_CH[3].LIMITL.
0: прерывание запрещено.
1: прерывание разрешено.
O RW CH4LIMITH Записанная 1 разрешает прерывание по событию CH[4].LIMITH. См. EVENTS_CH[4].LIMITH.
0: прерывание запрещено.
1: прерывание разрешено.
P RW CH4LIMITL Записанная 1 разрешает прерывание по событию CH[4].LIMITL См. EVENTS_CH[4].LIMITL.
0: прерывание запрещено.
1: прерывание разрешено.
Q RW CH5LIMITH Записанная 1 разрешает прерывание по событию CH[5].LIMITH. См. EVENTS_CH[5].LIMITH.
0: прерывание запрещено.
1: прерывание разрешено.
R RW CH5LIMITL Записанная 1 разрешает прерывание по событию CH[5].LIMITL См. EVENTS_CH[5].LIMITL.
0: прерывание запрещено.
1: прерывание разрешено.
S RW CH6LIMITH Записанная 1 разрешает прерывание по событию CH[6].LIMITH. См. EVENTS_CH[6].LIMITH.
0: прерывание запрещено.
1: прерывание разрешено.
T RW CH6LIMITL Записанная 1 разрешает прерывание по событию CH[6].LIMITL См. EVENTS_CH[6].LIMITL.
0: прерывание запрещено.
1: прерывание разрешено.
U RW CH7LIMITH Записанная 1 разрешает прерывание по событию CH[7].LIMITH. См. EVENTS_CH[7].LIMITH.
0: прерывание запрещено.
1: прерывание разрешено.
V RW CH7LIMITL Записанная 1 разрешает прерывание по событию CH[7].LIMITL См. EVENTS_CH[7].LIMITL.
0: прерывание запрещено.
1: прерывание разрешено.

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

Биты регистра 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                     V U T S R Q P O N M L K J I H G F 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 STARTED Записанная 1 запрещает прерывание по событию STARTED. См. EVENTS_STARTED.
0: прерывание запрещено.
1: прерывание разрешено.
B RW END Записанная 1 запрещает прерывание по событию END. См. EVENTS_END.
0: прерывание запрещено.
1: прерывание разрешено.
C RW DONE Записанная 1 запрещает прерывание по событию DONE. См. EVENTS_DONE.
0: прерывание запрещено.
1: прерывание разрешено.
D RW RESULTDONE Записанная 1 запрещает прерывание по событию RESULTDONE. См. EVENTS_RESULT_DONE.
0: прерывание запрещено.
1: прерывание разрешено.
E RW CALIBRATEDONE Записанная 1 запрещает прерывание по событию CALIBRATEDONE. См. EVENTS_CALIBRATEDONE.
0: прерывание запрещено.
1: прерывание разрешено.
F RW STOPPED Записанная 1 запрещает прерывание по событию STOPPED. См. EVENTS_STOPPED.
0: прерывание запрещено.
1: прерывание разрешено.
G RW CH0LIMITH Записанная 1 запрещает прерывание по событию CH[0].LIMITH. См. EVENTS_CH[0].LIMITH.
0: прерывание запрещено.
1: прерывание разрешено.
H RW CH0LIMITL Записанная 1 запрещает прерывание по событию CH[0].LIMITL См. EVENTS_CH[0].LIMITL.
0: прерывание запрещено.
1: прерывание разрешено.
I RW CH1LIMITH Записанная 1 запрещает прерывание по событию CH[1].LIMITH. См. EVENTS_CH[1].LIMITH.
0: прерывание запрещено.
1: прерывание разрешено.
J RW CH1LIMITL Записанная 1 запрещает прерывание по событию CH[1].LIMITL См. EVENTS_CH[1].LIMITL.
0: прерывание запрещено.
1: прерывание разрешено.
K RW CH2LIMITH Записанная 1 запрещает прерывание по событию CH[2].LIMITH. См. EVENTS_CH[2].LIMITH.
0: прерывание запрещено.
1: прерывание разрешено.
L RW CH2LIMITL Записанная 1 запрещает прерывание по событию CH[2].LIMITL См. EVENTS_CH[2].LIMITL.
0: прерывание запрещено.
1: прерывание разрешено.
M RW CH3LIMITH Записанная 1 запрещает прерывание по событию CH[3].LIMITH. См. EVENTS_CH[3].LIMITH.
0: прерывание запрещено.
1: прерывание разрешено.
N RW CH3LIMITL Записанная 1 запрещает прерывание по событию CH[3].LIMITL См. EVENTS_CH[3].LIMITL.
0: прерывание запрещено.
1: прерывание разрешено.
O RW CH4LIMITH Записанная 1 запрещает прерывание по событию CH[4].LIMITH. См. EVENTS_CH[4].LIMITH.
0: прерывание запрещено.
1: прерывание разрешено.
P RW CH4LIMITL Записанная 1 запрещает прерывание по событию CH[4].LIMITL См. EVENTS_CH[4].LIMITL.
0: прерывание запрещено.
1: прерывание разрешено.
Q RW CH5LIMITH Записанная 1 запрещает прерывание по событию CH[5].LIMITH. См. EVENTS_CH[5].LIMITH.
0: прерывание запрещено.
1: прерывание разрешено.
R RW CH5LIMITL Записанная 1 запрещает прерывание по событию CH[5].LIMITL См. EVENTS_CH[5].LIMITL.
0: прерывание запрещено.
1: прерывание разрешено.
S RW CH6LIMITH Записанная 1 запрещает прерывание по событию CH[6].LIMITH. См. EVENTS_CH[6].LIMITH.
0: прерывание запрещено.
1: прерывание разрешено.
T RW CH6LIMITL Записанная 1 запрещает прерывание по событию CH[6].LIMITL См. EVENTS_CH[6].LIMITL.
0: прерывание запрещено.
1: прерывание разрешено.
U RW CH7LIMITH Записанная 1 запрещает прерывание по событию CH[7].LIMITH. См. EVENTS_CH[7].LIMITH.
0: прерывание запрещено.
1: прерывание разрешено.
V RW CH7LIMITL Записанная 1 запрещает прерывание по событию CH[7].LIMITL См. EVENTS_CH[7].LIMITL.
0: прерывание запрещено.
1: прерывание разрешено.

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

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

№ бита 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 STATUS Текущее состояние ADC.
0: ADC готово к работе, преобразование в настоящий момент не осуществляется.
1: ADC занято выполняющимся преобразованием.

Смещение адреса: 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
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 Разрешение или запрет работы ADC.
0: ADC запрещено.
1: ADC разрешено.
Когда ADC разрешен, он будет захватывать доступ к аналоговым выводам входов, заданных в регистрах CH[n].PSELP и CH[n].PSELN.

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

Биты регистра CH[0].PSELP:

№ бита 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 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 PSELP Выбор положительного входного вывода канала ADC.
0: NC, Not Connected (вывод входа не подключен).
1: AnalogInput0, выбран вход AIN0.
2: AnalogInput1, выбран вход AIN1.
3: AnalogInput2, выбран вход AIN2.
4: AnalogInput3, выбран вход AIN3.
5: AnalogInput4, выбран вход AIN4.
6: AnalogInput5, выбран вход AIN5.
7: AnalogInput6, выбран вход AIN6.
8: AnalogInput7: выбран вход AIN7.
9: VDD, выбрано изменение напряжения питания.

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

Биты регистра CH[0].PSELN:

№ бита 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 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 PSELN Выбор отрицательного входного вывода канала ADC, что разрешает дифференциальный режим работы входов ADC.
0: NC, Not Connected (вывод входа не подключен).
1: AnalogInput0, выбран вход AIN0.
2: AnalogInput1, выбран вход AIN1.
3: AnalogInput2, выбран вход AIN2.
4: AnalogInput3, выбран вход AIN3.
5: AnalogInput4, выбран вход AIN4.
6: AnalogInput5, выбран вход AIN5.
7: AnalogInput6, выбран вход AIN6.
8: AnalogInput7: выбран вход AIN7.
9: VDD, выбрано изменение напряжения питания.

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

Биты регистра CH[0].CONFIG:

№ бита 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               G       F   E E E       D   C C C     B B     A A
Reset 0x00020000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

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

Id RW Поле Описание
A RW RESP Управление резисторным делителем положительного входа ADC.
0, Bypass: резисторный делитель выключен.
1, Pulldown: подтяжка к GND.
2, Pullup: подтяжка к VDD.
3, VDD1_2: установка на входе уровня VDD/2.
B RW RESN Управление резисторным делителем отрицательного входа ADC.
0, Bypass: резисторный делитель выключен.
1, Pulldown: подтяжка к GND.
2, Pullup: подтяжка к VDD.
3, VDD1_2: установка на входе уровня VDD/2.
C RW GAIN Управление коэффициентом передачи (усилением) по входу.
0, Gain1_6: 1/6 (ослабление в 6 раз).
1, Gain1_5: 1/5 (ослабление в 5 раз).
2, Gain1_4: 1/4 (ослабление в 4 раза).
3, Gain1_3: 1/3 (ослабление в 3 раза).
4, Gain1_2: 1/2 (ослабление в 2 раза).
5, Gain1: 1 (без изменения).
6, Gain2: 2 (усиление в 2 раза).
7, Gain4: 4 (усиление в 4 раза).
D RW REFSEL Управление опорным напряжением ADC.
0, Internal: внутреннее опорное напряжение 0.6V.
1, VDD1_4: в качестве опорного напряжения используется VDD/4.
E RW TACQ Время захвата по входу, в течение которого схема выборки/хранения ADC накапливает уровень входного сигнала.
0, 3us: 3 мкс.
1, 5us: 5 мкс.
2, 10us: 10 мкс.
3, 15us: 15 мкс.
4, 20us: 20 мкс.
5, 40us: 40 мкс.
F RW MODE Разрешение дифференциального режима ADC.
0, SE: Single-Ended. Дифференциальный режим запрещен, работает положительный вход, значение PSELN игнорируется, отрицательный вход ADC замкнут внутри чипа на GND.
1, Diff: дифференциальный вход.
G RW BURST Разрешение пакетного режима ADC.
0: режим burst запрещен (нормальный режим работы).
1: режим burst разрешен. ADC берет 2SAMPLE выборок так быстро, как сможет, и посылает усредненное значение в Data RAM.

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

Биты регистра CH[0].LIMIT:

№ бита 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 B B B B B B B B B B A A A A A A A A A A A A A A A A
Reset 0x7FFF8000 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

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

Id RW Поле Описание
A RW LOW Нижний предел уровня, число от -32768 до 32767.
B RW HIGH Верхний предел уровня, число от -32768 до 32767.

...

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

Биты регистра CH[7].PSELP:

№ бита 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 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 PSELP Выбор положительного входного вывода канала ADC.
0: NC, Not Connected (вывод входа не подключен).
1: AnalogInput0, выбран вход AIN0.
2: AnalogInput1, выбран вход AIN1.
3: AnalogInput2, выбран вход AIN2.
4: AnalogInput3, выбран вход AIN3.
5: AnalogInput4, выбран вход AIN4.
6: AnalogInput5, выбран вход AIN5.
7: AnalogInput6, выбран вход AIN6.
8: AnalogInput7: выбран вход AIN7.
9: VDD, выбрано изменение напряжения питания.

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

Биты регистра CH[7].PSELN:

№ бита 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 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 PSELP Выбор отрицательного входного вывода канала ADC, что разрешает дифференциальный режим работы входов ADC.
0: NC, Not Connected (вывод входа не подключен).
1: AnalogInput0, выбран вход AIN0.
2: AnalogInput1, выбран вход AIN1.
3: AnalogInput2, выбран вход AIN2.
4: AnalogInput3, выбран вход AIN3.
5: AnalogInput4, выбран вход AIN4.
6: AnalogInput5, выбран вход AIN5.
7: AnalogInput6, выбран вход AIN6.
8: AnalogInput7: выбран вход AIN7.
9: VDD, выбрано изменение напряжения питания.

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

Биты регистра CH[7].CONFIG:

№ бита 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               G       F   E E E       D   C C C     B B     A A
Reset 0x00020000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

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

Id RW Поле Описание
A RW RESP Управление резисторным делителем положительного входа ADC.
0, Bypass: резисторный делитель выключен.
1, Pulldown: подтяжка к GND.
2, Pullup: подтяжка к VDD.
3, VDD1_2: установка на входе уровня VDD/2.
B RW RESN Управление резисторным делителем отрицательного входа ADC.
0, Bypass: резисторный делитель выключен.
1, Pulldown: подтяжка к GND.
2, Pullup: подтяжка к VDD.
3, VDD1_2: установка на входе уровня VDD/2.
C RW GAIN Управление коэффициентом передачи (усилением) по входу.
0, Gain1_6: 1/6 (ослабление в 6 раз).
1, Gain1_5: 1/5 (ослабление в 5 раз).
2, Gain1_4: 1/4 (ослабление в 4 раза).
3, Gain1_3: 1/3 (ослабление в 3 раза).
4, Gain1_2: 1/2 (ослабление в 2 раза).
5, Gain1: 1 (без изменения).
6, Gain2: 2 (усиление в 2 раза).
7, Gain4: 4 (усиление в 4 раза).
D RW REFSEL Управление опорным напряжением ADC.
0, Internal: внутреннее опорное напряжение 0.6V.
1, VDD1_4: в качестве опорного напряжения используется VDD/4.
E RW TACQ Время захвата по входу, в течение которого схема выборки/хранения ADC накапливает уровень входного сигнала.
0, 3us: 3 мкс.
1, 5us: 5 мкс.
2, 10us: 10 мкс.
3, 15us: 15 мкс.
4, 20us: 20 мкс.
5, 40us: 40 мкс.
F RW MODE Разрешение дифференциального режима ADC.
0, SE: Single-Ended. Дифференциальный режим запрещен, работает положительный вход, значение PSELN игнорируется, отрицательный вход ADC замкнут внутри чипа на GND.
1, Diff: дифференциальный вход.
G RW BURST Разрешение пакетного режима ADC.
0: режим burst запрещен (нормальный режим работы).
1: режим burst разрешен. ADC берет 2SAMPLE выборок так быстро, как сможет, и посылает усредненное значение в Data RAM.

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

Биты регистра CH[7].LIMIT:

№ бита 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 B B B B B B B B B B A A A A A A A A A A A A A A A A
Reset 0x7FFF8000 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

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

Id RW Поле Описание
A RW LOW Нижний предел уровня, число от -32768 до 32767.
B RW HIGH Верхний предел уровня, число от -32768 до 32767.

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

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

№ бита 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 0x00000001 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 1

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

Id RW Поле Описание
A RW VAL Установка разрешающей способности (разрядности) ADC.
0, 8bit: 8 разрядов.
1, 10bit: 10 разрядов.
2, 12bit: 12 разрядов.
3, 14bit: 14 разрядов.

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

OVERSAMPLE не должен комбинироваться со SCAN. RESOLUTION применяется перед усреднением, поэтому для высокого OVERSAMPLE должна быть выбрана повышенное RESOLUTION.

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

№ бита 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 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 OVERSAMPLE Управление передискретизацией ADC.
0, Bypass: без передискретизации.
1, Over2x: передискретизация 2x.
2, Over4x: передискретизация 4x.
3, Over8x: передискретизация 8x.
4, Over16x: передискретизация 16x.
5, Over32x: передискретизация 32x.
6, Over64x: передискретизация 64x.
7, Over128x: передискретизация 128x.
8, Over256x: передискретизация 256x.

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

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

№ бита 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 A A A 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 CC Значение захвата и сравнения. Частота выборок 16 МГц/CC, диапазон значений от 80 до 2047.
B RW MODE Выбор режима управления частотой выборок.
0, Task: частота выборок управляется задачей SAMPLE.
1, Timers: частота выборок управляется от локального таймера (CC используется для управления частотой выборок).

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

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

№ бита 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 A A A A A A A A A A A A A A A A A A A A A A A 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 PTR Указатель на данные.

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

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

№ бита 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 A A A A A A 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 MAXCNT Максимальное количество слов в буфере для передачи.

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

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

№ бита 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 A A A A A A 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 R AMOUNT Количество слов в буфере с момента последнего START. Этот регистр может быть прочитан после события END или STOPPED.

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

Символ Описание min Typ MAX Ед.
DNL Дифференциальная нелинейность, разрешающая способность 10 бит. -0.95 < 1   LSB
INL Интегральная нелинейность, разрешающая способность 10 бит.   1  
VOS Дифференциальная ошибка смещения (калиброванная), разрешающая способность 10 бит(1).   ±2  
CEG Температурный коэффициент ошибки усиления (Error Gain).   0.02   %/°C
fSAMPLE Максимальная частота дискретизации (sample rate).     200 кГц
tACQ,10k Время захвата по входу (конфигурируемое), сопротивление источника сигнала ≤ 10 кОм.   3   мкс
tACQ,40k Время захвата по входу (конфигурируемое), сопротивление источника сигнала ≤ 40 кОм.   5  
tACQ,100k Время захвата по входу (конфигурируемое), сопротивление источника сигнала ≤ 100 кОм.   10  
tACQ,200k Время захвата по входу (конфигурируемое), сопротивление источника сигнала ≤ 200 кОм.   15  
tACQ,400k Время захвата по входу (конфигурируемое), сопротивление источника сигнала ≤ 400 кОм.   20  
tACQ,800k Время захвата по входу (конфигурируемое), сопротивление источника сигнала ≤ 800 кОм.   40  
tCONV Время преобразования.   < 2  
IADC,CONV Потребляемый ток во время захвата входного значения (tACQ) и преобразования (tCONV).   700   мкА
IADC,IDLE Потребляемый ток в режиме ожидания, когда не осуществляется выборка сигнала, исключая источники тактирования и базовые токи регулятора(2).   < 5  
EG1/6 Ошибка(3) для Gain = 1/6. -3   3 %
EG1/4 Ошибка(3) для Gain = 1/4. -3   3
EG/2 Ошибка(3) для Gain = 1/2. -3   4
EG1 Ошибка(3) для Gain = 1/6. -3   4
CSAMPLE Входная емкость схемы выборки/хранения при максимальном усилении(4).   2.5   пФ
RINPUT Входное сопротивление.   > 1   МОм
ENOB Эффективное количество бит(5).   9   бит
SNDR Пиковое соотношение уровня сигнала к уровню шума и искажений(5).   56   dB
SFDR Динамический диапазон, свободный от помех(5).   70   dBc
RLADDER Сопротивление входного делителя напряжения.   160   кОм

Примечания:

(1) Цифровой выходной код при 0V на дифференциальном входе.
(2) Когда tACQ 10 мкс или больше, и если активен DC/DC, то будет разрешено работать в режиме обновления (refresh mode), и если никаких других ресурсов не требуется, то будет использоваться высококачественный источник питания 1V3. Если tACQ меньше 10 мкс, и активен DC/DC, то режим обновления не разрешается, и будет сохраняться нормальный режим от момента запуска задачи START до события STOPPED. Таким образом в зависимости от tACQ и других требуемых ресурсов необходимо учитывать подходящий базовый ток.
(3) Не включает температурный дрейф.
(4) Максимальное усиление соответствует самой большой емкости.
(5) Дифференциальный режим, 12 бит разрешающая способность, усиление 1, время захвата по входу 3 мкс, кварц HFCLK, частота выборок 200 ksps.

nRF52 ADC one channel input model fig08

Рис. 8. Модель входа SAADC (один канал).

Вычисление среднего тока SAADC для конкретного приложения основано на периоде выборки, времени преобразования tCONV и времени выборки tACQ, и токов преобразования и ожидания (IADC,CONV и IADC,IDLE). Например, частота выборок 4 кГц дает период выборки 250 мкс. Тогда среднее потребление тока должно быть:

IAVERAGE = (tCONV + tACQ) / 250 * IADC,CONV + ((250 - (tCONV + tACQ)) / 250) * IADC,IDLE

nRF52 ADC INL vs output code fig09

Рис. 9. Интегральная нелинейность (INL) в зависимости от выходного кода.

nRF52 ADC DNL vs output code fig10

Рис. 10. Динамическая нелинейность (INL) в зависимости от выходного кода.

nRF52 ADC FFT2800Hz sine at 200 ksps fig11

Рис. 11. Быстрое преобразование Фурье (FFT) синусоидального сигнала 2.8 кГц с частотой выборок 200 ksps.

[Факторы, влияющие на производительность]

На параметры ADC (качество работы, или производительность) влияют джиттер тактов (от этого зависит точность тайминга выборок) и шумы схемы.

Джиттер может быть между задачами START, или от меняющегося интервала от задачи START до захвата уровня на входе. Точность таймера START и времени запуска регуляторов и источников опорных напряжений вносят свой вклад на изменение выходных значений ADC. Источниками шумов схемы могут быть активность CPU и регулятор DC/DC. Самые лучшие параметры ADC получаются при тайминге START на основе модуля TIMER, источнике тактов HFXO, и режиме постоянной задержки (Constant Latency mode).

[Ссылки]

1. SAADC Successive approximation analog-to-digital converter nRF52832 site:nordicsemi.com.
2. nRFxx: аббревиатуры и термины.
3. Memory nRF52832 site:nordicsemi.com.
4Улучшение оцифровки с помощью передискретизации и усреднения.
5. nRF52832: корпуса и цоколевка выводов.
6nRF5x PPI: Programmable Peripheral Interconnect.
7Порядок следования байт (endianness).

 

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


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

Top of Page