Wir benutzen momentan den mcp2515 an einer Linux CPU. Problematisch ist, dass der Baustein nur 2 Empfangspuffer hat, was bei hoher Baudrate zu Überläufen führt. Gibt es eine SPI CAN Alternative mit tieferer Pufferung? Ich habe leider bisher nichts gefunden :( Ein FPGA ist mir zu aufwendig. Kennt Ihr einen passenden Baustein?
Eventuell mit einem kleinen Mikro-Controller? Sowas wie der ATMega16M1? Der hat schonmal 6 Message-Boxen.
Ich schrieb: > Sowas wie der ATMega16M1? Die AVR haben leider ein Krüppel-SPI ohne Puffer. Als Slave daher nicht geeignet. Der AT89C51CC03 ist da besser. Dessen SPI kann ohne Pausen senden/empfangen: "When a transmission is in progress a new data can be queued and sent as soon as transmission has been completed. So it is possible to transmit bytes without latency, useful in some applications." Und er hat 15 CAN-Puffer.
Peter Dannegger schrieb: > Die AVR haben leider ein Krüppel-SPI ohne Puffer. Das ist nicht ganz richtig, der SPI ist in Empfangs-Richtung gepuffert, wenn auch nur mit einem Byte. Also abholen während das nächste geschrieben wird geht schon. Aber angesichts des HI-3110 ziehe ich meinen Vorschlag zurück. :-)
Der HI-3110 sieht sehr gut aus. DANKE für eure Antworten. Muss mal schauen ob der HI-3110 ins Budget passt. Avionics hört sich teuer an.
Michael S. schrieb: > Muss mal schauen ob der HI-3110 ins Budget passt. Avionics hört sich > teuer an. Dafür kann ein Transceiver mit ziemlich guten Daten mit im Chip sein. Kannte ich auch noch nicht.
Kostet 5.09$ als Einzelstück, ich denke das sind ca. 3$ in grösseren Stückzahlen. Mit eingebauem Tranceiver, 20MHz SPI, je 8 TX und RX Puffer und auch sonst Top-Funktionalität. Gefällt mir! @Gregor: Danke Dir. Weiss jemand, ob es bereits einen Linuxtreiber gibt?
> > Weiss jemand, ob es bereits einen Linuxtreiber gibt? Bin mir ziemlich sicher, dass das nicht der Fall ist. Es müsste als erstes mal eine Hardware her. Bzw. kein kleines Board mit dem Chip welches man z.B. an einen Raspberry klemmen kann.
Ich kenne da noch den CC770 von Bosch oder Intel. Könnte da auch noch einige von besorgen. Der hat 14 TX/RX Buffer, kann 15 Message Objects, flexible CPU Interface (8bit/16bit paralell oder SPI). http://www.rutronik.com/uploads/media/CC770.pdf Hab allerdings keinen Distri gefunden. Muss es aber noch geben denn wir bekommen immer noch bestückte LP's mit diesem Controller geliefert. Gruß Steffen EDIT: HAb doch noch einen Lieferanten gefunden http://www.futureelectronics.com/en/technologies/semiconductors/comm-products/can/Pages/2032928-0272240007001.aspx?IM=0
Scheint wirklich keinen Linux Treiber zu geben :( Die Hardware samt Rasberry Pie würde ich gern spendieren, wenn jemand Lust hat einen Linux Treiber für den Holt SPI CAN Chip "HI-3110" zu schreiben.
Michael S. schrieb: > Scheint wirklich keinen Linux Treiber zu geben :( Für can4linux nicht. Ich habe bei SocketCAN nachgefragt - dort auch nicht. Es kennt dort auch keiner einen. Sowohl SocketCAN developer-list als auch ich, wir empfehlen SPI generell nicht, wegen des geringen möglichen Durchsatzes. Höchstens bis 125 kbit/s
Nachdem ich nur SPI zur Auswahl habe, muss ich mit der Performanceeinbusse leben. Das ist für meine Anwendung auch OK. Allerdings kommt mir 128 KBit/s etwas wenig vor. Wir haben inzwischen festgestellt, dass die Registerstruktur des HI-3110 dem des MCP2515 sehr ähnlich ist, so dass man mit dem Linux Treiber nicht bei Null anfangen muss.
Michael S. schrieb: > Nachdem ich nur SPI zur Auswahl habe, muss ich mit der > Performanceeinbusse leben. Das ist für meine Anwendung auch OK. > Allerdings kommt mir 128 KBit/s etwas wenig vor. 125kbit/s ist nicht so übel. Was willst Du denn machen? Wie viele Knoten haben wie viele Daten auszutauschen, etc? UND: wie leistungsfähig ist Deine CPU? > > Wir haben inzwischen festgestellt, dass die Registerstruktur des HI-3110 > dem des MCP2515 sehr ähnlich ist, so dass man mit dem Linux Treiber > nicht bei Null anfangen muss. Ich kann ja mal schauen. Würde es aber für can4linux machen.
Hm, 2 Empfangsbuffer des MCP2515 ist doch schon mal mehr als nur einer :-) Wo genau liegt denn das Problem, die Daten zeitnah abzuholen? Hast du zu hohe Interrupt-Latenzzeiten? Vielleicht kann man eher da was schrauben als zu versuchen, sich einen Treiber selbst zu schreiben? Blockiert das Betriebssystem zu lange den externen Interrupt? Ich bin mit dem MCP2515 bisher immer zurechtgekommen, auch bei hohen Datenraten und hoher Buslast. Betriebssystem gabs zugegebenermassen keines.
Eine Alternative wäre ein dsPIC33FJ128MC802. Gibt es auch in SDIP28 für die Lochrasterverdrahter. 40MHz, im Gegensatz zu AVR sehr viel leistungsfähigeres SPI, ECAN-Controller mit 8 Tx und 32 Rx Buffers und DMA-Controller mit 8 Kanälen, der auch SPI und ECAN bedienen kann. Die Idee dahinter ist, dass Du keinen Linux CAN-Treiber bauen musst, sondern einfach per SPI Deine Frames sendest und empfängst und der dsPIC die puffert und rauschickt bzw empfängt. Und dsPICs wirst Du wohl einfacher bekommen als Deinen CAN-Controller. fchk
Meine Datenraten sind eher gering (schätze mal ca. 500 Nachrichten/Sekunde auf 250KBaud) und es gibt auch nur 4 Teilnehmer. Das Problem ist, dass bis zu 4 Nachrichten auf einmal eintreffen können und da macht mir die Linux Interrupt Latenzzeit einen Strich durch die Rechnung. Ein langsamer SPI CAN Controller ist für mich also OK, nur muss er >=4 Empfangspuffer haben. Der Aufwand einen Linux Treiber für der HI-3110 zu machen scheint mir niedriger als einen uC anzukoppeln. Zumal der HI-3110 auch weniger Komponenten und Platz sowie keine extra Software braucht verglichen mit der uC Lösung. Das ist übrigens keine Lochrasterlösung, sondern ein recht komplexes Serienprodukt, dass ab 2014 in 1000er Stückzahlen gebaut wird. Verfügbar ist der HI-3110 wohl problemlos.
> Wir haben inzwischen festgestellt, dass die Registerstruktur des HI-3110 > dem des MCP2515 sehr ähnlich ist, so dass man mit dem Linux Treiber > nicht bei Null anfangen muss. Ich teile diese Einschätzung nicht. Nicht mal das Bit Timing ist in gleichen oder ähnlichen Registern. Auch Interrupts sind unterschiedlich wahrscheinlich auch das generelle Verhalten. Trotzdem könnte man auf Basis des mcp2515 starten.
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.