STM32F3 SmBus Hal

Gast #4315300
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
Angehängte Dateien:
Gast #4315317
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
Gast #4315370
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
Gast #4315376
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
Gast #4315394
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.
Angehängte Dateien:

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren