Welche zusätzlichen Komponenten/Boards werden benötigt, um CAN mit einem STM32 zu verwenden?

Ich habe einen STM32F103C8T6 (später möchte ich mehr zu STM32F407VET6). Beide unterstützen CAN. Aber was bedeutet das?

Ich habe einen MCP2551 CAN Controller gekauft (noch nicht erhalten) . Benötige ich das oder ist diese Funktionalität bereits in meinem STM integriert?

Und ich denke, ich brauche auch einen CAN-Transceiver wie TJA1050 ?

Gemäß dieser Beispielschaltung werden beide verwendet und der Eingang des MCP2551, aber dieser hat einen SPI als Eingang und der STM hat RX/TX als CAN-Ein-/Ausgang, was ähnlich wie die „Anschlüsse“ für MCP2551 ist. Aber ich denke, diese Beispielschaltung ist nicht für STM32 gedacht (da SPI nicht für CAN auf STM32 verwendet wird).

(Ich möchte einen CAN-Bus von wenigen Metern machen, nur zwei, später vielleicht 3 Geräte, mit vorzugsweise 1 MBit/s Geschwindigkeit).

Möchten Sie, dass der Bus elektrisch von der MCU getrennt ist?
@DirkBruere Ich glaube nicht ... Ich verbinde es nur mit "bekannten" Geräten (nämlich einem anderen CAN-unterstützten STM32, das ich verwenden möchte). Auf der anderen Seite, wenn der MCP2551 für die elektrische Isolierung benötigt wird ... Ich habe ihn bereits gekauft, also wenn er einen Vorteil hat (wie die elektrische Isolierung), werde ich ihn verwenden.

Antworten (2)

Sie sollten mindestens zwei Knoten und ein verdrilltes Paar mit 120-Ohm-Abschlüssen an jedem Ende haben. Bezeichner müssen eindeutig sein. Informieren Sie sich über die verschiedenen Formate (11/29 Bit) und CAN-FD vs. CAN. Ich schlage vor, mit 11 Bit zu beginnen. Die niedriger nummerierte Kennung hat die höhere Priorität.

Wenn ein Mikrocontroller CAN unterstützt, bedeutet dies normalerweise, dass die zweite Netzwerkschicht (Datenverbindung) von einem CAN-MAC unterstützt wird. Normalerweise müssen Sie einen Transceiver (die physikalische Schicht) bereitstellen. CAN hat (elektrisch) anspruchsvolle Anforderungen an eine maximale Spannungstoleranz, die typischerweise mit kostengünstigen monolithischen Prozessen, die die Komplexität von Mikrocontrollern unterstützen, nicht kompatibel wäre. Sie können auch Chips mit seriellen Schnittstellen kaufen, die den MAC implementieren, den Sie mit (z. B.) SPI an fast jeden Mikrocontroller anschließen können.

Es gibt verschiedene High-Level-Protokolle, die über die 2 von CAN spezifizierten Schichten hinausgehen können, oder Sie können für eine einfache Anwendung Ihre eigenen implementieren. CAN-Nachrichten werden im Wesentlichen gesendet und können von jedem Knoten verwendet oder verworfen werden – wie Multicast oder Broadcast.

Ein CAN-Protokollanalysator kann hilfreich sein – Sie können ihn für den Wert von ein oder zwei Stunden Debugging kaufen.

Danke für deine ausführliche Antwort. Ich habe hier bereits mit einem anderen Mitglied besprochen, dass RJ45-Kabel / -Anschlüsse gut (ausreichend) wären. Ich habe in den letzten Tagen viel über CAN gelesen (in der Freizeit, es ist ein Hobby). 29 Bit ist etwas, was ich will, aber ich fange tatsächlich besser mit 11 Bit an. Ich wünschte, ich könnte CAN-FD verwenden, aber es scheint von STM32 nicht unterstützt zu werden. Ich werde wahrscheinlich mein eigenes Protokoll erstellen, da meine Anforderungen recht einfach sind. Aber ich bin mir immer noch nicht sicher, Sie sagen, ich brauche einen Transceiver ... also brauche ich wohl den TJA1050? Beim MCP2551 bin ich mir nicht sicher.
Ich habe einen Logik-/Protokollanalysator, der noch nicht überprüft hat, ob er CAN unterstützt (es ist ein einfaches Gerät für etwa 5 Euro).
@MichelKeijzers Der MCP2551 und der TJA1050 sehen aus wie verschiedene Teile von verschiedenen Anbietern, die im Wesentlichen dasselbe tun (CAN-Transceiver). Es könnte einige subtile Unterschiede geben. $5? Interessant.
Wie kommt es, dass es Boards gibt, die sowohl einen MCP2551 als auch einen TJA1050 haben: ebay.com/itm/…
Ein Beispiel für einen solchen Analysator: aliexpress.com/item/…
Hey, solltest du nicht in einer Klasse sein? Der, zu dem ich gerade gegangen bin, war ziemlich hirntot, deshalb überprüfe ich hier SE.
@OlinLathrop Ja, ich mache das praktische ARM LwIP/RTOS ... und mache selbst Multitasking.
Mein Fazit bisher: Der MCP2551 wurde nicht wirklich benötigt (ist in meinem STM32, der TJA1050 wird benötigt... Korrigiert mich bitte, wenn ich falsch liege :-)

Dies funktioniert und stammt aus einem funktionierenden Design. es sorgt für elektrische Isolierung.

Geben Sie hier die Bildbeschreibung ein

Dass ADM dem TJA1050 so ähnlich ist? Da ich die erste auf aliexpress nicht finden kann.
@MichelKeijzers Das ADM bietet Isolierung. Der TJA1050 ist wahrscheinlich billiger
Ok klar ... da mein Projekt (eher ein Lernprojekt) wahrscheinlich nicht auf Probleme stoßen wird, versuche ich es zuerst mit einem TJA1050.