Réalisations à base de microcontoleurs  

Programmation sur PC  

Réalisations diverses  

Etudes actuelles  

Expériences  

Etudes parallèles  

Lectures intéressantes  

Divers  

Projets avortés  

Thèmes obsolètes  

Mise à Jour  
Espion I2C

 
Pourquoi?
 
Après maints essais avec la réalisation

carte On Screen Display utilisant le circuit OSD STV 9426, celui-ci semblait ne pas réagir aux commandes I2C envoyés par le PIC 16F876.
Je mettais normalement en doute le dialogue I2C.
Est-ce le PIC qui pose problème en écriture ou en lecture ? idem pour le circuit OSD ? sans compter les difficultés pour visualiser les trames I2C…
Seul l'analyseur logique m'a permis de vérifier les véritables transactions et de bien mettre en doute le circuit OSD 9426 et non le PIC (Hard + soft).
L'analyseur logique étant un appareil de mesures que l'on se procure généralement chez l'employeur, j'ai donc opté pour la réalisation d'un espion I2C maison (de plus, cela fait quelques années que ce projet m'intéressait).
 
Remarques:
- J'ai cherché en vain sur le net (mal, peut être !) une réalisation d'internaute sur le sujet : Spy I2C ou sniffer I2C, et je profite de cette phrase pour attirer le plus grand nombre de Ouaibe - papillonneur qui désire réaliser un espion I2C (identique au mien ?).
- Vous ne trouverez pas dans cette page des explications sur le protocole I2C, d'autres l'ont déjà fait. Je ne peux que vous indiquer des liens:

Tavernier Ch., Bouget M.

(1) et

(2),

Weiss J.

 
Contraintes:
 
La carte espion I2C devait :
- Avoir peu de composants.
- Etre alimenté par le montage à espionner.
- Etre une petite réalisation programmable afin de la faire évoluer par moi ou d'autres.
- Travailler en liaison série classique (l'USB, plus tard ! voire par d'autres…)
- Utiliser le logiciel Hyperterminal sur PC afin d'éviter de s'en créer un.
 
Choix:
 
Du fait que je bidouille sur les PICs, mon choix s'est vite arrêté sur le PIC 16F628 car:
Il a suffisamment de broches pour cette application.
Il a un port série intégré qui évite au soft de le faire et qui peut permettre de faire 2 choses à la fois.
Il a 2 kmots de mémoire programme qui suffisent actuellement et qui devrait permettre de faire évoluer cette réalisation par des améliorations ou par l'ajout de nouvelles fonctionnalités.
Il peut travailler avec un quartz de 20 MHz qui peut s'avérer un peu juste pour certaines fréquences d'horloge SCL d'I2C.
Sur le 16F628, j'utilise 3 ports :
- SDA sur RB5 et SCL sur RB0 et RA4.
- RB5 déclenchera le drapeau RBIF (changement d'état).
- RB0 déclenchera le drapeau INTF (déclenchement sur front) et RA4 incrémentera le compteur interneTMR0.
Voir programme

snif_628.c
pour le complément d'informations joint au projet global.
Il n'y a pas de traitement d'interruption sur l'analyse de trames I2C car le PIC perdrait du temps pour sauver ces registres, je n'utilise que les drapeaux (flags) de changements d'état ou front.
La seule interruption autorisée est celle de la liaison série, uniquement lorsque la transaction I2C est terminée. Elle sert à vider le tampon (buffer) de données capturées.
 
Pour casser un peu cette page d'écriture, le schéma est donc:


 
Réalisation:
 


 
Pour la partie matérielle, pas de piège particulier si ce n'est que les condensateurs de 100nF C2, C3 sont des composants CMS sous les circuits intégrés.
Existence d'un micro-switch pour générer un Reset, au cas où...
Existence du connecteur de programmation ICSP maison...Je risque de programmer le PIC 16F628 quelques fois!
L'alimentation de la réalisation aurait pu être plus simple en utilisant une diode de protection d'inversion de polarité, mais j'ai préféré mettre un indicateur lumineux (D3) indiquant cette inversion. De plus, j'utilise une zener de 5,1V (D1), toujours dans le soucis d'erreur de branchement sur une alimentation plus élevé que 5V.
Pour les signaux SDA, SCL et +5V, j'utilise un connecteur jack de 3,5 mm à 3 contacts (prise audio casque stéréo) et le 0V a un autre câble séparé. J'ai préféré joindre le +5V avec SDA et SCL car ces 3 signaux ne sont jamais bien loin dans une platine électronique.
 


 
Améliorations:
 
Tout est perfectible, je rajoute donc quelques fonctionnalités qui peuvent s'avérer utile (non encore faîtes):
- Mesure de la fréquence d'horloge SCL I2C.
- Possibilité d'écrire sur le bus I2C.
- Déclenchement programmable de scanning de la trame I2C (choix du nombre de START avant analyse).
- Configuration liaison série modifiable.

 
Coopérations!
 
Ne cherchant aucun profit (si ce n'est intellectuel), je joint le maximum de documents ayant permis la réalisation de cet

espion I2C :
- Le fichier Hex à télécharger sur le PIC pour travailler rapidement.
- Le source en C écrit sous CCS compiler pour ceux qui veulent le comprendre et l'améliorer.
- Le schéma + typon pour la réalisation.
Pour ceux qui veulent perfectionner cette réalisation, j'indiquerai sur cette page les nouvelles fonctionnalités et s'ils le veulent, le nom des intervenants.