Hallo zusammen, habe mich in den letzten Tagen/Wochen etwas intensiver mit SD-Karten beschäftigt und dort ein paar Fortschritte erzielt (von Null auf Anfängerniveau...). Nun soll es an den CAN Bus gehen, zum Schluss soll das ganze verheiratet werden. Nun frage ich mich jedoch, ob das ganze überhaupt in der aktuellen Art und Weise Sinn macht... Ziel ist es, CAN Daten auf SD-Karte zu speichern. Da ich bis jetzt immer einen AT-Mega uC genutzt habe, denke ich nur, dass dieser der Aufgabe nicht gewachsen ist... Überlegungen dazu: CAN mit 100k => 12500 Byte/s müssten netto geschrieben werden Damit das ganze auch für Menschen lesbar ist, müsste dann irgendein nettes Format auf der SD-Karte landen, so etwas in der Art Zeitstempel, CAN Daten in ASCII Darstellung/Hex-Werte. Alleine die Umwandlung in die ASCII Interpretation (z.B. mache aus 0x2A ein 0x32 0x41) verdoppelt die Anzahl geschriebener Daten; Zeitstempel + CR/LF kommt auch noch dazu => bei 100k CAN dann landet man dann eher im Bereich 30k Byte/s. Bei 20MHz Takt für den SPI sieht das zwar machbar aus, aber die Daten müssen ja auch irgendwo herkommen und durch die SPI Nutzung ergibt sich ein beträchtlicher Overhead. Selbst wenn ich den 4-Bit Modus nutze, komme ich da wohl an die Grenzen des machbaren (eines AT-Megas), oder irre ich mich da gewaltig? Zumindest in alten Threads bestätigt sich das: <Beitrag "Re: Sd-Card endlich im 4-Bit-Mode! -> Init Read Write";, wobei 500k Bit/s schon eine Ansage sind und ausreichend währen. Da die 4-Bit aber nicht über HW SPI abgewickelt werden können, gibt das dann neue Probleme... Wie auch immer: der CAN dürfte wohl nie zu 100% ausgelastet sein, dafür gibt es aber auch 500k und 1M CAN Geschwindigkeiten (an die ich aber erst einmal nicht möchte). Kenne mich noch nicht gut genug aus, ob ich aus Performancegründen einen AT128CAN (o.ä.) + Treiber nehmen sollte, oder eher einen diskreten CAN Knoten + Treiber. Lange Rede kurzer Sinn: hat jemand von euch hier schon praktische Erfahrungen gesammelt und kann mir evtl. ein paar Tipps geben (z.B. geht gar nicht, nimm lieber einen AT-Mega mit CAN, SPI/4-Bit Modus...)? Danke und Gruß, Markus
Hm, willst du den gesamten CAN-traffic aufzeichnen? I.a. interessiert man sich nur für einige Parameter. Stellt sich die Frage, was das ganze werden soll. Ich habe mal einen Datenlogger gebastelt, der 5 Parameter mit 10Hz (Drehzahl, Gaspedal, Ladedruck, Motortemperatur und Geschwindigkeit) aufgezeichnet hat. Problemlos mit Mega32+MCP2515, da wär auch noch mehr gegangen. Ob man es "menschenlesbar" (also Ascii) oder binär aufzeichnet, ist nur eine Frage der Speichergrösse, Schreibgeschwindigkeit und der eigenen Faulheit - ein kleines PC-Programm, welches aus einer Binärdatei "ordentliche" Daten macht, ist schnell geschrieben.
Hallo, da ich mich mit CAN noch nicht richtig auskenne und noch nichts damit gemacht habe: erst einmal alles aufzeichnen, wegschmeißen kann man immer noch ;=) Was das ganze werden soll: Spielerei ;=) Möchte wissen was auf dem CAN abgeht und später zu Hause mal draufschauen was mir das Auto so mitzuteilen hat. Wenn dann interessante Botschaften dabei sind, kann ich ja immer noch auf diese Filtern. Gruß, Markus
Auf der sicheren Seite bist Du mit einem STM32F103Z. CAN ist eingebaut, SDIO für hardwaremäßiges 4-Bit SDCARD IO ist drin, dann würde ich da noch ein oder zwei 512k SRAMs anklemmen, in die Du beim Logging binär reinschreibst (daher das 144 Pin Gehäuse, die kleineren haben nicht die erforderlichen Adress- und Datenleitungen nach außen geführt), und wenn Du fertig bist, dann kannst Du den SRAM-Inhalt ganz in Ruhe auf Deine SD-Karte schreiben. Wenn Du auf Nummer sicher gehen willst, machst Du das externe SRAM batteriegepuffert, dann kann unterwegs auch mal der Strom wegfallen. fchk
Hm, wozu denn der RAM? Bekommst du die Daten nicht in der ankommenden Geschwindigkeit auf die Karte geschrieben, läuft der RAM über kurz oder lang über. Aber bei 100kBit CAN ist das alles easy: ca. 130 bit/message, also alle 1.3ms eine mit 8Byte Daten, falls der Bus vollgestoft ist. Kannst du als 16Byte-Satz auf die Karte speichern (ID, Daten, Zeitstempel). Macht mickrige 12,3kB/s Nettodatenrate. Verdoppeln wir grosszügig, um mit der Karte reden zu können -> 25kB/s auf der SPI, kein Thema.
H.joachim Seifert schrieb: > Hm, wozu denn der RAM? Bekommst du die Daten nicht in der ankommenden > Geschwindigkeit auf die Karte geschrieben, läuft der RAM über kurz oder > lang über. > Aber bei 100kBit CAN ist das alles easy: Klar. Aber bei 1MBit...
Man muss davon ausgehen, dass eine Speicherkarte nach Schreiben einen Blocks gelegentlich mehrere 100ms nicht bereit ist, neue Daten aufzunehmen. Vgl. Tabelle "MultiMediaCard and SD Card Maximum Read/Write Time-out Values" im SD Card Product Manual 2.2 verlinkt im Artikel MMC- und SD-Karten. Die in dieser Zeitspanne anfallenden Daten sind zwischenzuspeichern. Eine eindeutige Regel dafür, wann diese längere "Reorganisationspause" eintritt habe ich bei verschiedenen Karten bisher nicht gefunden. Ein Faktor ist - nachvollziehbar - wie viele Blöcke bisher geschrieben wurden. Bei einer SDHC-Karte (wenn richtig erinnert mit Fuji-Label), traten die längeren Pausen relativ regelmäßig ca. alle 2000 Datenblocks auf, bei anderen Karten konnte diese Regel aber nicht eindeutig bestätigt werden.
Hallo zusammen, danke für eure Antworten. Lag leider ein wenig flach und habe mich um alles mögliche gekümmert, aber nicht um den PC :=) Dafür hatte ich Zeit zum lesen und habe mir ein paar Grundlagen zum CAN angeeignet. Wie auch immer: ein ATMega scheint der Aufgabe nicht gewachsen zu sein, weshalb ich das ganze erst einmal auf Eis lege und mir ggf. zu einem späteren Zeitpunkt erneut ansehe. Gruß, Martin
Martin Schröder schrieb: > Hallo zusammen, > > danke für eure Antworten. Lag leider ein wenig flach und habe mich um > alles mögliche gekümmert, aber nicht um den PC :=) Dafür hatte ich Zeit > zum lesen und habe mir ein paar Grundlagen zum CAN angeeignet. > Wie auch immer: ein ATMega scheint der Aufgabe nicht gewachsen zu sein, > weshalb ich das ganze erst einmal auf Eis lege und mir ggf. zu einem > späteren Zeitpunkt erneut ansehe. Wenn es Dir an den nötigen Löt- und/oder Hardware-Kenntnissen gebricht, schau Dir mal das hier an. Das wäre eine nette CAN-Spielwiese für Dich. http://www.olimex.com/dev/lpc-e2294rb.html fchk
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.