Forum: Mikrocontroller und Digitale Elektronik Bytes verdreht bei CAN-Kommunikation Little-Endian / Big Endian µC


von Holger B. (rst-el)


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.

von Peter (Gast)


Lesenswert?

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

sicher? Dort kommt die 0x11 gar nicht vor.

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
Noch kein Account? Hier anmelden.