Estaba pensando en hacer un módulo para una placa de desarrollo que hice hace unos días que 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 pudiera usarlos sin necesidad de agregar resistencias adicionales en El prototipo de tablero.
Pero luego me enfrenté al siguiente problema. Si agrego las resistencias 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 disminuya y no cumpla su función.
Pero si agrego las resistencias pull-up a la placa principal, tendré esos pines en la MCU siempre como activos bajos.
Entonces la pregunta principal es:
¿Cómo tener múltiples módulos conectados al mismo bus que tienen en cada uno de ellos las resistencias pull-up pero no tenerlos en paralelo cuando tienes más de un módulo? ¿Es eso posible?
¿O la mejor solución aquí es habilitar las resistencias pullup en la MCU y no incluirlas en los módulos?
Gracias.-
Respuestas:
Asumiré que la longitud total de cada uno de sus autobuses es inferior a 1 metro, lo cual es típico para I 2 C y SPI. Además, la capacitancia del bus está dentro de las especificaciones.
Debe haber solo un (1) conjunto de resistencias pull-up. Como resultado, el mejor lugar para ellos es en la placa controladora principal. No ponga los pull-ups en los módulos.
Si desea tener pull-up en algunos casos y no tenerlos en otros casos.
editar: Francamente, creo que es un error que Sparkfun ponga pull-ups en los módulos esclavos I 2 C. Desafortunadamente, no todos los que compran módulos se dan cuenta de que la extracción excesiva 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 (opcionales) (aunque tal vez debería). Entonces, hagamos pull-ups en todas partes. Experiencia inicial más fácil de usar. 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 recientes, SparkFun comenzó a agregar puentes de blob de soldadura entre Vcc y las resistencias pull-up I 2 C ( 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 foros Intentar una respuesta general extendida.
fuente
Una opción es usar paquetes de resistencias SIL o DIL, y colocarlos en enchufes en cada módulo. Al construir un sistema con múltiples módulos, retírelos de cada módulo, excepto el último. Esto ahorra un poco de espacio en el tablero sobre los puentes.
Las variaciones sobre 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 se conecta otro módulo, las resistencias se desconectan automáticamente)
fuente