Cómo lidiar con múltiples resistencias de pull-up en módulos

8

Estaba pensando en hacer un módulo para una placa de desarrollo que hice hace unos días e incluirá interfaces spi / i2c.

El problema es que no incluí resistencias pull-up en los pines MCU en la placa principal y estaba pensando en agregarlos en los módulos para hacerlos más "genéricos" para que cada usuario pueda usarlos sin necesidad de agregarlos. Resistencias adicionales en la placa prototipo.

Pero luego me enfrenté al siguiente problema. Si agrego los resistos de pull-up en los módulos adicionales y conecto, por ejemplo, dos o más módulos al mismo bus, obtendré esas resistencias en paralelo para que la resistencia caiga y no cumpla su función.

Pero si agrego las resistencias de pull-up a la placa principal, tendré esos pines en la MCU siempre bajos.

Entonces la pregunta principal es:

¿Cómo tener varios módulos conectados al mismo bus que tiene en cada uno de ellos las resistencias de pull-up pero no obtenerlas en paralelo cuando tiene más de un módulo? ¿Es eso posible?

¿O la mejor solución aquí es habilitar las resistencias de extracción en la MCU y no incluirlas en los módulos?

Gracias.-

    
pregunta Sein Oxygen

2 respuestas

11

Supondré que la longitud total de cada uno de sus autobuses es inferior a 1 metro, lo que es típico de I 2 C y SPI. Además, la capacitancia del bus está dentro de la especificación.

Debe haber solo un (1) conjunto de resistencias de pull-up. Como resultado, el mejor lugar para ellos es en la placa del controlador principal. No pongas los pull-ups en los módulos.

Si desea tener un pull-up en algunos casos y no tenerlos en otros casos.

  • No rellene las resistencias de pull-up cuando no las necesite.
  • Diseñe la placa controladora principal de modo que las extensiones se conecten a las líneas de señal a través de puentes. Elimine los bloques de cortocircuito, cuando no necesite los pull-ups.

editar: Francamente, creo que es un error que Sparkfun ponga pull-ups en I 2 C esclavos módulos. Desafortunadamente, no todos los que compran módulos se dan cuenta de que un levantamiento excesivo puede ser un problema. Sería mejor si las placas controladoras (en lugar de las placas periféricas esclavas) tuvieran pull-ups con puentes de soldadura. Oh ... espera ... Arduino no lleva los pull-ups (opcional) (aunque quizás debería). Así que, vamos a juntar pull-ups en todas partes. Una experiencia inicial más fácil y rápida. Pero agregue algunos módulos esclavos y el bus dejará de funcionar.

actualización (mayo de 2015):
- Discusión relacionada en comentarios en otro hilo.
- En sus módulos más recientes, SparkFun comenzó a agregar puentes de soldadura entre Vcc y I 2 C resistencias de recuperación ( ejemplo ). Eso permite desconectar los pull-ups más fácilmente.

actualización (diciembre de 2015):
Preguntas similares sobre la solución de problemas I 2 C con múltiples módulos siguen apareciendo en los tableros de mensajes. Intente una respuesta general extendida.

    
respondido por el Nick Alexeev
4

Una opción es usar paquetes de resistencias SIL o DIL, y colocarlos en los enchufes de cada módulo. Cuando construya un sistema con múltiples módulos, sáquelos de todos los módulos, excepto el último. Esto ahorra un poco de espacio en el tablero sobre los puentes.

Las variaciones en este tema pueden incluir interruptores FET para conectar o desconectar las resistencias, controladas por un solo puente, o un pin de repuesto en el conector (de modo que si otro módulo está conectado, las resistencias se desconectan automáticamente)

    
respondido por el Brian Drummond

Lea otras preguntas en las etiquetas