Forum: Mikrocontroller und Digitale Elektronik Einfaches Bussystem mit TJA1055/3 und Arduinos


von Jo E. (lameduq)


Lesenswert?

Hallo,
zurzeit studiere ich im Master "Mechatronic Systems Engineering" und bin 
mit der Wahl sehr zufrieden.
Nun soll ein kleines Projekt realisiert werden. Dazu soll mithilfe von 
CAN-Bausteinen TJA1055/3 und Arduinos (Nano oder Uno) ein einfaches 
CAN-Bussystem aufgebaut werden.

Ich möchte einfach "HELLO WORLD" vom einen Arduino über das 
CAN-Bussystem zum anderen Arduino senden und ausgeben.

Der Hardwareaufbau ist in den Application Hints vom TJA1055/3 gut 
erklärt. Das Problem bereitet mir nur die eigentliche Programmierung.

Es gibt im Internet unzählige Libs für CAN-Shields.
Diese CAN-Shields arbeiten mit (MISO,MOSI) also SPI, richtig? Der 
TJA1055/3 besitzt aber TXD und RXD PINS also UART. Daher sind diese Libs 
mit Beispielen für mich unbrauchbar bzw. ich muss diese umprogrammieren.
Kennt einer von euch eine passende Libary mit der ich mich ins Thema 
rein arbeiten kann?

Hoffe die Fragen lösen bei euch keinen Krampf aus. Komme aus dem 
Maschinenbau Bachelor und da haben wir herzlich wenig Richtung 
Elektrotechnik bzw. Informatik gemacht.

Vielen Dank im voraus!
Jonas

von Stefan K. (stefan64)


Lesenswert?

Der Nano und der Uno haben einen ATmega Controller und die haben kein 
CAN Interface. Du brauchst für diesen Chip z.B. den MCP2515. Den kannst 
Du dann per SPI ansteuern.
Wesentlich besser fährst Du mit einem uc mit bereits integriertem CAN.

Gruß Stefan

von Kolli (Gast)


Lesenswert?

Der TJA1055 ist nur ein CAN-Transceiver du brauchst noch einen 
CAN-Controller, der z.B. mit SPI angesteuert wird (MCP2515) oder gleich 
einen MC mit CAN Peripherie AT90CANxxx oder LPC11Cxx

von Jo E. (lameduq)


Lesenswert?

Vielen Dank!
kann man mal sehen wie doof man am Anfang ist...

von Thomas F. (igel)


Lesenswert?

Jo E. schrieb:
> Dazu soll mithilfe von CAN-Bausteinen TJA1055/3

Dass dies nur ein Transceiver ist wurde ja schon gesagt.
Aber warum muss es denn genau dieser sein?
Low-Speed CAN-Transceiver für Basteleien sind schwer zu bekommen.

Warum keinen der bewährten PCA82C251, MCP2551 oder SN65HVD251 High-Speed 
Transceiver?
Das hat den Vorteil dass einer von denen meist schon auf fertigen 
CAN-Modulen mit drauf sitzt:
https://www.google.de/search?q=mcp2515+can+module&client=firefox-b&dcr=0&source=lnms&tbm=isch&sa=X&ved=0ahUKEwj4p7qEgqLWAhVJ2xoKHVfVAyUQ_AUICigB&biw=1324&bih=948

von Alex W. (a20q90)


Lesenswert?

Auch wenn er keinen CAN-Controller hat, so ist beim CAN-Trncvr die 
Funktionsweise ähnlich RS485. Also sollte seriell sein "HELLO WORLD" am 
Empfänger ankommen!

von Jo E. (lameduq)


Lesenswert?

Ich habe wohl etwas Mist geschrieben...

Das Ziel ist es den Unterschied zwischen Differential-Ended zu 
Single-Ended zu zeigen. Dafür soll wie bereits gesagt Daten vom ersten 
Arduino über den TJA1055/3 über die CAN_H und CAN_L Leitungen zum 
anderen Arduino gesendet werden. Der TJA1055 kann dabei anscheinend 
zwischen 2-Draht und Single wechseln.


Ich schaffe es mittlerweile die Arduino direkt miteinander kommunizieren 
zu lassen juhu.
Nun soll das ganze auch über die TJA-Bausteine funktionieren.

-Die CAN_H und CAN_L Leitungen werden bei den TJA-Bausteine verbunden.
-Laut Application Hints werden dann RXD(TJA) mit RXD(Nano) und die TXD 
Leitungen verbunden
-STB und EN werden bei beiden TJA`s auf HIGH gesetzt
-VCC (5V) und GND über die Arduinos

Der Hardwareaufbau sollte hoffentlich damit fehlerfrei sein.

Softwaretechnisch bin ich aber völlig überfordert wie der CODE aussehen 
muss. Habt ihr da irgendwelche Hinweise/Tipps?

Vielen Dank für die ganzen Antworten

von Thomas F. (igel)


Lesenswert?

Jo E. schrieb:
> -Die CAN_H und CAN_L Leitungen werden bei den TJA-Bausteine verbunden.
> -Laut Application Hints werden dann RXD(TJA) mit RXD(Nano) und die TXD
> Leitungen verbunden

Das hat dann aber nichts mehr mit CAN zu tun. Auch ist das kein 
Bus-System mehr sondern Punkt zu Punkt.
Das ist eine UART-Verbindung mit zweckentfremdeten CAN-Transceivern.

Jo E. schrieb:
> Softwaretechnisch bin ich aber völlig überfordert wie der CODE aussehen
> muss. Habt ihr da irgendwelche Hinweise/Tipps?

Warum? Das ist eine einfache UART-Sendung. Und die hat ja schon 
funktioniert wie du oben schriebst.

von Thomas (kosmos)


Lesenswert?

wenn du bei Atmel bzw. MC bleiben willst gibt es außer der AT90CANxxx 
noch die ATMegaXXM1 Reihe die den CAN Controller integriert haben du 
sparst dir also die SPI Geschichte

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.