Choisir la résistance de PULL UP pour un bus I2C

Alimentations, composants ...
AmadeusHF
Rang "3 LEDs"
Rang "3 LEDs"
Messages : 127
Enregistré le : 03 août 2009, 09:18

Choisir la résistance de PULL UP pour un bus I2C

Message non lu par AmadeusHF »

'jour à tous !

J'avance sur mon projet de spot...j'ai besoin de faire communiquer mes PIC via I2C.

La doc du PIC16F indique qu'il faut prévoir en externe au CI deux résistances de PULL UP, et que les entrées SDA et SCK sont configurées en "Open Drain".

Bon du PULL-UP donc je dois, en l'absence de signal, polariser les entrées au + alimentation...d'accord.

La question : comment je choisis ces résistances ?

Je suppose qu'on doit avant tout déterminer le courant qui va y circuler non ? Si je comprend bien le principe, le + alim va débiter dans ces résistances quand la broche sera forcée au niveau BAS par le circuit maitre..et justement le courant s'écoulera par broche de sortie du maitre (qui sera passée à VSS/GND). Donc je prend la courant que je veux et je fait U=RxI ???

Qui peut m'indiquer comment l'ont choisi les valeurs de ces résistances ?

AmadeusHF
Rang "3 LEDs"
Rang "3 LEDs"
Messages : 127
Enregistré le : 03 août 2009, 09:18

Re: Choisir la résistance de PULL UP pour un bus I2C

Message non lu par AmadeusHF »

Je me répond à moi-même...pour ceux qui ce seraient posé la question.

Tout est expliqué là :
http://www.robot-electronics.co.uk/htm/ ... 2c_bus.htm

Il faut donc un jeu de pull-up pour amener le bus lui-même au niveau VCC, les connexions Open Drain (collecteur ouvert en FR ?) servant à forcer la ligne au niveau bas. Valeurs des résistances allant de 1.8 kOhms à 47 kOhms suivant les montages et la consommation qu'on accepte.

jC_Omega
Rang "6 LEDs"
Rang "6 LEDs"
Messages : 904
Enregistré le : 10 août 2008, 09:45
Contact :

Re: Choisir la résistance de PULL UP pour un bus I2C

Message non lu par jC_Omega »

pas eu le temps de répondre ^^

moi j'avais mis 4.7k pour mes tests
Mes projets perso :
Image

AmadeusHF
Rang "3 LEDs"
Rang "3 LEDs"
Messages : 127
Enregistré le : 03 août 2009, 09:18

Re: Choisir la résistance de PULL UP pour un bus I2C

Message non lu par AmadeusHF »

J'ai compulsé plus amplement les données de tout le problème. J'en arrive à plusieurs conclusions :

=> Pour la longueur de câble que je vise (2 à 3m), il faut que j'ai un seul point d'éclairage sur le bus I2C. La capacitance du bus étant limitée à 400 pF, il faut que j'utilise un câble blindé compatible avec ça. Comme on trouve couramment du câble de 50 (rare) à 100 pF (plus courant) le mètre, pour 3 m...ben vous faites le calcul.

=> De là découle la nécessité d'utiliser un "driver de ligne" pour chaque canal, du genre du PCA9306 de TI (pour en savoir plus, cliquer ICI)

=> De là également découle le fait que mes résistances de pull-up seront des 1.8 kOhms. Voir la datasheet de TI (table de valeurs)

Je vais donc avoir 4 composants PCA9306, chacun sera connecté au bus du pic maitre, et sera sélectionné par une des sorties d'un des port de ce même PIC, ce qui fait que à un instant T, je n'aurais qu'un seul spot sur le bus...donc ça doit passer. Me reste à avancer sur les tests I2C niveau logiciel pour ensuite passer aux tests grandeur nature.

jC_Omega
Rang "6 LEDs"
Rang "6 LEDs"
Messages : 904
Enregistré le : 10 août 2008, 09:45
Contact :

Re: Choisir la résistance de PULL UP pour un bus I2C

Message non lu par jC_Omega »

tes expériences sur l'I2C m'intéresse bcp, car moi mes essais ont échouer.

le buffer I2C ce mets ou au centre? il faut mettre les résistance de chaque coté?
d'après la doc c'est pas juste un Ci qui fait l'adaptation de sigaux entre µC de différente tension (dans la doc 3.3V-1.8V)
Mes projets perso :
Image

AmadeusHF
Rang "3 LEDs"
Rang "3 LEDs"
Messages : 127
Enregistré le : 03 août 2009, 09:18

Re: Choisir la résistance de PULL UP pour un bus I2C

Message non lu par AmadeusHF »

Le chips de branche entre le master et le slave. Tu as effectivement une fonction d'adaptation de tension, mais ça va plus loin que ça. En fait si tu détailles la doc, tu verras que le chip permet aussi d'avoir des signaux d'horloges différents, et donc de faire cohabiter des circuits plus ou moins évolués (100 kHz, 400 kHz).

Pour les résistances...comme tu te retrouves en fait avec deux bus disjoints, tu as besoin de deux jeux de pull-up : un par bus. Donc un d'un côté (slave), et un jeu du côté master, commun à tous tes devices qui y sont interconnectés.

En alliant ce type de circuit + câble blindé de bonne qualité (capacitance) + dimensionnement correcte des pull-up + éventuellement adaptation de la fréquence à moins de 100 kHz pour repousser les limites, tu ne dois pas rencontrer de problème si j'en crois ce que je lis ici et là.

Mais encore une fois, je n'en suis pas encore arrivé à la phase opérationnelle. Je commence mes tests avec deux 16F690 reliés entre eux par 20 cm de câble et deux résistances sur plaque d'essai. ;)

jC_Omega
Rang "6 LEDs"
Rang "6 LEDs"
Messages : 904
Enregistré le : 10 août 2008, 09:45
Contact :

Re: Choisir la résistance de PULL UP pour un bus I2C

Message non lu par jC_Omega »

effectivement ca peut être pas mal alors comme CI.
il est cher?

il en faut juste 1 par bus? Genre si il y a un maitre et 10 esclaves
Mes projets perso :
Image

AmadeusHF
Rang "3 LEDs"
Rang "3 LEDs"
Messages : 127
Enregistré le : 03 août 2009, 09:18

Re: Choisir la résistance de PULL UP pour un bus I2C

Message non lu par AmadeusHF »

Sur Farnell il est vendu 93 cts d'€ HT la pièce...ça vaut pas le coup de s'en priver. Dans mon cas il va m'en falloir 4 : un par spot, car j'ai trop de longueur de cable et je dois isoler chaque esclave indépendamment des autres.

jC_Omega
Rang "6 LEDs"
Rang "6 LEDs"
Messages : 904
Enregistré le : 10 août 2008, 09:45
Contact :

Re: Choisir la résistance de PULL UP pour un bus I2C

Message non lu par jC_Omega »

tiens dit moi.

je commande tout les jours au boulot chez farnell , mais a titre professionnel.

Quand on est particulier, peut t'on commander? si oui, il y a t'il un minimun d'achat? une majoration sur les prix? des frais de ports très cher?

moi je recherche un fournisseur pour des PIC spéciaux (genre 18LF, ou PIC 24HJ), et autre compo nouveaux
Mes projets perso :
Image

AmadeusHF
Rang "3 LEDs"
Rang "3 LEDs"
Messages : 127
Enregistré le : 03 août 2009, 09:18

Re: Choisir la résistance de PULL UP pour un bus I2C

Message non lu par AmadeusHF »

Y a deux conséquences à la commande de particulier :

=> Comme tu as pas de "compte société", tu dois payer en CB, et ils facturent 12€ (HT) de frais de port par UPS systématiquement.

=> Pour la même raison (absence de compte société), tu ne peux pas commander les composants stockés aux US (gamme étendue). Pour ces derniers, un compte société est impératif.

Pour les PICs, ben tu peux aussi directement les acheter chez Microchip, sur microchipdirect, si tu cherches des modèles vraiment spéciaux.

Répondre