Forum: Mikrocontroller und Digitale Elektronik STM32F105/7 dual CAN master/slave


von Bernd (Gast)


Lesenswert?

Hallo zusammen,

der STM32F105/7 aus der Connectivity Line hat 2 CAN Interfaces.
Im Reference Manual steht ein Hinweis der CAN1 als Master und CAN2 als 
Slave bezeichnet.
Außerdem steht dort folgender Text:
1
Dual CAN
2
• CAN1: Master bxCAN for managing the communication between a Slave bxCAN and
3
the 512-byte SRAM memory
4
• CAN2: Slave bxCAN, with no direct access to the SRAM memory.
5
• The two bxCAN cells share the 512-byte SRAM memory (see Figure 222: Dual CAN
6
block diagram (connectivity devices))
7
Note: In low, medium-, high- and XL-density devices the USB and CAN share a dedicated 512-
8
byte SRAM memory for data transmission and reception, and so they cannot be used
9
concurrently (the shared SRAM is accessed through CAN and USB exclusively).

Ich habe dazu folgende Fragen:
 - Was hat es mit diesem dedizierten RAM auf sich?
 - Inwieweit schränkt mich das bei CAN2 ein?
Der interne BL kann auch über CAN2 erreicht werden, was als Fallback 
recht interessant sein kann.
Danke.

Gruß
Bernd

von Stefan K. (stefan64)


Lesenswert?

Ich kenne das vom STM32F2xx, aber ich denke, beim STM32F1xx ist das das 
Gleiche:

Um CAN2 zu benutzen, musst Du sowohl für CAN1 als auch für CAN2 die 
clock einschalten, weil CAN2 Teile der Hardware von CAN1 benutzt (z.B. 
das gemeinsame RAM).

Ansonsten kannst Du beide CAN Schnittstellen gleichwertig benutzen.

Viele Grüße, Stefan

von Stefan K. (stefan64)


Lesenswert?

Bernd schrieb:
> - Was hat es mit diesem dedizierten RAM auf sich?

In diesem RAM sind die TX- und RX-Buffer beider CAN-Schnittstellen oder 
alternativ des USB untergebracht.


Gruß Stefan

von Bernd (Gast)


Lesenswert?

Danke für die Antwort.
Da steht ja das sich beide Schnittstellen das RAM teilen, CAN2 aber 
keinen direkten Zugriff hat. Das ist etwas verwirrend.
Also ist es außer bei hohen Stromsparanforderungen kein Problem?
Das wäre gut!

von Felix U. (ubfx)


Lesenswert?

Der Kern der Aussage ist, dass du CAN2 nicht verwenden kannst, ohne CAN1 
aktiviert zu haben. Außerdem hat CAN2 iirc auch keine eigenen 
interrupts.

von Stefan K. (stefan64)


Lesenswert?

Bernd schrieb:
> Also ist es außer bei hohen Stromsparanforderungen kein Problem?

Ja.

Viele Grüße, Stefan

von Bernd (Gast)


Lesenswert?

Danke.
Die Begriffe Master und Slave sind dann zusätzlich verwirrend (z.B. im 
Hinblick auf die Begrifflichkeiten bei CANopen).

von Bernd (Gast)


Lesenswert?

Felix U. schrieb:
> Außerdem hat CAN2 iirc auch keine eigenen
> interrupts.

Ist das wirklich so?
Ich meine es gibt eigene IRQs für CAN2.

von Bernd (Gast)


Lesenswert?

Aus startup_stm32f10x_cl.c:
1
void WEAK  CAN2_TX_IRQHandler(void);
2
void WEAK  CAN2_RX0_IRQHandler(void);
3
void WEAK  CAN2_RX1_IRQHandler(void);
4
void WEAK  CAN2_SCE_IRQHandler(void);

von Felix U. (ubfx)


Lesenswert?

Sorry, das hatte ich falsch in Erinnerung!

von Bernd (Gast)


Lesenswert?

Kein Problem ;-)
Danke für eure Hilfe!

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.