Hallo Zusammen,
ich hätte eine Frage bezüglich der Programmierung einer Kommunikation
zwischen Master und Slave. Wenn ich nur den Master am Oszi betrachte
sendet dieser Daten. Doch ab dem Zeitpunkt wo ich den Slave hinzufüge
sehe ich keine Kommunikation auf dem Bus vom Master zum Slave.
Das Ganze Programm habe ich mit Hilfe von CubeMX und CooCox erstellt.
Ich habe im CubeMx dem Slave die Adresse 22 zugewiesen. Außerdem
verwende ich zur Kommunikation zwei Stm32F3 Discovery Boards.
Main Master:
Der Screenshot (scope_0) im Anhang zeigt die Kommunikation auf dem
SmBus, wenn nur der Master aktiv ist.
Nach dem Hinzufügen des Slaves passiert einmalig, die im Screenshot
(scope_1) gezeigte Situation nach dieser Aktion bleibt der Bus dann der
Situation, die im Screenshot (Scope_2) gezeigt wird stehen.
Hättet Ihr eine Idee wie man so eine Kommunikation lauffähig bekommt ?
Vielen im Voraus.
Mit freundlichen Grüßen,
Chris
Hallo,
wodurch entstehen die Spannungseinbrüche bei U_batt, wird da irgendetwas
kurzgeschlossen? Sieht für mich so auf die schnelle verdächtig aus?!
Viele Grüße Michael
Hallo,
Danke für die schnelle Antwort. Das sind keine Spannungseinbrüche von
U_bat in Wirklichkeit wird hier nur ein Pin getoggelt. Ich habe das
Signal bloß noch nicht im Oszi umbenannt.
Viele Grüße,
Chris
Mir scheint es, dass die PullUps an deinen Signalen zu groß sind.
Ob die Software stimmt, kann ich dir nicht sagen, da ich nicht mit HAL
arbeite, sondern BareMetal. Fakt ist jedoch, dass der I2C im STM32 sehr
frickelig ist und viel software overhead erzeugt.
Michael M. schrieb:> Chris schrieb:>> Wert von 47k Ohm>> Das wird deutlich zu hoch sein, erklärt auch die recht "unschönen"> Kurven. Versuchs mal eher mit 4,7k...
47k sind definitiv zu viel!
I2C arbeitet mit 1k bis 10k.
3,3k oder 4,7k sind da die beste Wahl.
Little B. schrieb:> Fakt ist jedoch, dass der I2C im STM32 sehr frickelig ist und viel> software overhead erzeugt.
Zum Glück nur auf den alten STM32, bei dem neuen, zu denen auch der F3
gehört, ist das sehr freundlich.
Zeig mal das letzte Datenpaket in höherer Auflösung, insbesondere da wo
es stecken bleibt.
Ansonsten rate ich auch dringend zu 4,7kΩ PullUps
Ok danke für diese Info.
Ich hatte leider keinen 4,7k Ohm Widerstand, deswegen habe ich jetzt
einen 6,8k Ohm Widerstand verwendet. Dies führt jedoch zu keiner
Verbesserung des Signals es sieht immer noch gleich aus.
Viele Grüße
Programmierer schrieb:> Little B. schrieb:>> Fakt ist jedoch, dass der I2C im STM32 sehr frickelig ist und viel>> software overhead erzeugt.> Zum Glück nur auf den alten STM32, bei dem neuen, zu denen auch der F3> gehört, ist das sehr freundlich.>> Zeig mal das letzte Datenpaket in höherer Auflösung, insbesondere da wo> es stecken bleibt.> Ansonsten rate ich auch dringend zu 4,7kΩ PullUps
Hier die zwei Pakete, die in scope_1 zu sehen sind in größerer
Auflösung.