Come gestire resistenze pull-up multiple sui moduli


9

Stavo pensando di creare un modulo per una scheda di sviluppo che ho realizzato qualche giorno fa che includerà interfacce spi / i2c.

Il problema è che non ho incluso resistori di pull-up nei pin MCU nella scheda madre e stavo pensando di aggiungerli nei moduli per renderli più "generici" in modo che ogni utente potesse usarli senza bisogno di aggiungere resistori extra in la scheda prototipo.

Ma poi ho affrontato il problema successivo. Se aggiungo i resistos pull-up nei moduli extra e collego ad esempio due o più moduli allo stesso bus, avrò questi resistori in parallelo in modo che la resistenza calerà e non realizzerà la loro funzione.

Ma se aggiungo i resistori di pull-up alla scheda principale, avrò quei pin nell'MCU sempre attivi bassi.

Quindi la domanda principale è:

Come avere più moduli collegati allo stesso bus avendo su ciascuno di essi i resistori pull-up ma non metterli in parallelo quando hai più di un modulo? È possibile?

O la soluzione migliore qui è abilitare i resistori pullup nell'MCU e non includerli nei moduli?

Grazie.-


Crea un modulo separato che conterrà solo resistori pull-up :)
Alexandr Zarubkin,

Risposte:


14

Presumo che la lunghezza totale di ciascuno dei tuoi autobus sia inferiore a 1 metro, tipico per I 2 C e SPI normali . Inoltre, la capacità del bus rientra nelle specifiche.

Dovrebbe esserci solo un (1) set di resistori pull-up. Di conseguenza, il posto migliore per loro è sulla scheda controller principale. Non inserire i pull-up sui moduli.

Se vuoi avere pull-up in alcuni casi e non averli in altri casi.

  • Non popolare le resistenze pull-up, quando non ne hai bisogno.
  • Progettare la scheda controller principale in modo tale che i pull-up siano collegati alle linee del segnale tramite ponticelli. Rimuovere i blocchi di cortocircuito, quando non sono necessari i pull-up.

modifica: Francamente, penso che sia un errore che Sparkfun inserisca i pull-up sui moduli slave I 2 C. Sfortunatamente, non tutti coloro che acquistano moduli si rendono conto che un pull-up eccessivo può essere un problema. Sarebbe più bello se le schede controller (anziché le schede periferiche slave) avessero pull-up con ponticelli di saldatura. Oh ... Aspetta ... Arduino non porta i pull-up (opzionali) (anche se forse dovrebbe). Quindi, schlep pull-up ovunque. Esperienza immediata iniziale più semplice. Ma aggiungi alcuni moduli slave e il bus smetterà di funzionare.

aggiornamento (maggio 2015):
- Discussione correlata nei commenti in un'altra discussione.
- Nei loro moduli recenti, SparkFun ha iniziato ad aggiungere jumper blob di saldatura tra Vcc e i resistori pull-up I 2 C ( esempio ). Ciò consente di disconnettere più facilmente i pull-up.

aggiornamento (dicembre 2015):
domande simili sulla risoluzione dei problemi I 2 C con più moduli continuano a comparire sui forum. Tentativo di una risposta generale estesa.


Sì, in realtà il mio caso è stato per un esempio. Ad esempio, tutti i moduli RTC venduti in alcuni negozi includono i resit pullup, quindi ... come gestirli in quel caso. Ecco perché ho segnato in grassetto la domanda principale. :)
Sein Oxygen

1
@SeinOxygen Se hai moduli con resistenze di pull-up, più il controller con i suoi pull-up, allora tutte queste resistenze appariranno in parallelo e presenteranno un pull-up più rigido (resistenza più piccola). Supponiamo di avere un totale di 3 (tre) resistori da 2,2 kΩ come pull-up. La resistenza di pull-up totale è 733Ω. Ciò viola le specifiche I2C. Cosa fare? Rimuovere i pull-up extra dai moduli (forse, in primo luogo, non avrebbero dovuto essere presenti).
Nick Alexeev

@SeinOxygen Altre informazioni sui valori pull-up di I2C in questo thread .
Nick Alexeev

4

Un'opzione è quella di utilizzare i pacchetti di resistori SIL o DIL e inserirli in prese su ciascun modulo. Quando si costruisce un sistema con più moduli, estrarli da ogni modulo tranne l'ultimo. Ciò consente di risparmiare un po 'di spazio sulla tavola rispetto ai jumper.

Le variazioni su questo tema possono includere interruttori FET per collegare o scollegare i resistori, controllati da un singolo jumper, o un pin di riserva sul connettore (in modo che se un altro modulo è collegato, i resistori vengono automaticamente disconnessi)

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.