¿Debo usar todos los pines de 1 puerto o algunos de cada uno disponible (STM32)?

1

Estoy usando una MCU del ST, específicamente de la serie STM32L1xx. Quiero conectar 2 sensores, los cuales utilizarán el protocolo I2C, 1 tarjeta MicroSD con SPI y 4 interrupciones. ¿Es una buena práctica usar tantos pines de un puerto (por ejemplo, de PORTA) como sea posible o usar cada puerto disponible? Algunos pines conectados a PORTA, algunos a PORTB, etc.

Gracias por tu tiempo

    
pregunta ElectroPro

5 respuestas

3

Los pines que pueden ser utilizados por SPI, I2C y el hardware de interrupción pueden restringir su selección de pines.

El diseño de su tablero también podría influir en la selección de pines.

Para corrientes de salida (relativamente) altas (generalmente no es una buena idea IMO), algunos chips tienen un límite por puerto, lo que favorecería la elección de pines para una salida de corriente más alta de diferentes puertos.

(copiado de la respuesta de Jeroen3) Cuando está muy hambriento de corriente, puede ser bueno deshabilitar los puertos no utilizados, lo que puede favorecer el uso de pines en puertos ya utilizados.

Cuando debe copiar rápidamente un valor de múltiples bits a una cantidad de pines, será mucho más fácil cuando esos pines estén en un puerto (y aún más fácil cuando sean consecuentes y comiencen desde el bit 0).

Aparte de esos aspectos, no veo que sea una diferencia significativa el pin que elija, desde el mismo puerto o desde diferentes.

    
respondido por el Wouter van Ooijen
1

Si su objetivo es guardar los 5 uA / MHz al no habilitar un banco GPIO, entonces sí.
De lo contrario, simplemente deje que el diseño de la placa de uso periférico dicte qué IO usar.

    
respondido por el Jeroen3
1

Probablemente diseñe un dispositivo de baja potencia (serie Lxx) y cada periférico habilitado (como otro puerto GPIO) consume algo de corriente solo para controlar la electrónica interna. Y esa es la razón principal por la que los diseñadores de dispositivos de muy baja potencia deben intentar no habilitar nada que no sea 100% necesario.

    
respondido por el P__J__
0

Desde una perspectiva técnica, no es necesario usar todos los pines de un puerto o distribuirlos entre todos los puertos. Una razón podría ser si tiene una gran cantidad de pines de conducción actuales, pero en la mayoría de los casos, el diseño de la placa define dónde está conectada su periferia y, por lo tanto, define los puertos. En otros casos, desea calcular datos paralelos (por ejemplo, algunos botones) y luego es más fácil tenerlos en un puerto, ya que esto simplifica el código.

Y, por supuesto, si usa funciones especiales de ciertos pines, también están definidas.

    
respondido por el Humpawumpa
0

Una vez que haya asignado todas las IPs de hardware a los puertos que se ajusten a sus necesidades, se le deja un montón de E / S para otras cosas relacionadas con GPIO. El más importante de ellos son las líneas IRQ.

STM32L1 tiene un controlador de interrupción externo (EXTI) que lo obliga a tener solo un pin con número N entre todos los puertos como interrupción. (Es decir, no puede utilizar B0, C0, ... como IRQ si A0 es IRQ, etc.). Cuando combina esta restricción con su restricción de enrutamiento de PCB, usar la menor cantidad de puertos posible es una ventaja, pero puede no ser posible.

    
respondido por el Nipo

Lea otras preguntas en las etiquetas