Für einfache Schalt- und Steueraufgaben am Multimedia CAN im Auto möchte ich gern Atmega uC einsetzen, da ich eine Arduino Entwicklunggsumgebung habe. Ich finde hierzu entweder die Kombi ATmega328 mit per SPI angeschlossenem MCP2515 und MCP2551, oder abef AT90CAN mit MCP oder TJA Transceiver. Wo genau liegen denn hier die Unterschiede, Vor-/Nachteile?
Der Unterschied: der per SPI Angeschlossene MCP muss dann händisch per SPI abgefragt werden und der AT90CAN hat einen 2.0A/B Receiver direkt an Board, da brauchst du keinen MCP / TJA Transceiver.
Rene K. schrieb: > da brauchst du keinen MCP / TJA Transceiver. Selbstverständlich braucht auch der AT90CAN und ein 16M1 einen Transceiver. Und zwar einen passenden für den Multimedia-CAN, welcher auch ein Low-Speed-CAN sein kann. Die Atmels mit CAN brauchen keinen zusätzlichen CAN-Controller wie MCP2515 oder SJA1000. Aber die empfangenen Botschaften müssen ebenfalls "händisch" aus den MOBs ausgelesen werden. Man braucht nur keine SPI-Schnittstelle dafür.
Olli Z. schrieb: > Wo genau liegen denn hier die Unterschiede, Vor-/Nachteile? Ein 16bit-Controller mit integriertem CAN kostet in Serienstückzahlen unter 70 cent. Ohne CAN 10 cent weniger. Da fängt keiner mehr an, irgendwelche externen Bausteine dranzufrickelt. Im privaten Bereich würde ich es von der Verfügbarkeit abhängig machen. Was hast Du da, was kannst Du günstig kriegen? Für den AT90CAN128 gibt es tolle Bibliotheken auf kreatives-chaos.com.
Außerdem ist SPI ein Flaschenhals, besonders bei hoher Buslast und hoher Busgeschwindigkeit (=>viele Pakete). Deswegen und aus Kosten- und Platzgründen will man einfach keine externen CAN-Controller haben. Bevor jemand im echten Leben einen MCP2515 verbaut, nimmt er für wenig Geld mehr einen PIC18, der eine deutlich verbesserte Version des MCP2515 gleich eingebaut hat, und das ohne SPI-Flaschenhals und ohne zweiten Quarz. Deswegen gibts vom MCP2515 auch kein Update und kein Bugfix - es lohnt sich einfach nicht. Und der NXP SJA1000 ist jetzt auch fast 20 Jahre alt. Wenn Du bei der Arduino-Umgebung bleiben willst: Es gibt zB den Arduino Due, Teensy 3.1 (beide ARM) oder Chipkit Max32 (PIC32), die beide integrierte CAN-MACs haben. Einen passenden PHY kannst Du einfach selber anschließen. fchk PS: Falls Du mir immer noch nicht glaubst: Such mal nach CAN FD (Flexible Datarate) Controllern. Du wirst keine finden. Wer einen braucht, nimmt einen IP-Core und packt das in ein FPGA seiner Wahl. So läuft das heute.
Naja, habe die SPI in Verbindung mit nem MCP2515 nicht als Flaschenhals gespürt. CAN läuft mit max. 1MBit, die SPI kann mit 8MBit betrieben werden. Und es werden ja auch nicht alle CAN-Bits auch über die SPI übertragen. Dazu einen Int, wenn was empfangen wurde und alles ist gut, geht schon. Besser ist es natürlich einen MC mit internem CAN zu verwenden. Aber wenn man schon eine Zielhardware hat, ist der MCP2515 durchaus eine Alternative. Und über die Preise der AT90CANxxx sage ich mal lieber gar nichts. Einen zweiten Quarz braucht man auch nicht, kann alles am selben Takt hängen.
H.Joachim S. schrieb: > CAN läuft mit max. 1MBit, die SPI kann mit 8MBit betrieben > werden. Und es werden ja auch nicht alle CAN-Bits auch über die SPI > übertragen. Dazu einen Int, wenn was empfangen wurde und alles ist gut, > geht schon. Welche Bits des CAN Telegramms willst Du nicht per SPI übertragen? Die Stuffbits? Desweiteren mußt du Registerweise lesen und kannst quasi nicht Bits, die dich nicht interessieren, weglassen. Aber zumindest ist der Befehlssatz des MCP2515 ganz gut hierfür optimiert.
Start 1bit CRC 15bit ACK 2bit EOF 10bit Mindestens die erscheinen nicht auf der SPI, wahrscheinlich noch ein paar mehr, müsste ich nachschauen. Ist aber egal, wieviele es wirklich sind. Auf jeden Fall ist der traffic auf der SPI kleiner als auf CAN-Seite und der Bittakt kann deutlich höher sein, also kein Flaschenhals. Meist wird der CAN mit weniger als 1MBit betrieben, entspannt die Sache weiter.
H.Joachim S. schrieb: > Meist wird der CAN mit weniger als 1MBit betrieben, entspannt die Sache > weiter. Und die Akzeptanzfilter sind im Controller, d.h. man überträgt ohnehin nur die Botschaften, die auch ausgewertet werden sollen. Ändert nichts dran, dass die externen Controller eher eine historische Erscheinung sind und heutzutage die internen dominieren. Microcontroller mit CAN-FD gibt es mindestens von Renesas und Freescale.
Richtig, steht auch oben so, besser intern. Aber wenn man nun an was bestehendes noch den CAN ranbasteln will ist es sicher einfacher das per SPI zu machen, als den Controller und die Hardware über den Haufen zu werfen. Insofern - Jacke wie Hose, beides funktioniert, abwägen kann nur der TO. Und mit sowas http://www.ebay.de/itm/like/272262661926?lpid=106&chn=ps&ul_noapp=true ist man schnell und billig dabei, wenn es um ein Einzelstück geht.
:
Bearbeitet durch User
H.Joachim S. schrieb: > http://www.ebay.de/itm/like/272262661926?lpid=106&chn=ps&ul_noapp=true > ist man schnell und billig dabei, wenn es um ein Einzelstück geht. So ein Teil hab ich in der Tat hier und nutze es. Ich denke, wenn ich eine eigene Platine entwickeln kann/will, dann wäre durchaus ein uC mit integr. CAN sinvoll. Wenn ich bloss Komponenten zusammenstelle, dann ist man vermutlich besser mit fertigen CAN-Bausteinen und einem Arduino Nano oder sowas bedient.
H.Joachim S. schrieb: > Auf jeden Fall ist der traffic auf der SPI kleiner als auf > CAN-Seite und der Bittakt kann deutlich höher sein, also kein > Flaschenhals. Genau das Gegenteil behaupte ich. Zumindest ist die Kalkulation sehr einseitig. Z.B. musst Du für eine 11bit ID 16bit lesen/schreiben (+5bit). Oder auch mal den Status lesen (+24bit) Und Du kalkulierst, dass der Prozessor bei einem SPI Event dieses vorrangig und sofort bedient. Häufig ist Kommunikation aber eher der "unwichtige" Teil bei vielen Anwendern. > Meist wird der CAN mit weniger als 1MBit betrieben, entspannt die Sache > weiter. Ja, Kenner der Materie nutzen eine niedrigere Bitrate und nur wenige CANIDs. Dann läßt sich schon sehr viel einsparen. Und solange man keine Bursts auf dem Bus hat, besteht eh kein Problem. Meine Erfahrung lehrt aber eher, dass dies nicht gemacht wird. z.B. werden fertige Bilbiotheken genutzt. Diese müssen prinzipbedingt allgemeingültig sein und daher mehr Daten über den SPI bringen. Häufig kann man die Leute erst bei Problemen hierauf aufmerksam machen. Dann ich es meist zu spät. Und solche Pauschalaussagen (10Mbit > 1Mbit) führen aus meiner Sicht zu diesem Irrglauben.
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.