Pessoalmente, eu não sou muito fã de regras práticas, mas existem algumas regras que são excepcionalmente precisas que até eu faço uma exceção.
Uma dessas regras é a seguinte:
Os periféricos ADC do microcontrolador são sempre terríveis.
Sempre. Não é o tipo de terrível que você apenas desdém. O tipo de terrível que o deixa chorando na posição fetal no chuveiro.
Eu brinco, mas apenas um pouco. Para responder sua pergunta, sim, o ADC é realmente tão ruim assim, e sim, você deve aceitá-lo. Observe o grande aviso de isenção de responsabilidade "Condições operacionais aplicáveis". na folha de dados.
Você deve se lembrar que, para certas partes (como MCUs), a folha de dados também é material de marketing, e os MCUs geralmente competem em periféricos ou no consumo de energia (ou ambos). Portanto, valores para ADCs geralmente serão tecnicamentecorreto, desde que você use o ADC nas mesmas circunstâncias ridículas e impraticáveis em que eles fizeram a medição para a folha de dados. Um dos favoritos que vejo com frequência é medir o ENOB com todos os outros periféricos, bem como com o núcleo do processador completamente desligado em um sono profundo. Outro está usando o pós-processamento de software significativo e técnicas semelhantes, como a superamostragem, para obter a medição. Acho que nunca vi uma folha de dados do MCU que não especificava o ADC em termos de 'este é o melhor que você jamais alcançará, e podemos ou não dizer como o gerimos' em vez de 'esta é a especificação antes de tentar limpar o sinal no software'.
E, para deixar claro, parece que essa parte tem um ADC muito bom, pelo menos em comparação com todos os outros terríveis ADCs do MCU. 8,5 bits? Que opulência! Tão burguês! Na maioria das vezes, você obtém talvez 6 bits de um ADC de 10 bits em um MCU. Lembre-se, quando eles dizem que a resolução de 12 bits significa que existem 12 bits que você pode ler em algum registro em algum lugar. Não há implicações de que não haverá 12 bits de ruído inútil. A única promessa é que haverá 12 bits de algo .
Agora, neste ponto, você pode estar um pouco cético quanto ao fato de que esses periféricos analógicos seriam invariavelmente tão terríveis ou, pelo menos, se perguntam por que alguma empresa de chips não lança simplesmente um MCU com um front end analógico decente.
Bem, eles não podem. Não importa quão boa seja a referência, não é uma questão de estabilidade. É barulho. E física.
É simplesmente fisicamente impossível criar um ADC de alto desempenho (ou realmente, apenas medíocre) na mesma matriz de silício que um MCU. E é preciso apenas um truque para estragar o desempenho analógico. Nesse caso, não há um gotchya, mas vários.
Primeiro, apenas uma comutação de transistor CMOS despeja todos os tipos de harmônicos e ruídos diretamente em, bem, tudo, e se junta a (você adivinhou) tudo, quando é alternada. Nós tendemos a pensar de CMOS como sendo de baixa potência (e é), mas vale a pena tendo em mente que o poder CMOS faz uso é efetivamente zero - exceto quando um transistor está mudando de estado. E eles mudam de estado muito rapidamente, da ordem de dezenas a centenas de picossegundos. Quando você toma uma dúzia de miliamperes consumidos por algo que consome essencialmente nenhuma energia estática, e toda essa corrente está sendo transformada inteiramente em intensos picos de corrente de 100ps de literalmente milhões de pequenos bastardosswitches, alternando agregados ... bem, isso deve reformular as coisas um pouco. Esses poucos miliamperes são muito mais sinistros do que parecem, pelo menos para coisas analógicas. Baixa potência, baixo ruído. O CMOS é de baixa potência, porque só precisa de energia para trocar. Mas é mais difícil do que uma queda de graves no dubstep.
Todos esses espigões devem atravessar o substrato, o substrato que o ADC compartilha, e resistir o suficiente para causar quedas de terra localizadas no substrato que não fazem sentido para os circuitos digitais, mas são realmente problemáticas para qualquer circuito analógico.
E realmente não há maneira de contornar isso. Esse é apenas um problema. A outra é que é fisicamente impossível criar um layout analógico de alto desempenho que possa coexistir com o MCU, que também precisará usar esses pinos como GPIO e outras considerações que interrompem fatalmente qualquer chance de uma boa seção analógica layout.
Agora, existem alguns MCUs especializados com ADCs um pouco aprimorados que conseguem isso, na verdade, tendo duas matrizes de silício totalmente separadas em um pacote, conectadas por fios de ligação, proporcionando isolamento do substrato. Você pagará por esse recurso, porém, e os resultados ainda serão piores do que um ADC dedicado devido à grande proximidade.
Ah, e eu nem toquei em como tudo isso pressupõe que você tenha um layout externo impecável e uma situação de aterramento e desacoplamento de todas as formas relacionadas à sua seção analógica e digital. Só isso não é trivial, basta perguntar a Henry Ott .
Então, em conclusão, receio que o ADC do seu chip seja realmente tão terrível. Exatamente como qualquer outro MCU ADC. Desculpa. Ou é bom o suficiente - e para muitos aplicativos (auxiliados por alguma fonte de software bastante inteligente - trocadilho!) - é. É incrível o que realmente se pode fazer, mesmo com o fraco desempenho analógico disponível, desde que você seja inteligente. Mas inteligente só pode levá-lo tão longe. se você deseja um número rígido e duro de bits, você realmente precisa morder a bala e usar um ADC dedicado, juntamente com um cuidadoso layout e desacoplamento da PCB, ou usar uma peça mais especializada (como pacotes com múltiplas matrizes).