Personalmente, no soy un gran admirador de las reglas generales, pero hay algunas reglas que son excepcionalmente precisas y que incluso yo hago una excepción.
Una de esas reglas es la siguiente:
Los periféricos de microcontrolador ADC son siempre terribles.
Siempre. No es el tipo de terrible que simplemente derateras. El tipo de terrible que te deja llorando en posición fetal en la ducha.
Bromeo, pero solo un poco. Para responder a su pregunta, sí, el ADC es realmente tan malo, y sí, debe aceptarlo. Tenga en cuenta el gran descargo de responsabilidad que dice "Se aplican condiciones de funcionamiento" en la hoja de datos.
Debe recordar que para ciertas partes (como las MCU), la hoja de datos también es material de marketing, y las MCU generalmente compiten en periféricos o consumo de energía (o ambos). Entonces, las cifras para cosas como los ADC a menudo serán técnicamentecorrecto, siempre y cuando use el ADC en las mismas circunstancias ridículas y poco prácticas que tomaron la medida para la hoja de datos. Un favorito que veo a menudo es medir el ENOB con todos los demás periféricos, así como el núcleo del procesador real completamente apagado en un sueño profundo. Otro es utilizar un importante procesamiento posterior del software y técnicas similares como el sobremuestreo para obtener la medición. No creo haber visto nunca una hoja de datos de MCU que no especifique el ADC en términos de "esto es lo mejor que posiblemente lograrás, y podemos o no decirte cómo lo gestionamos" en lugar de 'esta es la especificación antes de intentar limpiar la señal en el software'.
Y, para ser claros, parece que esta parte tiene un ADC bastante bueno, al menos en comparación con todos los otros ADC terribles de MCU. 8.5 bits? ¡Qué opulencia! ¡Tan burgués! La mayoría de las veces obtendrá quizás 6 bits de un ADC de 10 bits en una MCU. Recuerde, cuando dicen una resolución de 12 bits, significan que hay 12 bits que puede leer desde algún registro en alguna parte. No hay implicación de que no sean 12 bits de ruido inútil. La única promesa es que habrá 12 bits de algo .
Ahora, en este punto, puede ser un poco escéptico de que estos periféricos analógicos sean invariablemente tan terribles, o al menos, preguntarse por qué alguna compañía de chips no lanza simplemente un MCU con una interfaz analógica decente a mitad de camino.
Pues no pueden. No importa cuán buena sea realmente la referencia, no es un problema de estabilidad. Es ruido. Y fisica.
Es simplemente físicamente imposible crear un ADC de alto rendimiento (o realmente, simplemente mediocre) en el mismo dado de silicio que un MCU. Y solo se necesita un gotchya para arruinar el rendimiento analógico. En este caso, no hay una gotchya, sino varias.
Primero, solo una conmutación de transistor CMOS descargará todo tipo de armónicos y ruido directamente en, bueno, todo, y se acoplará (lo adivinó) a todo, cuando cambie. Tendemos a pensar que CMOS es de baja potencia (y lo es), pero vale la pena tener en cuenta que la potencia que utiliza CMOS es efectivamente cero, excepto cuando un transistor está cambiando de estado. Y cambian de estado muy rápido, del orden de decenas a cientos de picosegundos. Cuando tomas una docena de miliamperios consumidos por algo que esencialmente no consume energía estática, y toda esa corriente se convierte por completo en picos intensos de 100 ps de literalmente millones de pequeños bastardos pequeñoscambia, cambiando en conjunto ... bueno, eso debería replantear un poco las cosas. Esos pocos miliamperios son mucho más siniestros de lo que parecen, al menos para cosas analógicas. Baja potencia ≠ bajo nivel de ruido. CMOS tiene poca energía porque solo necesita energía para cambiar. Pero cambia más fuerte que una caída de graves dubstep.
Todos esos picos deben atravesar el sustrato, el sustrato que comparte el ADC, y lo suficientemente resistente como para causar un rebote a tierra localizado en el sustrato que no tiene sentido para los circuitos digitales, pero que es muy problemático para cualquier circuito analógico.
Y realmente no hay forma de evitar eso. Ese es solo un problema. La otra es que en realidad es físicamente imposible crear un diseño analógico de alto rendimiento que pueda coexistir con el MCU, que también necesitará usar esos pines como GPIO, y otras consideraciones que perturban fatalmente cualquier posibilidad de una buena sección analógica. diseño.
Ahora, hay algunas MCU especializadas con ADC algo mejoradas que logran esto al tener dos troqueles de silicio completamente separados en un paquete, conectados por cables de enlace, lo que proporciona aislamiento del sustrato. Sin embargo, va a pagar por esta característica, y los resultados seguirán siendo más pobres que un ADC dedicado debido a la proximidad.
Ah, y ni siquiera me he referido a cómo todo esto supone que tiene un diseño externo impecable y una situación de conexión a tierra y desacoplamiento en todas las formas relacionadas con su sección analógica y digital. Eso por sí solo no es trivial, solo pregúntale a Henry Ott .
Entonces, en conclusión, me temo que el ADC en su chip es realmente tan terrible. Exactamente como cualquier otro MCU ADC. Lo siento. O bien, es lo suficientemente bueno, y para muchas aplicaciones (ayudado por una fuente de software bastante inteligente , ¡juego de palabras!), Lo es. Es sorprendente lo que realmente se puede hacer, incluso con el bajo rendimiento analógico disponible siempre que seas inteligente. Pero inteligente solo puede llevarte tan lejos. Si desea un número de bits frío y efectivo, realmente solo tiene que morder la bala y usar un ADC dedicado junto con un cuidadoso diseño y desacoplamiento de PCB, o considerar el uso de una parte más especializada (como paquetes de troqueles múltiples).