16 votos

¿Recomendación para la configuración por defecto de los pines no utilizados en un STM32 (ARM Cortex M3) - pull up/pull down?

Actualmente utilizamos diversas variantes de la familia de microcontroladores STM32. Me gustaría saber lo siguiente:

  1. ¿Cuáles son los ajustes por defecto recomendados para los pines de los microcontroladores en general si se tiene la opción de seleccionar tanto pull ups como pull downs? ¿Cuáles son los pros y los contras de ir con uno o con el otro? (Suponiendo que los configure por defecto como entradas)

  2. En particular, me gustaría saber qué hacer con los pines no utilizados para la familia de microcontroladores STM32. Me parece obvio que no hay que dejar los pines en flotación, (que es todo lo que dice la hoja de datos, :( ), pero ¿debería configurarlos como entrada con pull ups o entradas con pull downs? En particular, me gustaría elegir una configuración que sea lo menos susceptible a ESD y también si es posible, que consuma la menor cantidad de energía.

  3. En el caso de los pines críticos, ¿debemos confiar en que el firmware configure correctamente los pines al estado predeterminado correcto o esta responsabilidad debe recaer en el hardware externo (conectando pull ups o pull downs externos)? Si los valores elegidos para las resistencias externas son mayores que los pull ups o pull downs internos, la configuración en el firmware no importa.

La ventaja que veo para hacer lo anterior, es que si el micro no se inicializa correctamente por el motivo que sea (hardware defectuoso o similar), no estamos confiando en que el firmware configure el pin correctamente.

La contra que veo es que cuesta más hacer esto es hardware.

Cualquier luz que pueda arrojar sobre lo anterior será realmente apreciada.

Gracias

11voto

aryeh Puntos 1594

Esta respuesta no es específica de STM32, sino que se basa en la experiencia y en muchas discusiones de este tipo durante muchos (muchos) años. Otros pueden agregar a esto - que cubre los puntos principales (creo), pero puede no ser completa.

Es alentador ver que alguien se plantea estas preguntas sencillas pero fundamentales y que muestra una conciencia de cómo estas "pequeñas cosas" pueden "aglomerarse" en la vida real.

es decir, "Si el micro no se inicializa correctamente..." realmente se lee " ... cuando el micro no se inicializa correctamente..." :-) - y es obvio que te das cuenta de esto.

Así que:

  • El uso de un pullup o pulldown externo es esencial para aquellos realmente interesados en obtener un resultado bien definido. Esto es lo más importante que hay que hacer aquí. Todo lo demás es un extra. Es decir, la configuración de las entradas con pullxxx interno es un compromiso que casi siempre funcionará.
    PERO si "casi siempre" no es suficiente para su diseño, entonces usted necesita xxxs tirón externo.

  • La subida o bajada no parece tener un resultado abrumadoramente mejor. Puede variar entre los CI, pero se puede determinar a partir de la hoja de datos. En igualdad de condiciones (como puede ser), me inclino por el pull-down, ya que existe la posibilidad de que se produzcan menores corrientes de fuga hacia los circuitos externos del dispositivo, pero esto puede ser mínimo en una placa de circuito impreso revestida de forma adecuada y/o en un entorno benigno.

  • Por ejemplo, un pin de arranque comenzará bajo y transitará alto en algún momento. Un pin bajado probablemente permanecerá bajo durante todo el proceso. Esto probablemente no es importante, pero se menciona para completar.

  • La susceptibilidad a la ESD será específica de cada dispositivo, probablemente simétrica y, en promedio, en muchos procesadores probablemente favorezca el pull down, ya que los conductores tienden a hundirse mejor que la fuente si son asimétricos. Si le preocupa mucho la ESD, puede que desee utilizar salidas bajas con pull downs, ya que una ruta de baja impedancia ofrecerá (probablemente) una mejor protección contra la ESD. Pero si te preocupa mucho la ESD, querrás diseñarla de otras maneras y no depender de la protección in-IC como protección principal.

  • Re pregunta 3 - pullxxxs externos es deseable pero parece seguro usar valores que están en el extremo alto limitante del diseño apropiado y luego usar xxx's internos en paralelo si se desea. Sin embargo, como pull xxxs internos a menudo tienen un 2:1 Reffective usted puede conseguir el mayor R y la menor corriente mediante el uso de externo solamente. Lo que, por supuesto, quiere evitar es pull ups externos y pull downs internos o vice bersa - pero eso es poco probable que sea un problema.

  • Cuando digo " ... limitando el extremo superior del diseño adecuado ... "es decir, la clavija tendrá un valor especificado de resistencia que permite cumplir la especificación Vin del peor caso. Una resistencia más grande puede tomar menos corriente en la resistencia, pero puede empezar a encender muy ligeramente el interruptor interno. es decir, puede ser que hay una Rpulldown_current frente a la corriente global más baja tradeoff como el conductor interno comienza a ver la corriente de fuga (que será extremadamente pequeño) el aumento de la corriente a la dirver y susurrando en muy ligeramente.

  • Si utilizas por ejemplo el pulldown puede que te resulte de menor potencia poner el pin en salida y conducirlo a bajo, pero esta es una opción que se puede decidir en su momento.

  • Casi como un aparte - NUNCA permita que los diodos de protección manejen "cualquier corriente significativa" en cualquier etapa durante la operación. Permitir que lo hagan puede llevar a una acción del procesador totalmente inexplicable. Cuanto menor sea la corriente, menor será la posibilidad de que las cosas vayan mal, y más difícil será encontrarlas cuando lo hagan.

2voto

GetFree Puntos 495

¿Qué está optimizando? La optimización de los costes dicta que se establezcan los pines no utilizados como salidas. La optimización de la fiabilidad dicta que se definan todos los niveles de los pines, incluso en el corto período antes de que el firmware tenga la oportunidad de establecer los pines no utilizados a lo que considere apropiado.

Una vez tuve que comprobar los cálculos de fiabilidad de una placa de procesador. Estaba bien diseñada, con tapones de desacoplamiento por todas partes y resistencias pull-to-whatever en todos los pines de E/S. El ingeniero de fiabilidad sacó su manual, sumó las tasas de fallo de todos los componentes implicados y obtuvo una cifra dominada por las tasas de fallo de los componentes pasivos. Esa cifra era superior al requisito, así que teníamos un problema. Si se eliminaban esas resistencias, la cifra estaría bien. Pero ante esa propuesta, los ingenieros eléctricos empezaron a poner el grito en el cielo (con razón, en mi opinión). No recuerdo cómo acabó la historia; creo que fuimos al cliente y le pedimos una dispensa para omitir los índices de fallo de las resistencias en el cálculo, con el argumento de que no transportaban una corriente significativa.

1voto

Mark Biek Puntos 41769

Simplemente configuro los pines no utilizados como salidas y los pongo a nivel bajo.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X