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