Forum: Mikrocontroller und Digitale Elektronik STM32F3 SmBus Hal


von Chris (Gast)


Angehängte Dateien:

Lesenswert?

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:
1
  uint8_t foo = 8;
2
  
3
  while (1)
4
  {
5
  /* USER CODE END WHILE */
6
      HAL_GPIO_TogglePin(GPIOE_BASE, (1<<8));
7
    HAL_SMBUS_Master_Transmit_IT(&hsmbus1, 22<<1, &foo, 1, 0);
8
9
10
    int i = 0;
11
    while(i++ < 2770);
12
  /* USER CODE BEGIN 3 */
13
  }

Main Slave:
1
  uint8_t foo;
2
  
3
  while (1)
4
  {
5
  /* USER CODE END WHILE */
6
      HAL_GPIO_TogglePin(GPIOE_BASE, (1<<8));
7
    HAL_SMBUS_Slave_Receive_IT(&hsmbus1, &foo, 1, 0);
8
9
10
11
    int i = 0;
12
    while(i++ < 2770);
13
  /* USER CODE BEGIN 3 */
14
  }

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

von Michael M. (eos400dman)


Lesenswert?

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

von Chris (Gast)


Lesenswert?

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

von Little B. (lil-b)


Lesenswert?

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.

von Chris (Gast)


Lesenswert?

Ich verwende keine externen Pullups. Es werden nur die Internen vom 
uController verwendet. Die meines Wissens einen Wert von 47k Ohm 
besitzen.

von Michael M. (eos400dman)


Lesenswert?

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...

von Little B. (lil-b)


Lesenswert?

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.

von Programmierer (Gast)


Lesenswert?

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

von Chris (Gast)


Lesenswert?

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

von Chris (Gast)


Angehängte Dateien:

Lesenswert?

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.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.