Resistenze pull-up I2C

Scusate il disturbo.
Vorrei tornare sull’argomento resistenze di pull-up per i due segnali I2C.
Alcuni le dicono obbligatorie (usa pure quelle da 4700k, per la maggior parte degli utilizzi vanno bene quelle), altri non le nominano neppure.
Io devo collegare via I2C un Arduino Uno con un Arduino Nano, che stanno a distanza (se mai questo dovesse influire) di 15 cm.
Queste resistenze sono inutili, utili o obbligatorie?
Grazie mille.
Buona giornata.
Giuseppe

Sono OBBLIGATORIE !!!

Puoi studiare come funziona un bus I2C prima QUI e poi QUI.

Guglielmo

Grazie mille! Giuseppe

geppox: ... stanno a distanza (se mai questo dovesse influire) di 15 cm.

... dimenticavo, certo che influisce, considera che il bus I2C (acronimo di Inter-Integrated Circuit) è nato per intreconnettere, appunto, IC sulla stessa scheda e NON per essere portato in giro con fili vari.

Dato che è un bus su cui viaggiano segnali con frequenza di centinaia di KHz, la lunghezza e la capacità dei cavi ovviamente influsice (molto meno che nel caso del bus SPI in cui parlaimo di segnali con frequenza di MHz e molto più rognoso) quindi, assolutamente cavi il più corto possibile ! ;)

Guglielmo

L'inghippo può derivare dal fatto che alcune schede hanno già le pull'up a bordo. Ora, il bus per funzionare, ha bisogno di resistenze che garantiscano una corrente in un range, sto andando a memoria per cui non cito valori che ricorderei sicuramente errati. Siccome nel normale utilizzo può capitare di mettere più schede sullo stesso bus, queste resistenze sono tarate in modo da non uscire dal range anche se si collegano 2 schede in parallelo. Per questo potresti trovare nelle schede resistenze da 10K e come indicazione quella di metterle da 4,7K, perchè due da 10K in parallelo fanno una equivalente da 5K.

Chi dice di non metterle, magari ha schede con le pull'up a bordo e non se n'è accorto per cui magari crede che non servano. Ma come ha in modo molto velato scritto Guglielmo nella sua prima risposta, servono e come se servono! Se si mettono tante schede, è bene verificare cos'hanno a bordo per non rischiare di far scorrere troppa corrente nel bus, in quel caso sarebbe preferibile optare per schde senza e aggiungerle esternamente di valore opportuno.

Maurizio

maubarzi:
Ora, il bus per funzionare, ha bisogno di resistenze che garantiscano una corrente in un range, sto andando a memoria per cui non cito valori che ricorderei sicuramente errati.

In realtà la cosa è parecchio più complessa … 4.7K è solo un compromesso, la teoria ed il calcolo esatto lo trovi nell’allegata application note di TI :slight_smile:

Guglielmo

I2C Bus Pullup Resistor Calculation.pdf (157 KB)