Personalmente, non sono un grande fan delle regole empiriche, ma ci sono alcune regole che sono eccezionalmente accurate per le quali anche io faccio un'eccezione.
Una di queste regole è la seguente:
Le periferiche ADC del microcontrollore sono sempre terribili.
Sempre. Non il tipo di terribile che hai appena deratato. Il tipo di terribile che ti lascia piangere nella posizione fetale sotto la doccia.
Faccio un capretto, ma solo leggermente. Per rispondere alla tua domanda, sì, l'ADC è davvero così male, e sì, dovresti accettarlo. Nota il grande disclaimer che afferma "Condizioni operative applicabili". nel foglio dati.
Devi ricordare che per alcune parti (come le MCU), il foglio dati è anche materiale di marketing e le MCU generalmente competono nelle periferiche o nel consumo di energia (o in entrambi). Quindi le cifre per cose come gli ADC saranno spesso tecnicamentecorretto, purché si utilizzi l'ADC nelle stesse circostanze ridicole e impraticabili, hanno preso la misurazione per il foglio dati. Un favorito che vedo spesso è misurare ENOB con tutte le altre periferiche, nonché il vero core del processore completamente spento in un sonno profondo. Un altro sta usando una significativa post-elaborazione del software e tecniche simili come il sovracampionamento per ottenere la misurazione. Non credo di aver mai visto un foglio dati MCU che non specifichi l'ADC in termini di "questo è il migliore che tu possa mai ottenere, e potremmo o meno dirti come l'abbiamo gestito" piuttosto che 'questa è la specifica prima di provare a ripulire il segnale nel software'.
E, per essere chiari, sembra che questa parte abbia un ADC piuttosto buono, almeno rispetto a tutti gli altri terribili ADC MCU. 8,5 bit? Che opulenza! Così borghese! Il più delle volte otterrai forse 6 bit da un ADC a 10 bit in un MCU. Ricorda, quando dicono una risoluzione a 12 bit, significano che ci sono 12 bit che puoi leggere da qualche registro da qualche parte. Non c'è alcuna conseguenza che non saranno 12 bit di rumore inutile. L'unica promessa è che ci saranno 12 bit di qualcosa .
Ora, a questo punto, potresti essere un po 'scettico sul fatto che queste periferiche analogiche sarebbero invariabilmente così terribili, o per lo meno, chiediti perché alcune società di chip non rilasciano semplicemente un MCU con un front-end analogico decente a metà.
Beh, non possono. Non importa quanto sia buono il riferimento, non è un problema di stabilità. È rumore. E fisica.
È semplicemente fisicamente impossibile creare un ADC ad alte prestazioni (o davvero solo mediocre) sullo stesso stampo di silicio di un MCU. E ci vuole solo un gotchya per rovinare le prestazioni analogiche. In questo caso, non c'è un gotchya, ma diversi.
In primo luogo, solo una commutazione a transistor CMOS scaricherà tutti i tipi di armoniche e rumore direttamente in, beh, tutto e si accoppierà in (hai indovinato) tutto, quando cambia. Si tende a pensare di CMOS come bassa potenza (e lo è), ma è la pena di tenere presente che la potenza CMOS fa uso è praticamente zero - tranne quando un transistor cambia stato. E cambiano stato molto velocemente, nell'ordine delle decine a centinaia di picosecondi. Quando prendi una dozzina di milliampere consumati da qualcosa che essenzialmente non consuma energia statica, e tutta quella corrente viene trasformata interamente in intensi picchi di corrente di 100ps di letteralmente milioni di piccoli piccoli bastardiswitch, switch in aggregate ... beh, questo dovrebbe riformulare un po 'le cose. Quei pochi milliampere sono molto più sinistri di quanto sembri, almeno per cose analogiche. Bassa potenza ≠ basso rumore. CMOS è a basso consumo perché per passare è necessaria solo l'alimentazione. Ma passa più difficile di una caduta di basso dubstep.
Tutti questi picchi devono lacerare il substrato, il substrato condiviso dall'ADC, e abbastanza resistivi da causare un rimbalzo di terra localizzato nel substrato che non ha senso per i circuiti digitali, ma è davvero molto problematico per qualsiasi circuito analogico.
E non c'è davvero alcun modo per aggirare questo. Questo è solo un problema. L'altro è che in realtà è fisicamente impossibile creare un layout analogico ad alte prestazioni che possa coesistere con l'MCU, che dovrà usare anche quei pin come GPIO, e altre considerazioni che interrompono fatalmente ogni possibilità di una buona sezione analogica disposizione.
Ora, ci sono alcune MCU specializzate con ADC in qualche modo migliorate che raggiungono questo obiettivo in realtà avendo due matrici di silicio completamente separate in un unico pacchetto, collegate da fili di legame, dando così l'isolamento del substrato. Tuttavia, pagherai per questa funzione e i risultati saranno ancora più poveri di un ADC dedicato a causa della pura vicinanza.
Oh, e non ho nemmeno toccato come tutto questo presuppone che tu abbia una disposizione esterna impeccabile e una situazione di messa a terra e disaccoppiamento in tutti i modi relativi alla tua sezione analogica e digitale. Questo da solo non è banale, basta chiedere a Henry Ott .
Quindi, in conclusione, temo che l'ADC sul tuo chip sia davvero così terribile. Esattamente come ogni altro ADC MCU. Scusate. O è abbastanza buono - e per molte molte applicazioni (aiutato da qualche fonte di software piuttosto intelligente !) - lo è. È incredibile quello che si può davvero fare anche con le scarse prestazioni analogiche disponibili finché si è intelligenti. Ma l'intelligente può portarti solo così lontano. se vuoi un numero di bit freddo e efficace, devi davvero mordere il proiettile e utilizzare un ADC dedicato insieme a un accurato layout e disaccoppiamento del PCB, oppure esaminare una parte più specializzata (come i pacchetti multi-die).