Forum: Mikrocontroller und Digitale Elektronik RPi - CANbus - STM32F303K8


von supo (Gast)


Lesenswert?

Hi,

und zwar möchte ich ein STM32F303K8 Nucleo Board mit einem PRi 
(+CANShield, mit SocketCAN) über CANBus verbinden.
Das STM32F303K8 Board benötigt ja noch einen CAN transceiver (MCP2551), 
richtig?
Mein "modifizierter" RPi hat einen 24V Ausgang.
Dann benötige man 1x Kabel mit CANH, CANL, 24V Grd.
Die 24V würde ich dann auch gerne als Stromversorgung für den 
STM32F303k8 nutzen. Dieser kann soweit ich weiß (jumper entfernen 
etc.)über einen 5V Vin-Pin betrieben werden. Geht das einfach mit einem 
LDO Spannungsregler wie z.B. 
https://de.rs-online.com/web/p/ldo-spannungsregler/9101950/
?
Viel Leistung zieht der STM32 ja nicht. Der Kühlkörper + Platine sollte 
ausreichen(?).

Möchte nur sicher gehen dass es funktioniert, bevor ich mir die Teile 
bestelle.

Danke.

von bastler (Gast)


Lesenswert?

supo schrieb:
> Hi,
>
> und zwar möchte ich ein STM32F303K8 Nucleo Board mit einem PRi
> (+CANShield, mit SocketCAN) über CANBus verbinden.
> Das STM32F303K8 Board benötigt ja noch einen CAN transceiver (MCP2551),
> richtig?

Sollte gehen, braucht aber 5V.

> Mein "modifizierter" RPi hat einen 24V Ausgang. Dann benötige man 1x
> Kabel mit CANH, CANL, 24V Grd.
> Die 24V würde ich dann auch gerne als Stromversorgung für den
> STM32F303k8 nutzen. Dieser kann soweit ich weiß (jumper entfernen
> etc.)über einen 5V Vin-Pin betrieben werden.

Im Datenblatt steht 2-3.6V.
Also 3.3V. So brauchst du 5V und 3.3V U-Quellen

Geht das einfach mit einem
> LDO Spannungsregler wie z.B.
> https://de.rs-online.com/web/p/ldo-spannungsregler/9101950/ ?

Sollte gehen
Bei 5V brauchst du aber einen der letzten 5 in drr Tabelle auf S.2im 
Datenblatt.
Für den uC brauchst du aber 3.3V

> Viel Leistung zieht der STM32 ja nicht. Der Kühlkörper + Platine sollte
> ausreichen(?).

Kannst du ketztendlich berechnen abhängig davon wieviele Puns du nutzt.

>
> Möchte nur sicher gehen dass es funktioniert, bevor ich mir die Teile
> bestelle.
> Danke

Bitte

von Jim M. (turboj)


Lesenswert?

supo schrieb:
> Der Kühlkörper + Platine sollte
> ausreichen(?).

Kommt schwerstens auf den Stom an den der STM32 so zieht. Man bedenke 
die ~20V Spannung die am LDO abfallen und "verbraten" werden.  Da kommt 
1W schon bei ein paar LEDs schnell zusammen...

von supo (Gast)


Lesenswert?

letztendlich werden 1 bis 3 ToF-Sensoren, welche 0.9 bis max. 1.4 mW 
ngeschlossen.

https://www.st.com/content/ccc/resource/technical/document/user_manual/e3/0e/88/05/e8/74/43/a0/DM00231744.pdf/files/DM00231744.pdf/jcr:content/translations/en.DM00231744.pdf

6.4.2: Drei Arten der Spannungsversorgung. Dann würde ich ein 
Spannungsregler mit 12V bevorzugen. Vin siehe 7-12V. Damit weniger 
"verbraten" wird :)

von bastler (Gast)


Lesenswert?

supo schrieb:
> letztendlich werden 1 bis 3 ToF-Sensoren, welche 0.9 bis max. 1.4
> mW
> ngeschlossen.
>
> 
https://www.st.com/content/ccc/resource/technical/document/user_manual/e3/0e/88/05/e8/74/43/a0/DM00231744.pdf/files/DM00231744.pdf/jcr:content/translations/en.DM00231744.pdf
>
> 6.4.2: Drei Arten der Spannungsversorgung. Dann würde ich ein
> Spannungsregler mit 12V bevorzugen. Vin siehe 7-12V. Damit weniger
> "verbraten" wird :)

Dem Spannungsregler, was du angegeben hast ist es herzlich egal, was du 
für Spannungen an Vin reingibst solange du
2.3V to 30V
einhältst.

von S. R. (svenska)


Lesenswert?

Wenn du zwei Regler in Reihe schaltest (24V->12V, dann 12V->3V3), wird 
das mit der Kühlung der Chips einfacher. In Summe ändert sich natürlich 
nichts.

von supo (Gast)


Lesenswert?

Für den MCP2551 brauch ich noch ein Level Shifter (5V -> 3.3V), richtig?

Vdd (MCP2551) verbinde ich mit dem +5V Output vom STM32F303. Die Rx 
Leitung muss ja dann noch auf 3.3 reduziert werden, da die Pins vom 
STM32 nicht 5V kompatibel sind.
Ich bin mir allerdings nicht sicher welcher LevelShifter passt.
Weiß da jemand bescheid?


Ansonsten verbinde ich den RPi mit dem STM32 wie folgt:

RPi 24V out (optoentkoppelt) -> Spannungsregler (30V->12V) -> Vin 
STM32F303
RPi CAN_H -> MCP2551(am STM32F303) CAN_H
RPi CAN_L -> MCP2551(am STM32F303) CAN_L

STM32F303 Rx/Tx -> MCP2551 Rx/Tx   (Rx über Level Shifter?)
STM32F303 +5V -> MCP2551 Vdd       (mit 100nF CAPACITOR zu GND)



Evtl. kann man den LevelShifter auch mit 2x Widerstanden ersetzen. Da 
bin ich mir aber nicht sicher ob das den CANbus beeinflusst...

Danke.

von fchk (Gast)


Lesenswert?

Nimm den MCP2562 anstelle des 2551. Der 2562 hat zwei 
Spannungsversorgungspins, einmal 5V für die CAN-H/CAN_L Bus Signale, 
einmal VIO für die CAN_RX/CAN_TX Signale. Bei Dir wäre VIO 3.3V. Damit 
brauchst Du keine Pegelwandler.

->
https://www.microchip.com/wwwproducts/en/MCP2562

fchk

von supa (Gast)


Lesenswert?

Super Tipp.

Noch eine Frage bzgl. den Pull Widerständen des I2C Busses.
Die Pull Widerstände habe ich auf 3.6K Ohm ausgelegt. Bei 3.3V des STM32 
und dem VL53L1X sollte das passen, oder? Ist ein "Platinen-Bus", ohne 
Kabel.

von supo (Gast)


Lesenswert?

Alternativ kann ich den I2C auf 5V (STM32F303 +5V) ziehen mit 10kOhm.

von bastler (Gast)


Lesenswert?

supo schrieb:
> Alternativ kann ich den I2C auf 5V (STM32F303 +5V) ziehen mit
> 10kOhm.

keine gute Idee 10k

von Tilo R. (joey5337) Benutzerseite


Lesenswert?

Es gibt auch CAN-Transceiver die mit 3.3 V auskommen, dann sparst du 
immerhin die Level-Shifter.
Z.B. SN 65HVD230D

Das CAN-Signal ist trotz der niedrigeren Spannung standardkonform, 
demzufolge gehen auch gemischt 3,3- und 5V-Komponenten am selben Bus.

Der IC braucht aber (prinzipbedingt) ähnlich viel Strom wie ein 
5V-Transceiver. Leistung kann man nur sparen, wenn die 3.3 V effizient 
aus einem Schaltregler kommen.

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.