Forum: Mikrocontroller und Digitale Elektronik CAN Bus auf SD-Karte aufzeichnen mit AT-Mega => Geschwindigkeit?


von Martin Schröder (Gast)


Lesenswert?

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

von H.Joachim S. (crazyhorse)


Lesenswert?

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.

von Martin Schröder (Gast)


Lesenswert?

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

von Frank K. (fchk)


Lesenswert?

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

von H.Joachim S. (crazyhorse)


Lesenswert?

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.

von Frank K. (fchk)


Lesenswert?

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...

von Martin T. (mthomas) (Moderator) Benutzerseite


Lesenswert?

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.

von Martin Schröder (Gast)


Lesenswert?

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

von Frank K. (fchk)


Lesenswert?

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
Noch kein Account? Hier anmelden.