mikrocontroller.net

Forum: FPGA, VHDL & Co. Sent Protokoll CRC berechnen


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
Autor: Sam (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
hallo zusammen,

Für die Implementierung des SENT-Protokolls sind die Datenbytes 6, also 
24-Bit-Daten, einschließlich eines Statushalbbytes, eines CRC-Halbbytes 
und eines Pausenimpulses.

Ich muss den CRC für 6 Daten-Nibbles berechnen. Der erste Wert für die 
CRC-Berechnung ist, wie ich weiß, 5.

Aber wenn ich das Signal mit Ozs dekodiere. bekomme ich einen Fehler in 
der Nachricht, weil ich zufällige Werte für CRC und für Status-Nibble 
sende. nun zu meinen Fragen: Wie kann ich den CRC-Wert und die 
Status-Nibbles berechnen?

ich habe den folgenden code gefunden:

uint8_t calculatedCRC, i;
const uint8_t CrcLookup[16] = {0, 13, 7, 10, 14, 3, 9, 4, 1, 12, 6, 11, 
15, 2, 8, 5};
calculatedCRC = 5; // initialize checksum with seed "0101"

for (i = 0; i < 6; i++)
{
calculatedCRC = CrcLookup[calculatedCRC];
calculatedCRC = (calculatedCRC ^ Data[i]) & 0x0F;
}
// One more round with 0 as input
calculatedCRC = CrcLookup[calculatedCRC];



aber wenn ich die For-Schleife wie folgt folge,dann ist dies nach der 
ersten Iteration nicht möglich, da der berechnete calculatedCrc wird 11 
^ 11 sein . Ich brauche eure Hilfe, bitte!

1)  i=0 >>> calculatedCRC== 11
2)  i=1 >>> calculatedCRC==
3)  i=2 >>> calculatedCRC
4)  i=3 >>> calculatedCRC
5)  i=4 >>> calculatedCRC
6)  i=5 >>> calculatedCRC

Autor: berndl (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sam schrieb:
> Status-Nibbles

moinsen,
das S&C (Status&Communication) ist bei der CRC-Berechnung nicht drin, 
warum auch immer...

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.

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