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