Recomendación para la configuración predeterminada de los pines no utilizados en un STM32 (ARM Cortex M3): ¿subir / bajar?

13

Actualmente estamos utilizando varias variantes de la familia de microcontroladores STM32. Me gustaría saber lo siguiente:

1) ¿Cuáles son las configuraciones predeterminadas recomendadas para los pines de los microcontroladores en general si tiene la opción de seleccionar tanto pull ups como pull downs? ¿Cuáles son los pros y los contras de ir con uno u otro? (Suponiendo que los configurará de forma predeterminada como entradas)

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

3) Para los pines críticos, ¿deberíamos confiar en el firmware para configurar correctamente los pines al estado predeterminado correcto o esta responsabilidad debe estar en el hardware externo (conexión de pull ups externos o pulldowns)? Si los valores elegidos para las resistencias externas son mayores que los pull ups internos o bajos, la configuración del firmware no importa.

El profesional que puedo ver al hacer lo anterior, es que si el micro no se inicializa correctamente por cualquier motivo (hardware defectuoso o me gusta), no estamos confiando en el firmware para configurar el pin correctamente.

El problema que veo es que cuesta más hacer esto es hardware.

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

Gracias ..

    
pregunta IntelliChick

3 respuestas

10

Esta respuesta no es específica de STM32, pero se basa en la experiencia y en muchas de esas discusiones durante muchos (muchos) años. Otros pueden agregar a esto: cubre los puntos principales (creo) pero puede que no esté completo.

Es alentador ver a alguien que hace estas preguntas simples pero fundamentales y muestra cómo estas "pequeñas cosas" pueden "aglase de pandillas" en la vida real.

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

Entonces:

  • El uso de un pullup externo o desplegable es esencial para aquellos que realmente desean obtener un resultado bien definido. Este es el deber más importante que se debe hacer aquí. Todo lo demás es una bonificación. es decir, configurar las entradas con pullxxx interno es un compromiso que casi siempre funcionará.
    PERO si "casi siempre" no es lo suficientemente bueno para su diseño, entonces necesita xxxs de pull externo.

  • Pullup o down no parecen tener un mejor resultado abrumador. Puede variar entre los IC, pero se puede determinar a partir de la hoja de datos. En igualdad de condiciones (como puede ser), yo preferiría el arrastre hacia abajo, ya que existe un potencial de menor fuga a las corrientes externas del dispositivo, pero es probable que esto sea mínimo en una PCB recubierta de forma o en un entorno benigno.

  • Es posible que desee ver la acción de inicio si realmente le importa. por ejemplo, un pasador levantado comenzará bajo y transitará alto en algún momento. Un pasador bajado probablemente se mantendrá bajo durante todo el tiempo. Probablemente esto no sea importante, pero se menciona para estar completo.

  • La susceptibilidad a la ESD será específica del dispositivo, es probable que sea simétrica y, en promedio, en muchos procesadores probablemente favorezca el arrastre, ya que los controladores tienden a hundirse mejor que la fuente si son asimétricos. Si se preocupa mucho por la ESD, es posible que desee utilizar salidas bajas con menús desplegables, ya que una ruta de baja impedancia (probablemente) ofrecerá una mejor protección contra ESD. Pero si le interesa mucho la ESD, querrá diseñarla de otras maneras y no confiar en la protección in-IC como su protección principal.

  • Con respecto a la pregunta 3: es deseable el pullxxxs externo, pero parece seguro usar valores que se encuentran en el límite superior del diseño adecuado y luego usar los xxx internos en paralelo si se desea. Sin embargo, como los xxxs internos suelen tener un 2: 1 Reffectivo, puede obtener la R más grande y la corriente más pequeña usando solo el externo. Lo que, por supuesto, querrá evitar es las flexiones externas y las desventajas internas o viceversa, pero es poco probable que eso sea un problema.

  • Cuando digo "... limitando el extremo alto del diseño adecuado ..." Me refiero a eso y no "más allá de la limitación ...". es decir, el pin tendrá un valor específico de resistencia que permite cumplir las especificaciones de Vin del caso más desfavorable. Una resistencia más grande puede tomar menos corriente en la resistencia, pero puede comenzar a encender ligeramente el interruptor interno. es decir, puede ser que haya un valor de Rpulldown_current contra el valor de la corriente global más baja, ya que el controlador interno comienza a ver una corriente de fuga (que será extremadamente pequeña), lo que aumenta la corriente hasta el dirver y lo susurra muy levemente.

  • Si, por ejemplo, utiliza el menú desplegable, puede encontrar una potencia más baja para configurar el pin de salida y reducirlo, pero esta es una opción que puede decidirse a su debido tiempo.

  • Casi un aparte: NUNCA permita que los diodos de protección manejen "cualquier corriente significativa" en ninguna 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 es la posibilidad de que las cosas salgan mal, y más difícil encontrarlo cuando lo hacen.

respondido por el Russell McMahon
2

¿Para qué estás optimizando? La optimización de costos determina que configure los pines no utilizados en las salidas. La optimización de confiabilidad dicta que todos los niveles de pines estén definidos, incluso en el corto período de tiempo antes de que el firmware tenga la oportunidad de establecer pines no utilizados a lo que considere apropiado.

Una vez tuve que verificar los cálculos de confiabilidad de una placa de procesador. Fue bien diseñado, con tapas de desacoplamiento en todo el lugar y resistencias de tracción a lo que sea en todos los pines de E / S. El ingeniero de confiabilidad sacó su manual, agregó las tasas de falla de todos los componentes involucrados y terminó con una cifra que fue dominada por las tasas de falla de los componentes pasivos. Esa cifra era más alta que el requisito, así que tuvimos un problema. Quita esas resistencias, y la figura estaría bien. Pero ante esa propuesta, los ingenieros eléctricos comenzaron a gritar de ira (con razón, IMO). No recuerdo cómo terminó la historia; Creo que acudimos al cliente y pedimos la dispensa por omitir las tasas de falla de las resistencias del cálculo, porque no llevaban una corriente significativa.

    
respondido por el Wouter van Ooijen
1

Acabo de configurar los pines no utilizados como salidas y los pongo en un nivel bajo.

    
respondido por el Leon Heller

Lea otras preguntas en las etiquetas