Forum: Digitale Signalverarbeitung / DSP / Machine Learning SN65HVD230 CAN Board Network Transceiver Config und Befelssatz für UART


von Andreas V. (Firma: IGL) (andreas_va)


Lesenswert?

Hallo zusammen,

ich versuche seit einigen Tagen den SN65HVD230 in Betrieb zu nehmen. 
Dazu verbinde ich einen PC (USB) mit einem FTDI Adapter und dann die TX, 
RX, Vcc, Gnd Leitungen zwischen FTDI und CAN Transceiver miteinander. RX 
und TX werden gekreuzt.

Ich kann allerdings keine Informationen zur Konfiguration des 
Transceivers finden.
Irgenwie muss die Baudrate, Parität usw. eingestellt werden. Oftmals 
läuft so etwas über AT-Befehle.

Des Weiteren weiss ich nicht welche Befehlsstruktur bzw.Sequenz  ich 
über UART aufbauen muss um CAN Befehle abzusetzen und zu empfangen.

Mache ich einen Denkfehler oder mache ich es mir einfach zu leicht? Der 
Code für einen Controller dürfte nicht so kompliziert sein. Gibt es 
vielleicht ein Terminal Programm zum Befehle absetzen  dafür?


Sorry, ich kenne mich absolut nicht mit CAN in der Praxis aus.

Für hilfreiche Infos wäre ich euch sehr dankbar.

: Bearbeitet durch User
von Gerd E. (robberknight)


Lesenswert?

Andreas V. schrieb:
> Sorry, ich kenne mich absolut nicht mit CAN in der Praxis aus.

CAN ist nicht UART!

Ein FTDI-Adapter kann kein CAN. CAN hat recht hohe Anforderungen an das 
Timing, so daß Du niemals, auch bei langsamen Baudraten nicht, von der 
PC-Software aus rechtzeitig reagieren kannst.

Du brauchst einen Adapter der das CAN in Hardware umsetzt. Der kann dann 
von mir aus per USB angesprochen werden, entweder über den FTDI oder der 
Adapter bringt von selbst aus schon USB mit.

Lies Dir mal die Grundlagen zu CAN z.B. hier durch:
https://de.wikipedia.org/wiki/Controller_Area_Network

von A. Vatter (Gast)


Lesenswert?

Ich wollte den PC als Controller verwenden. Der SN65HVD230 Transceiver 
sollte CAN in was auch immer umsetzen. Um das was am UART herauskommt 
bzw eingegeben werden muss geht's mir. Das Timing sollte doch der 
Transceiver erledigen. Ausserdem sollte der UART richtig konfiguriert 
sein. Dazu gibt's aber keine Infos.

von Frank K. (fchk)


Lesenswert?

A. Vatter schrieb:
> Ich wollte den PC als Controller verwenden. Der SN65HVD230 Transceiver
> sollte CAN in was auch immer umsetzen.

FALSCH! 6. Setzen.

Der Transceiver ist nur der Analogteil des CAN-Interfaces. Er setzt die 
0V/3.3V Spannungspegel auf CAN_TX/CAN_RX auf die differentiellen 
2.5V+/-1V das CAN-Busses um.

Mehr nicht. Punkt.

Dir fehlt der Digitalteil.

> Um das was am UART herauskommt
> bzw eingegeben werden muss geht's mir. Das Timing sollte doch der
> Transceiver erledigen.

Nein. Der kann das nicht.

> Ausserdem sollte der UART richtig konfiguriert sein. Dazu gibt's aber keine 
Infos.

Klar. Ein UART kann kein CAN.

fchk

von Gerd E. (robberknight)


Lesenswert?

A. Vatter schrieb:
> Ich wollte den PC als Controller verwenden.

geht so nicht, der kann durch das USB hindurch nicht schnell genug 
reagieren

> Der SN65HVD230 Transceiver
> sollte CAN in was auch immer umsetzen.

Nein, ein CAN Transceiver gibt CAN-RXD aus und empfängt CAN-TXD. Die 
müssen mit einem CAN-Controller verbunden werden. Das sind keine 
UART-Signale und wenn Du sie mit einem UART verbindest, funktioniert das 
nicht.

> Das Timing sollte doch der
> Transceiver erledigen.

Nein, das ist nicht seine Aufgabe. Der Transceiver setzt die 
Spannungspegel um. Der CAN-Controller kümmert sich um Timing, 
Arbitrierung etc.

> Ausserdem sollte der UART richtig konfiguriert
> sein. Dazu gibt's aber keine Infos.

Schau Dir nochmal das Konzept von CAN genau an. Denk darüber nach wie 
schnell ein Controller reagieren muss um die Arbitrierung oder das ACK 
hinzubekommen. Das geht ohne dedizierte Hardware nicht.

von PaSi (Gast)


Lesenswert?

Uha...
da solltest du nochmal nachlesen. Du hast da einiges falsch verstanden. 
Der Tranceiver setzt dir nich CAN auf UART um...er stellt nur die 
physikalische Schicht des CAN-Protokolls dar. Du brauchst trotzdem einen 
CAN-fähigen Controller und verbindest CAN RX und CAN TX mit Rx und Tx 
des Tranceivers.

Das was du da vor hast wird so niemals funktionieren.

Gruß

von 123 (Gast)


Lesenswert?

Der CAN-Transceiver macht aus den 3,3V des CAN-Logik-Signales den 
richtigen Spannungspegel für CAN (differenzielles Signal). Darum, dass 
die richtigen Logik-Signale generiert werden kümmert sich ein 
CAN-Controller. Das leistet der FTDI nicht!

von A. Vatter (Gast)


Lesenswert?

Mea Culpa!
Danke das war's! Rx<> Rx und Tx<>Tx.
Ich wunderte mich schon!
Mann, Mann, Mann...
Welchen passenden Controller gibt's für den SN65HVD230?

Wie kann man das nur so falsch verstehen....
Wenn man es weiß wird's klar!

von tinCAN (Gast)


Lesenswert?

A. Vatter schrieb:

> Welchen passenden Controller gibt's für den SN65HVD230?

z.B der ATSAME51J20A.
Der spricht das moderne CAN FD.

Der kann auch via USB mit dem PC sprechen..

von Gerd E. (robberknight)


Lesenswert?

A. Vatter schrieb:
> Welchen passenden Controller gibt's für den SN65HVD230?

Der MCP2515 wäre ein verbreiteter Klassiker.
Der wird aber per SPI und nicht per UART angebunden.

Mir ist jetzt keiner bekannt der direkt UART macht. Wenn Du UART zum PC 
möchtest, bietet es sich an einen Mikrocontroller mit integriertem 
CAN-Controller zu verwenden und den dann die Wandlung in ein 
UART-Protokoll machen zu lassen. Als UART-Protokoll ist da das 
LAWICEL-Protokoll verbreitet, dafür gibt es u.a. direkten Support im 
Linux-Kernel.

Ein fertiges Opensource-Projekt was letzteres inkl. USB-Wandlung umsetzt 
wäre z.B. http://linklayer.github.io/cantact/

von Gerd E. (robberknight)


Lesenswert?

tinCAN schrieb:
> A. Vatter schrieb:
>
>> Welchen passenden Controller gibt's für den SN65HVD230?
>
> z.B der ATSAME51J20A.

Das ist kein reiner CAN-Controller, sondern ein kompletter Cortex-M4 
Mikrocontroller der erst programmiert werden will bevor er CAN nach UART 
oder USB wandelt.

Die Frage des TO nach einem "Controller" ist an dieser Stelle etwas 
zweideutig, vor allem wenn man die häufige Erwähnung von CAN-Controllern 
im Thread oben bedenkt.

von A. Vatter (Gast)


Lesenswert?

Das war echt super! Und viel!
Danke!
Klassiker hört sich für einen Newbie gut an.
Das ist bewährt und stabil. Alles Andere überlasse ich erst mal den 
CAN-Profis; finde ich in jedem Fall interessant für später.
Ich guck jetzt erst mal den Befehlssatz bzw. die Funktionen des MCP2515 
an.
Ich hoffe das ist ein guter Einstieg in die Praxis.

PS: Ich bin mir sicher dass ich jeden Theorietest bestanden hätte! Aber 
das will ich ja nicht...

Als Transceiver hätte ich jetzt nicht nur die unterste Schicht im OSI 
Referenz Modell gesehen, wenn man das überhaupt miteinander vergleichen 
kann...

von Frank K. (fchk)


Lesenswert?

A. Vatter schrieb:

> Ich guck jetzt erst mal den Befehlssatz bzw. die Funktionen des MCP2515
> an.

Ja, der wird oft verwendet, ist aber bei hohen Buslasten (d.h. hoher 
Geschwindigkeit und viele Pakete) überfordert.

Wenn ein USB-CAN Adapter Dein Ziel ist, nimm einen Microcontroller, der 
sowohl CAN als auch USB eingebaut hat. z.B. den hier:

https://www.microchip.com/wwwproducts/en/PIC32MX530F128H

Der ist recht leistungsfähig, mit 3€ nicht teuer, und es gibt gute 
USB-Bibliotheken dafür.

Deinen SN65HVD230 solltest Du auch noch mal überdenken. CAN ist ein 5V 
Standard. CANH und CANL liegen im Ruhezustand auf 2.5V, und im aktiven 
Zustand wird CANH um 1V nach oben und CANL um 1V nach unten gezogen. Ein 
3.3V-Baustein kann aber nicht den vom Standard geforderten Pegel von 
3.5V auf CANH erreichen. 3V sind realistischer. Man kann da zwar 
tricksen, damit es trotzdem funktioniert, aber schön ist das nicht.

Wenn es geht, solltest Du einen Transceiver nehmen, der zwei 
Spannungsversorgungen hat: VIO=3.3V für die Logikseite und BUS=5V für 
die Busseite. Der MCP2562 wäre z.B. ein solcher Baustein. Der hat dann 
natürlich kein Problem, die 3.5V auszugeben, und bei einem USB-Adapter 
hast Du eh 5V vorliegen.

fchk

von (prx) A. K. (prx)


Lesenswert?

Frank K. schrieb:
> Deinen SN65HVD230 solltest Du auch noch mal überdenken.

TI sieht das weniger kritisch:
http://www.ti.com/lit/an/slla337/slla337.pdf

von A. Vatter (Gast)


Angehängte Dateien:

Lesenswert?

Vor einigen Monaten kaufte ich mir einen "CAN Transceiver" 
MCP2515.Achtung das ist ein CAN Controller! Der wird halt nur oft falsch 
ausgezeichnet. Verdrahtung wie im Bild. Ich hoffe das erspart Arbeit.

Mit 3.3V Betriebsspannung sollte der SN65HVD230 laut Datenblatt laufen.
!!!Alles ohne Gewähr!!!

von A. Vatter (Gast)


Lesenswert?

Der MCP2515 läuft von 2.7V bis 5.5V. So kann ich ihn mit einer USB2SPI 
Bridge mit 3.3V ansteuern. Der SN65HVD230 hat 3.3V.
Gesamte Betriebsspannung wäre somit 3.3V aber stabillisiert.

von Thomas (kosmos)


Lesenswert?

vielleicht einen ATMega16M1 nehmen der kann UART und CAN so das du mit 
dem PC kommunizieren kannst, musst nur noch das Programm schreiben und 
neben deinem CAN-Tranceiver noch einen Pegelwandler ala MAX232 oder eben 
so nen USB-RS232 FDTI nehmen.

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.