Bytes verdreht bei CAN-Kommunikation Little-Endian / Big Endian µC

OP #1575287
Lesenswert?

Hallo,
ich habe folgendes Problem:
Ich arbeite an einer CAN-Kommunikation zwischen einem 16-Bit Infineon 
XE167 und einem 8-Bit Infineon XC886 .
Die Prozessoren arbeiten mit umgekehrter Speicherreihenfolge, d.h. ein 
Prozessor mit Little Endian und der andere mit Big Endian Format.

Jetzt habe ich folgendes Problem:

Auf der einen Seite (Infineon XC886) zerlege ich eine long-Int Variable 
ulSend = 0x44332211 in 4 Einzelbytes:
ubDB[0] = 0x11
ubDB[1] = 0x22
ubDB[2] = 0x33
ubDB[3] = 0x44

Die CAN-Botschaft wird gesendet, der Analyzer zeigt folgende Datenbytes 
auf dem CAN-Bus:
d0 = 0x44, d1 = 0x22, d2 = 0x33, d3 = 0x44

Auf der Empfängerseite (Infineon XE167) steht in den Datenbytes des 
Empfangsobjektes folgender Inhalt:
ubData[0] = 0x44
ubData[1] = 0x33
ubData[2] = 0x22
ubData[3] = 0x11

So wie ich die Sache sehe muß ich im XC886 die Bytes vor dem Senden 
vertauschen - dann funktioniert der Datenaustausch.
Diese Lösung gefällt mir gar nicht. Gibt es eine andere Möglichkeit - 
hat jemand Erfahrungen mit so etwas ?

Wie gesagt, bei der Kommunikation zwischen 2 Controllern, die mit 
derselben Speicherformat arbeiten, funktioniert alles reibungslos.

Gruß Holger B.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren