Persönlich bin ich kein großer Fan von Faustregeln, aber es gibt einige Regeln, die nur außergewöhnlich genau sind und für die selbst ich eine Ausnahme mache.
Eine dieser Regeln lautet wie folgt:
Mikrocontroller-ADC-Peripheriegeräte sind immer schrecklich.
Immer. Nicht die Art von Schrecklichkeit, die Sie nur herabsetzen. Die Art von schrecklich, die Sie in der fetalen Position in der Dusche weinen lässt.
Ich scherze, aber nur leicht. Um Ihre Frage zu beantworten: Ja, der ADC ist eigentlich nur so schlecht, und ja, Sie sollten ihn akzeptieren. Beachten Sie den großen Haftungsausschluss "Betriebsbedingungen gelten". im Datenblatt.
Sie müssen sich daran erinnern, dass das Datenblatt für bestimmte Teile (wie MCUs) auch Marketingmaterial ist und MCUs im Allgemeinen in Bezug auf Peripheriegeräte oder Stromverbrauch (oder beides) miteinander konkurrieren. Zahlen für Dinge wie ADCs sind also oft technischRichtig, solange Sie den ADC unter denselben lächerlichen und unpraktischen Umständen verwenden, haben sie die Messung für das Datenblatt vorgenommen. Ein Favorit, den ich oft sehe, ist das Messen des ENOB mit allen anderen Peripheriegeräten sowie des eigentlichen Prozessorkerns, der im Tiefschlaf vollständig ausgeschaltet ist. Ein anderer ist die Verwendung einer signifikanten Software-Nachbearbeitung und ähnlicher Techniken wie Oversampling, um die Messung zu erhalten. Ich glaube nicht, dass ich jemals ein MCU-Datenblatt gesehen habe, in dem der ADC nicht in Bezug auf "Dies ist das Beste, was Sie jemals erreichen werden, angegeben ist, und wir können Ihnen vielleicht sogar sagen, wie wir es geschafft haben" statt "Dies ist die Spezifikation, bevor Sie versuchen, das Signal in der Software zu bereinigen."
Und um ganz klar zu sein, es hört sich so an, als hätte dieser Teil einen ziemlich guten ADC, zumindest im Vergleich zu allen anderen schrecklichen MCU-ADCs. 8,5 Bit? Solche Opulenz! So bürgerlich! Die meiste Zeit werden Sie bekommen vielleicht 6 Bits von einem 10 - Bit - ADC in einer MCU. Denken Sie daran, wenn sie 12-Bit-Auflösung sagen, bedeutet dies, dass Sie irgendwo 12 Bits aus einem Register lesen können. Es gibt keine Implikation, dass es sich nicht um 12 Bit nutzloses Rauschen handelt. Das einzige Versprechen ist, dass es 12 Bits von etwas geben wird .
An diesem Punkt könnten Sie ein wenig skeptisch sein, dass diese analogen Peripheriegeräte ausnahmslos so schrecklich sind, oder sich zumindest fragen, warum einige Chiphersteller nicht einfach eine MCU mit einem halbwegs anständigen analogen Frontend herausbringen.
Nun, sie können nicht. Es spielt keine Rolle, wie gut die Referenz wirklich ist, es ist kein Stabilitätsproblem. Es ist Lärm. Und Physik.
Es ist einfach physikalisch unmöglich, einen ADC mit hoher Leistung (oder wirklich nur mittelmäßiger Leistung) auf demselben Siliziumchip wie eine MCU zu erstellen. Und es braucht nur eine Gotchya, um die analoge Leistung zu verbessern. In diesem Fall gibt es nicht eine Gotchya, sondern mehrere.
Erstens wird nur eine CMOS-Transistorumschaltung alle Arten von Harmonischen und Rauschen direkt in alles abladen und beim Umschalten in alles eingekoppelt (Sie haben es erraten). Wir neigen dazu , von CMOS zu denken , als Low - Power zu sein (und es ist), aber es lohnt sich wenn man bedenkt , dass die Power - CMOS tut Gebrauch ist effektiv Null - außer , wenn ein Transistor Zustand ändert. Und sie ändern ihren Zustand sehr schnell in der Größenordnung von zehn bis Hunderten von Pikosekunden. Wenn Sie ein Dutzend Milliampere nehmen, die von etwas verbraucht werden, das im Wesentlichen keine statische Energie verbraucht, und all dieser Strom vollständig in intensive 100-ps-Stromspitzen von buchstäblich Millionen kleiner Bastarde umgewandelt wirdSchalter, Wechsel insgesamt ... nun, das sollte die Dinge ein wenig umgestalten. Diese wenigen Milliampere sind viel finsterer als sie scheinen, zumindest für analoge Sachen. Geringer Stromverbrauch ≠ geringes Rauschen. CMOS ist stromsparend, da zum Schalten nur Strom benötigt wird. Aber es schaltet härter als ein Dubstep-Bass-Drop.
Diese Spitzen müssen alle durch das Substrat, das Substrat, das der ADC teilt, reißen und resistiv genug sein, um einen lokalisierten Erdungssprung im Substrat zu verursachen, der für digitale Schaltungen bedeutungslos, für analoge Schaltungen jedoch sehr problematisch ist.
Und daran führt wirklich kein Weg vorbei. Das ist nur ein Problem. Das andere ist, dass es physikalisch unmöglich ist, ein analoges Hochleistungslayout zu erstellen, das mit der MCU koexistieren kann, die diese Pins auch als GPIO verwenden muss, und andere Überlegungen, die die Chance eines guten analogen Abschnitts tödlich stören Layout.
Jetzt gibt es einige spezialisierte MCUs mit etwas verbesserten ADCs, die dies erreichen, indem sie tatsächlich zwei vollständig getrennte Siliziumchips in einem Gehäuse haben, die durch Bonddrähte verbunden sind, wodurch eine Substratisolation erzielt wird. Sie werden jedoch für diese Funktion bezahlen, und die Ergebnisse werden aufgrund der Nähe immer noch schlechter sein als bei einem dedizierten ADC.
Oh, und ich habe noch nicht einmal angesprochen, wie dies alles davon ausgeht, dass Sie ein einwandfreies externes Layout und eine Erdungs- und Entkopplungssituation in Bezug auf Ihren analogen und digitalen Bereich haben. Das allein ist nicht trivial, fragen Sie einfach Henry Ott .
Zusammenfassend befürchte ich, dass der ADC auf Ihrem Chip wirklich so schrecklich ist. Genau wie jeder andere MCU ADC. Es tut uns leid. Entweder es ist gut genug - und für viele , viele Anwendungen (unterstützt von einigen ziemlich clevere Software Quelle ry - pun) - es ist. Es ist erstaunlich, was man trotz der schlechten analogen Leistung wirklich erreichen kann, solange man schlau ist. Aber klug kann dich nur so weit tragen. Wenn Sie eine kalte, harte und effektive Anzahl von Bits wünschen, müssen Sie wirklich nur in die Kugel beißen und einen dedizierten ADC zusammen mit einem sorgfältigen Layout und Entkopplung der Leiterplatte verwenden oder ein spezielleres Teil (wie Multi-Die-Pakete) verwenden.