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