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
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
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
Vielen Dank! kann man mal sehen wie doof man am Anfang ist...
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
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!
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
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.