Bonjour,
J'aurais besoin d'avis sur le comportement d'un bus I2C. Je travaille sur une carte qui possède ce bus qui comprend:
- un uC maitre, freescale MC9S08QE16
- un capteur de température AD7414
- un capteur de lumière ISL29023
- une EEPROM M24128
- un potentiomètre numérique ISL22326
Le bus tourne à 225KHz, les pull-up sont de 2k2. La distance max entre le maître et un esclave est de 9-10cm sur la carte.
La carte est alimentée par une alimentation Meanwell LPV-60-12. Le 12V fournie par cette alimentation est ensuite ramené à du 3V3 par un LM2674ADJ qui alimentent tous les composants cités au dessus.Il y a d'autres choses sur la cartes (LEDs, 2 srégulateurs découpage, driver RS485..).
Le bus fonctionne tel que:
- au démarrage il y a une communication avec chacun des composants (1 fois).
- puis le capteur analyse périodiquement la température et la luminosité, tous les 5s et 2s respectivement. (sans mise en sommeil)
Mon problème est que lors de ces communications il y a des perturbations qui se passent:
- lors des changement de front sur SDA, ça se répercute sur le SCL.
- lors des changement de front sur SCL, ça se répercute sur le SDA.
- lorsque SCL ou SDA commute ça se répercute sur les alimentations (3V3, les 2 autres régulateurs découpage, le 12V)
Je joins des screenshots oscillo:
-on peut voir les SDA, SCL, 12V (en entrée de carte donc) et 3V3 (en sortie de régulateur et aux bornes de l'AD7414).
J'ai l'impression que chaque commutation de SDA ou SCL se répercutent partout sur la carte. J'ai 2 autres régulateurs à découpage sur la carte qui n'alimentent que des Leds
qui sont aussi perturbés.(On voit aussi les même parasites). I2C à 50KHz, le problème est le même.
Questions:
- C'est parasites peuvent-ils être dû à des couplages entre les lignes?
- J'ai de temps à autres le AD7414 qui n'envoie pas son ACK sur le 9ème coup de clock lorsque l'on communique avec, est-il possible que ce soit dû à tous ces parasites?
Merci,
Samuel
-----