Le bus I2C - En résumé
Un condensé du bus I2C
A votre avis, quelle est la partie la plus importante de ce projet ?
Moi, je crois bien qu'il s'agisse du bus, il faut en prendre soin, car ce médium fera la pluie et le beau temps. C'est quand même de lui que dépendra la qualité de la transmission et donc la vitesse des modules.
Introduction :
Sans vouloir aller trop loin dans le développement de ce sujet, je vais me contenter dans cette section d'en faire resortir les éléments essentiels, les problèmes trouvé, les trucs à mettre en évidence, etc...
n ce qui concerne la spécification du bus, y'a la doc de PhilipsDocument doc/i2c/I2C_BUS_SPECIFICATION_3.zip not found!(Janvier 2000)
Les vitesses autorisées :
- Standard à 100 Kbit/s
- Fast à 400 Kbit/s
- High Speed à 3.4 Mbit/s
Mais faut pas trop ce faire d'illusion, la plupart des modules travaillent en mode Standard, ce qui est souvent suffisant.
Quelques petits conseils :
-
Evitez d'utiliser du câble téléphonique, les inductions risqueraient de détruire les modules présents sur la ligne.
-
Utilisez du câble blindé de catégorie 5 ou même 6 (les paires y sont blindées séparément).
-
Mettre le SCL et VSS sur une paire, SDA et VSS ou VDD (selon le choix d'une alimentation incluse) sur autre paire.
-
Ne pas oublier les résistances de rappel Rp, pour limiter la capacitance du câble.
-
Ne pas effectuer de dérivation en Y, ça perturberait les transmissions par retour d'ondes.
-
Respecter au maximum le blindage des lignes.
L'utilisation du bus :
Le plus grand problème sur ce bus, c'est de lutter contre deux facteurs dégradant la qualité.
-
La capacité du bus (limité à 400 pF). Solution : Rp ou résistance de rappel (Pull-Up)
-
Les piques de tensions produit par induction. Solution : Rs ou résistance de protection
Dans le cas où la capacité du bus dépasserais cette valeur de 400 pF (modules inclu), il est nécessaire d'utiliser une puce qui aura pour effet d'augmenter son impédance. (voir section Haute Impédance)

L'utilisation en mode Normal :
Généralement, ce bus est utilisé dans des téléviseurs, magnétoscopes, récepteur satellite, voiture, etc...
Donc, on a pas trop de problèmes avec la longueur du cable, qui dépasse rarement quelques mètres.
Mais il faut toutefois faire attention de pas dépasser ce seuil de 400 pF (Environ 20pF par module + celui du cablage)
La principale difficulté, si cela en est une, c'est le calcul des résistances Rs et Rp.
Pour le calcul de Rp, c'est assez simple et très bien expliquer sur la doc du 82B715
(96 KB)((Page 7)
Pour le calcul de Rs, c'est moins facile et là, faut se référer à la doc du Bus
(280 KB) (Page 40)
Au final, le plus dur c'est de connaitre la capacité du cable, car celle des modules est indiqué sur sa documentation, j'essayerais d'éclaircir ce point dans mes prochaines mise à jour de cette page.
Sinon, on branche et normalement :-) çà marche.
L'utilisation en Haute Impédance :
Au dessus de quelques mètres de câble, quand le seuil de 400 pF est dépassé (modules inclu), il faut utilisé un composant spécifique permettant de relier deux points distant.
Semblable à l'utilisation d'un modem, un composant dédier vient effectuer cette tâche, permettant ainsi d'augmenter par 10 son impédance.
-
Son branchement ne peux pas être plus simple (2 entrées, 2 sorties, une alimentation)

On retrouve sur ce schéma, deux résistances de tirage (Pull-up), celle-ci se calcul très simplement
(voir page 7 de la doc du 82B715)
Quelques bonnes adresses utiles :
Pour plus de détails voici deux fichiers important donnant toutes les adresses des modules
Par adresse
(18 KB) Par allocation
(18 KB)
| Nom | Fonction | Adresse | ||||||
|---|---|---|---|---|---|---|---|---|
| A6 | A5 | A4 | A3 | A2 | A1 | A0 | ||
| ... | Adresse de communication générale | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| ... | Adresses Réservées | 0 | 0 | 0 | 0 | X | X | X |
| ... | Octet de poids fort en adressage 10 bits | 1 | 1 | 1 | 1 | 1 | A9 | A8 |
| PCD3311/12 | Générateur de tonalité (DTMF, modem, musique) | 0 | 1 | 0 | 0 | 1 | 0 | A0 |
| PCF8200 | Synthétiseur de paroles | 0 | 0 | 1 | 0 | 0 | 0 | 0 |
| PCF8566 | Commande d'affichage LCD universelle | 0 | 1 | 1 | 1 | 1 | 1 | A0 |
| PCF8570 | RAM statique (256x8) | 1 | 0 | 1 | 0 | A2 | A1 | A0 |
| PCF8571 | RAM statique (128x8) | 1 | 0 | 1 | 1 | A2 | A1 | A0 |
| PCF8572 | EEPROM (128x8) | 1 | 0 | 1 | 0 | A2 | A1 | A0 |
| PCF8573 | Horloge tps réel / Calendrier | 1 | 1 | 0 | 1 | 0 | A1 | A0 |
| PCF8574 | Port d'E/S 8bits | 0 | 1 | 0 | 0 | A2 | A1 | A0 |
| PCF8574A | Port d'E/S 8bits | 0 | 1 | 1 | 1 | A2 | A1 | A0 |
| PCF8576 | Commande d'affichage LCD universelle | 0 | 1 | 1 | 1 | 0 | 0 | A0 |
| PCF8577 | Commande d'affichage LCD à 64 segments | 0 | 1 | 1 | 1 | 0 | 1 | 0 |
| PCF8577A | Commande d'affichage LCD à 64 segments | 0 | 1 | 1 | 1 | 0 | 1 | 1 |
| PCF8578 | Commande d'affichage matricielle LCD | 0 | 1 | 1 | 1 | 1 | 0 | A0 |
| PCF8579 | Commande d'affichage matricielle LCD | 0 | 1 | 1 | 1 | 1 | 0 | A0 |
| PCF8582A | EEPROM (256x8) | 1 | 0 | 1 | 0 | A2 | A1 | A0 |
| PCF8583 | Horloge / Calendrier avec RAM statique | 1 | 0 | 1 | 0 | 0 | 0 | A0 |
| PCF8591 | Convertisseur A/N et N/A 8 bits | 1 | 0 | 0 | 1 | A2 | A1 | A0 |
| SAA1064 | Commande de LED à 4 chiffres | 0 | 1 | 1 | 1 | 0 | A1 | A0 |
| SAA1136 | Interface audio PCM | 0 | 0 | 1 | 1 | 1 | 1 | 0 |
| SAA1300 | Circuit de commutation pour récepteur | 0 | 1 | 0 | 0 | 0 | A1 | A0 |
| SAA3028 | Transcodeur IR (RC-5) | 0 | 1 | 0 | 0 | 1 | 1 | 0 |
| SAA4700 | Processeur de ligne de donnée VPS | 0 | 0 | 1 | 0 | 0 | 0 | A0 |
| SAA5243/45 | Décodeur vidéo texte | 0 | 0 | 1 | 0 | 0 | 0 | 1 |
| SAA9020 | Contrôleur de mémoire | 0 | 0 | 1 | 0 | 1 | A1 | A0 |
| SAA9050/51 | Décodeur télévision numérique multi-standart | 1 | 0 | 0 | 0 | 1 | 0 | 1 |
| SAA9055P/8A | Décodeur télévision numérique SECAM | 1 | 0 | 0 | 0 | 1 | 0 | 1 |
| SAA9055P/8E | Décodeur télévision numérique SECAM | 1 | 0 | 0 | 0 | 1 | 1 | 1 |
| SAA9062/63/64 | Commande de déviation | 1 | 0 | 0 | 0 | 1 | 1 | 0 |
| SAA9068 | Commande d'incrustation d'image dans l'image | 0 | 0 | 1 | 0 | 0 | 1 | A0 |
| SAB3035/36/37 | Syntonisateur TV | 1 | 1 | 0 | 0 | 0 | A1 | A0 |
| SAF1135 | Décodeur de ligne de données | 0 | 0 | 1 | 0 | 0 | A1 | A0 |
| ST24C02 | EEPROM (256x8) | . | . | . | . | A2 | A1 | A0 |
| ST24C04 | EEPROM (512x8) | . | . | . | . | A2 | A1 | A0 |
| ST24C08 | EEPROM (1024x8) | . | . | . | . | A2 | A1 | A0 |
| TDA8370 | Processeur de synchronisation pour TV | 1 | 0 | 0 | 0 | 1 | 0 | 0 |
| TDA8400 | Interface pour prédiviseur/synthétiseur | 1 | 1 | 0 | 0 | 0 | A1 | A0 |
| TDA8405 | Pocesseur de son stéréo pour TV | 1 | 0 | 0 | 0 | 0 | 1 | 0 |
| TDA8420/21 | Processeur audio stéréo | 1 | 0 | 0 | 0 | 0 | 0 | A0 |
| TDA8425 | Processeur audio stéréo | 1 | 0 | 0 | 0 | 0 | 0 | 1 |
| TDA8440 | Commutateur audio/vidéo | 1 | 0 | 0 | 1 | A2 | A1 | A0 |
| TDA8442 | Interface pour décodeur de couleurs | 1 | 0 | 0 | 0 | 1 | 0 | 0 |
| TDA8443A | Interface YUV/RGB | 1 | 1 | 0 | 1 | A2 | A1 | A0 |
| TDA8444 | Octuple convertisseur N/A 6bits | 0 | 1 | 0 | 0 | A2 | A1 | A0 |
| TDA8461 | Décodeur PAL/NTSC | 1 | 0 | 0 | 0 | 1 | 0 | A0 |
| TEA6000 | Syntonisateur FM/FI | 1 | 1 | 0 | 0 | 0 | 0 | 1 |
| TEA6300T/10T | Commande de volume/tonalité | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
| TEA6330 | Ampli de régulation | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
| TEA6360 | Egaliseur | 1 | 0 | 0 | 0 | 0 | 1 | A0 |
| TSA5510(T) | Synthétiseur de fréquence 1,3 GHz | 1 | 1 | 0 | 0 | 0 | A1 | A0 |
| TSA6057(T) | Synthétiseur de fréquence à PLL | 1 | 1 | 0 | 0 | 0 | 1 | A0 |
| UMA1000T | Processeur pour téléphone sans fil | 1 | 1 | 0 | 1 | 1 | A1 | A0 |
| UMA1010T | Synthétiseur universel pour télécommunication | 1 | 1 | 0 | 0 | 0 | 0 | A0 |








