Ich habe eine Leiterplatte mit einigen Sensoren ( Kreisel , Beschleunigungsmesser usw.) entworfen, die das I2C-Protokoll zur Kommunikation verwenden. Wenn ich jedoch einen Arduino UNO als Master verwende, kann ich die Wellenform sowohl des SDA-Busses als auch des SCL-Busses nicht sehen. Sie bleiben bei ~400 mV statisch, wenn sie mit einem Oszilloskop gemessen werden. Wenn ich ein anderes Board (wie dieses ) mit demselben Testset verwende, kann ich die von SDA und SCL erzeugte Wellenform deutlich sehen
Normalerweise bedeutet dies entweder, dass etwas kurzgeschlossen ist, aber ich habe kein Problem gesehen, als ich mit einem Multimeter die Kontinuität aller Vias für SCL, SDA, VDD und GND überprüft habe. Der Widerstand zwischen SCL/SDA und GND beträgt ~1M Ohm.
Es könnte auch sein, dass die Pullup-Widerstände am I2C-Bus fehlen, aber ich habe für jeden I2C-Bus einen 4,7kOhm Pullup-Widerstand verwendet. Ich habe auch versucht, den Widerstand zu verringern, indem ich ein parallel geschaltetes Potentiometer anschloss. Die Spannung von SCL/SDA steigt mit abnehmendem Widerstand, aber es gibt überhaupt keine Wellenform.
Es gibt tatsächlich 3 I2C-Leitungen auf der Platine, um widersprüchliche I2C-Adressen zu vermeiden, und keine davon funktioniert. Die einfachste Linie enthält nur einen Kreisel und einen eCompass. Die Schaltpläne sind unten:
Die vollständigen EAGLE-Schaltpläne und Board-Dateien finden Sie hier .
Es gibt mehrere Probleme mit Ihrem Design.
Schema:
Die erste davon reicht wahrscheinlich aus, um das Problem zu verursachen.
Leiterplatte:
Sehr enge 5-mil-Abstände überall und Spuren, die den Durchkontaktierungen sehr nahe kommen. Es könnte zwar funktionieren, wenn es von einem guten Fabrikat hergestellt wird, dies erfordert jedoch Ärger und einen versehentlichen Kurzschluss irgendwo. Sie brauchen nicht einmal so enge Abstände für dieses Board, also machen Sie es den Fabs leicht :)
Die Spuren sind auch sehr dünn – das ist für das Signal in Ordnung, aber stellen Sie sicher, dass Ihre Stromspuren, einschließlich derjenigen zu den Entkopplungskappen, etwas dicker sind. Kurze Leistungsspuren können 10 mil betragen, versuchen Sie, mehr für lange zu verwenden.
Ich würde vorschlagen, zuerst Ihren Schaltplan aufzuräumen. Verwenden Sie zur Verdeutlichung die Stromversorgungssymbole (z. B. +3V3, +5V usw.) anstelle von Netzkennzeichnungen. Verwenden Sie durchgehend den gerahmten und spitzen Typ von Netzetiketten ("Xref"-Kontrollkästchen im Eigenschaftsdialogfeld) und stellen Sie sicher, dass es offensichtlich ist, mit welchem Kabel sie verbunden sind (das Etikett darf nicht vom Kabel versetzt sein).
Wenn das erledigt ist, überprüfen Sie alles auf mögliche Fehler. Gehen Sie jedes Datenblatt durch, rufen Sie den Abschnitt "Pin-Konfiguration und -Funktion" auf und überprüfen Sie den Schaltplan Pin für Pin und überprüfen Sie auch die zulässigen Spannungen. Wiederholen Sie dann Ihre Leiterplatte mit etwas großzügigeren Abständen und stellen Sie sicher, dass keine DRC-Verletzungen vorliegen.
Edelstahlratte
Kevin Weiß
Jay
Benutzer295069
Nur ich
Edelstahlratte
NSturm
Benutzer295069
Lars Peterson
Ilja
DamienD
DamienD
DamienD
DamienD