mikrocontroller.net

Forum: FPGA, VHDL & Co. Can-Controller von OpenCore


Autor: Torben (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Moin Leute,
weiß jemand welches Generatorpolynom der CAN-Controller von OpenCore 
verwendet, um den CRC auszurechnen?
Das gängige Polynom (x15 + x14 + x10 + x8 + x7 + x4 + x3 + 1) ist es 
nicht, denn da passt die Bitfolge hinten und vor nicht zusammen mit der 
errechneten.

Nachricht: 0110010001001100011100000000001100000010
Polynom: x15 + x14 + x10 + x8 + x7 + x4 + x3 + 1 (100010110011001)
errechnetes CRC: 11111101000001

vom CAN-Controller errechnetes CRC: 010010010000000

Kennt sich jemand damit aus und kann mir dabei weiterhelfen?

Autor: Matthias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Müsste man das nicht aus dem VHDL Code rauslesen können?

Autor: Torben (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hast recht, steht sogar im Klartest da (ich Honk).
Bloß nun stellt sich die Frage, wie errechnet der Controller bloß seine 
CRC?
Das Polynom ist gleich dem von mir verwendeten.
Ich las meine Polynome von VisualHash (Windowsprogramm) berechnen und 
von der I-Netseite http://zorc.breitbandkatze.de/crc.html.

Autor: Herr Huber (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kann es sein, daß Du word- oder byte orientiwert rechnest und der CRc 
den vollen Bitstrom nutzt?

Oder, der CRC im CAN nutzt (nicht) alle redundanten bits ?

Autor: Lupinus Digitalus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bloss kurz eingeworfen.

Wir haben den selben Core vor kurzen mit einem CAN Protocol Tester
geprüft und die Pakete wurden richtig gesendet und empfangen.

Heisst der implementierte CRC sollte korrekt sein und implizit
der von Dir verwendete CRC sollte noch einmal überdacht werden.
Also ähnlicher Feedback wie mein Vorredner

Gruss

Lupi

Autor: Torben (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,
so ich hab mir jetzt nochmal den CRC des Controllers angesehen, aber ich 
glaube ich bin zu blöd um das zu Verstehen was er macht.
Ich gehe davon aus das man den CRC des Can- Protokolls genauso 
ausrechnet wie sonst auch oder sehe ich das falsch?

Eine kleines Beispiel:
Nachricht (M):10011010
Polynom (P): 1011
aufzufüllende Nullen (N): 3
Rest von der Division (R): 001 --> M / P
Formel zum Errechnen der zu sendenden Nachricht: M * x^k + R
x^k = 1000 (Binär)

Danach erhalte ich folgende Nachricht: 10011010001

Wo liegt mein Denkfehler?

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.