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) несколько каналов могут оцифроваться в настроенной последовательности. Для повышения разрядности выборок каналов и увеличения соотношения сигнал/шум также может применяться техника передискретизации.
Рис. 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, другие каналы запрещены.
Рис. 2. Пример размещения результатов оцифровки каналов в ОЗУ (четное RESULT.MAXCNT), когда разрешены каналы 1, 2 и 5.
Рис. 3 показывает пример размещения результатов в Data RAM, с нечетным количеством RESULT.MAXCNT. В этом примере разрешены каналы 1, 2 и 5, другие каналы запрещены. Последнее 32-битное слово представляет только один 16-битный результат.
Рис. 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 все равно сгенерируется.
Рис. 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.
Рис. 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 подключает ко входу конденсатор. Это традиционная техника выборки-хранения, применяемая для захвата измеряемого сигнала.
Рис. 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), то сработает соответствующее событие.
Рис. 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.
Смещение адреса: 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: прерывание разрешено.
Разрешение или запрет работы ADC. 0: ADC запрещено. 1: ADC разрешено. Когда ADC разрешен, он будет захватывать доступ к аналоговым выводам входов, заданных в регистрах CH[n].PSELP и CH[n].PSELN.
Выбор положительного входного вывода канала 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, выбрано измерение напряжения питания.
Выбор отрицательного входного вывода канала 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, выбрано измерение напряжения питания.
Управление резисторным делителем положительного входа 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.
Выбор положительного входного вывода канала 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, выбрано измерение напряжения питания.
Выбор отрицательного входного вывода канала 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, выбрано измерение напряжения питания.
Управление резисторным делителем положительного входа 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.
OVERSAMPLE не должен комбинироваться со SCAN. RESOLUTION применяется перед усреднением, поэтому для высокого OVERSAMPLE должна быть выбрана повышенное RESOLUTION.
Значение захвата и сравнения. Частота выборок 16 МГц/CC, диапазон значений от 80 до 2047.
B
RW
MODE
Выбор режима управления частотой выборок. 0, Task: частота выборок управляется задачей SAMPLE. 1, Timers: частота выборок управляется от локального таймера (CC используется для управления частотой выборок).
Время захвата по входу (конфигурируемое), сопротивление источника сигнала ≤ 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.
Рис. 8. Модель входа SAADC (один канал).
Вычисление среднего тока SAADC для конкретного приложения основано на периоде выборки, времени преобразования tCONV и времени выборки tACQ, и токов преобразования и ожидания (IADC,CONV и IADC,IDLE). Например, частота выборок 4 кГц дает период выборки 250 мкс. Тогда среднее потребление тока должно быть:
На параметры ADC (качество работы, или производительность) влияют джиттер тактов (от этого зависит точность тайминга выборок) и шумы схемы.
Джиттер может быть между задачами START, или от меняющегося интервала от задачи START до захвата уровня на входе. Точность таймера START и времени запуска регуляторов и источников опорных напряжений вносят свой вклад в изменение выходных значений ADC. Источниками шумов схемы могут быть активность CPU и регулятор DC/DC. Самые лучшие параметры ADC получаются при тайминге START на основе модуля TIMER, источнике тактов HFXO, и режиме постоянной задержки (Constant Latency mode).