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.
Gast
#5540377
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.
Gast
#5540378
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.
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.