Hey, ich habe mal eine Frage zur Endianess und UART. Also mein datenblatt (http://www.chafon.com/DownLoadFile.aspx?fid=232) sagt, dass man die Bytes mit LSB schicken soll. Was im Grunde einfach nur little endian heisst, korrekt? So etwas verwirrt mich der Part mit CRC16. Dort stehen zwei Blocke: LSB-CRC16 (length 1 byte) CRC16 LSB. CRC-16 checksum, 2 bytes with least significant byte first. MSB-CRC16 (length 1 byte) CRC16 MSB. Mein Ansatz waere einfach CRC16 berechnen und in zwei Bytes aufzuteilen. (uint8_t) (crc), (uint8_t) (crc << 8) Und da bin ich mir nicht sicher. Muss ich nach rechts oder links verschieben? Ich denke nach Links, weil die kleinen Bits ja vorne stehen und die grossen hinten und beim casten duerften ja einfach nur die kleinen genommen werden, oder nimmt das casten von rechts nach links bits? Ich nutze uebrings einen STM32F103. Also little endian.
Philipp B. schrieb: > dass man die > Bytes mit LSB schicken soll. Was im Grunde einfach nur little endian > heisst, korrekt? Nein, dass das 1er bit zuerst kommt, dann das 2er bit, ... bis zum 128er. Das ist beim UART aber sowieso Standard. Little Endian betrifft die Reihenfolge der Bytes, also ob zuerst das Byte mit 256ern...32768ern oder erst das Byte mit 1ern...128ern kommt. Philipp B. schrieb: > Muss ich nach rechts oder links verschieben? Nach rechts. Wenn du nach links Shiftest, werden die unteren 8 Bits zu 0, und beim Casten kommt dann nur 0 raus.
Die CRC16 ist ein 16-Bit-Wert. Wenn Du den z.B. in einer Struktur einfach ans Ende anhängst, dann geht es mit dem zugehörigen (Spiegel-)Polynom direkt und einfach und Du brauchst Dich nicht um MSByte/LSByte zu kümmern (einfach vom ersten bis zum letzten Byte crcen, eintragen, rauschpusten und auf der Gegenseite incl. crc crcen). Oder Du fängst halt an mit drehen und wenden und hast noch ein paar mehr Baustellen, wo Du einmal zuviel oder zuwenig drehst. Um die Bits (LSBit/MSBit) kümmere Dich garnicht, das ist beim UART für RS232 (fast) immer gleich, jedenfalls unabhängig von Big/Little-Endian.
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.