Лично я не очень большой поклонник эмпирических правил, но есть несколько правил, которые исключительно точны, из которых даже я делаю исключение.
Одно из этих правил следующее:
Периферийные устройства микроконтроллера ADC всегда ужасны.
Всегда. Не тот ужасный, которого ты просто умаляешь. Вид ужасного, который заставляет вас плакать в позе плода в душе.
Я ребенок, но только немного. Чтобы ответить на ваш вопрос, да, АЦП на самом деле просто так плохо, и да, вы должны принять это. Обратите внимание на большой отказ от ответственности с указанием «Условия применения применяются». в таблице.
Следует помнить, что для определенных частей (например, MCU) таблица данных также является маркетинговым материалом, и MCU обычно конкурируют по периферии или потреблению энергии (или обоим). Так что цифры для таких вещей, как АЦП, часто будут техническиПравильно, если вы используете АЦП при тех же нелепых и непрактичных обстоятельствах, они измеряли данные. Фаворитом, который я часто вижу, является измерение ENOB со всеми остальными периферийными устройствами, а также фактическое ядро процессора, полностью отключенное в некотором глубоком сне. Другой способ заключается в использовании значительной постобработки программного обеспечения и подобных методов, таких как передискретизация, для получения измерений. Я не думаю, что когда-либо видел таблицу данных MCU, в которой АЦП не определялся с точки зрения «это лучшее, что вы когда-либо сможете достичь, и мы можем или не можем даже сказать вам, как нам это удалось», а не «Это спецификация, прежде чем пытаться очистить сигнал в программном обеспечении».
И, чтобы было ясно, похоже, что эта часть имеет довольно хороший АЦП, по крайней мере, по сравнению со всеми другими ужасными АЦП MCU. 8,5 бит? Такое богатство! Так буржуазно! Большую часть времени вы получите , может быть , 6 битов из 10 разрядного АЦП в качестве MCU. Помните, когда они говорят о 12-битном разрешении, они означают, что есть 12 бит, которые вы можете прочитать из какого-то регистра. Не подразумевается, что они не будут 12 битами бесполезного шума. Единственное обещание, что будет 12 бит чего-то .
Теперь, в этот момент, вы можете немного скептически относиться к тому, что эти аналоговые периферийные устройства неизменно будут такими ужасными, или, по крайней мере, удивляться, почему какая-то компания по производству микросхем просто не выпускает MCU с наполовину достойным аналоговым интерфейсом.
Ну, они не могут. Неважно, насколько хороша ссылка на самом деле, это не проблема стабильности. Это шум. И физика.
Просто физически невозможно создать высокопроизводительный (или даже просто посредственный) АЦП на том же кремниевом кристалле, что и на MCU. И для того, чтобы испортить аналоговую производительность, требуется всего лишь один удар. В этом случае есть не один гоччя, а несколько.
Во-первых, только одно переключение CMOS-транзистора будет сбрасывать все виды гармоник и шума непосредственно, ну, во все, и будет объединяться (как вы уже догадались) во всем, когда оно переключается. Мы склонны думать о КМОП как о малой мощности (и она есть), но стоит иметь в виду, что мощность , используемая КМОП , фактически равна нулю - за исключением случаев, когда транзистор меняет состояние. И они очень быстро меняют состояние, порядка десятков или сотен пикосекунд. Когда вы берете дюжину миллиампер, потребляемых чем-то, что по существу не потребляет статической энергии, и весь этот ток превращается полностью в интенсивный, пиковый ток в 100ps буквально миллионов маленьких крошечных ублюдковпереключатели, переключение в совокупности ... ну, это должно немного переосмыслить вещи. Эти несколько миллиампер гораздо более зловещие, чем кажутся, по крайней мере, для аналоговых устройств. Низкая мощность, низкий уровень шума. CMOS имеет низкое энергопотребление, потому что для переключения требуется только питание. Но он переключается сильнее, чем дабстеп-бас.
Все эти пики должны прорвать субстрат, субстрат, который разделяет АЦП, и достаточно резистивны, чтобы вызвать локальный отскок земли в субстрате, который не имеет смысла для цифровых цепей, но очень неприятен для любой аналоговой схемы.
И действительно нет никакого способа обойти это. Это только одна проблема. Другое заключается в том, что на самом деле физически невозможно создать высокопроизводительную аналоговую схему, которая может сосуществовать с микроконтроллером, который также должен будет использовать эти контакты в качестве GPIO, и другие соображения, которые фатально нарушают любые шансы на хороший аналоговый участок. раскладка.
Теперь есть несколько специализированных микроконтроллеров с несколько улучшенными АЦП, которые достигают этого, фактически имея две совершенно отдельные кремниевые матрицы в одном корпусе, соединенные связующими проводами, что обеспечивает изоляцию подложки. Вы будете платить за эту функцию, и результаты все равно будут хуже, чем у выделенного АЦП из-за явной близости.
О, и я даже не коснулся того, как все это предполагает, что у вас есть безупречная внешняя компоновка и ситуация заземления и развязки во всех отношениях, касающихся вашего аналогового и цифрового раздела. Это само по себе нетривиально, просто спросите Генри Отта .
Итак, в заключение, я боюсь, что АЦП на вашем чипе действительно просто ужасен. Точно так же, как любой другой АЦП MCU. Сожалею. Либо это достаточно хорошо - и для многих других приложений (при поддержке довольно умного программного источника ry - pun!) - так и есть. Удивительно, что действительно можно сделать даже при плохой аналоговой производительности, пока вы умны. Но умный может нести вас так далеко. если вам нужно холодное, жесткое эффективное число битов, вам просто нужно прикусить пулю и использовать выделенный АЦП вместе с тщательной компоновкой и развязкой печатной платы, или использовать более специализированную деталь (например, пакеты с несколькими матрицами).