Calculs de résistance de rappel I2C

10

J'essaie de piloter cet écran LCD I2C avec un microcontrôleur ATxmega16A4U .

Les deux appareils sont répertoriés pour fonctionner avec des fréquences d'horloge I2C jusqu'à 400 kHz. Les deux appareils sont les seuls appareils sur le bus I2C.

Cependant, l'élaboration des calculs pour les bornes de la résistance de pull-up donne des valeurs assez étranges.

Calcul de la valeur de résistance de pullup minimale I2C:

Rmin=Vcc0.43mA=966.7Ω

En regardant les fiches techniques uC, à la page 92, la capacité d'entrée maximale des broches de 10pF est répertoriée.

Cependant pour l'écran LCD, il a à la page 8 quelque chose appelé le Capacitive load represent by each bus lineCb, et est répertorié à une valeur maximale de 400pF. Je suppose que je devrais simplement ajouter cette valeur à la capacité d'entrée de 10pF uC, mais cela semble vraiment élevé et les calculs sont loufoques.

Par exemple, lorsque j'essaie de calculer la valeur maximale de la résistance de pullup pour une horloge à 400 kHz:

Rmax=300ns10pF+400pF=731.7Ω

Suis-je en train de mal interpréter la fiche technique de l'écran LCD? De toute évidence, la valeur de résistance de pullup maximale autorisée ne peut pas être inférieure à la valeur minimale autorisée.

de même, si j'assume une capacité de bus nette maximale de 400pF, j'obtiens:

Rmax=300ns400pF=750Ω

toujours sous la valeur maximale autorisée.

helloworld922
la source

Réponses:

11

Il y a une faute de frappe dans la fiche technique d'Atmel, le temps de montée pour le boîtier 100 kHz doit être de 1000 ns, pas de 100 ns (il ne devrait pas être inférieur au cas de 400 kHz de 300 ns), vous obtenez alors:

1us400pF=2.5kΩ

La fiche technique LCD (presque certainement) signifie la capacité maximale du bus, pas la capacité qu'elle ajoute au bus. Il ajoute probablement environ 10pF. Vous pouvez soit vérifier avec un compteur LCR ou simplement le configurer avec une résistance 2k et regarder les temps de montée.

De nombreux appareils ne sont pas entièrement conformes aux spécifications officielles de 400 kHz , il est donc préférable de s'y référer pour comprendre les conditions dans lesquelles le 400 kHz peut fonctionner (capacité du bus, pullup / source de courant / etc.) Voir la section 6 en particulier (par exemple, voir note 4 de la page 47:

[4] Pour piloter la pleine charge du bus à 400 kHz, une LIO 6 mA est requise à 0,6 V VOL. Les pièces ne répondant pas à cette spécification peuvent toujours fonctionner, mais pas à 400 kHz et 400 pF)

Plus loin, ces tableaux sont assez utiles et cherchent à être en accord avec vos calculs:

Pullups I2C

Oli Glaser
la source
Oui, je le remarque sur la fiche technique. un signal à 400 kHz devrait avoir un temps de montée plus court qu'un signal à 100 kHz: D
helloworld922
1

Votre calcul est logique. Il y a un calcul similaire dans cette note d'application TI (section 4.1) . Notez qu'ils utilisent V cc = 1,8 V pour calculer R min .

Il est concevable que le C b soit la capacité maximale du bus avec laquelle l'écran LCD peut fonctionner, et non la capacité que l'écran LCD ajoute au bus. Vous pouvez tester la capacité des entrées I 2 C en mesurant leur constante RC. Cela fournirait le contrôle d'intégrité d'ordre de grandeur.

Nick Alexeev
la source