Skip to content

Commit 62ea6f9

Browse files
committed
canio: mimxrt10xx: Fix inverted byte order in CAN frames
1 parent 3483d73 commit 62ea6f9

File tree

1 file changed

+18
-28
lines changed

1 file changed

+18
-28
lines changed

ports/mimxrt10xx/common-hal/canio/__init__.c

Lines changed: 18 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -27,12 +27,6 @@
2727
#include "common-hal/canio/__init__.h"
2828
#include "shared-bindings/canio/RemoteTransmissionRequest.h"
2929

30-
typedef union
31-
{
32-
uint32_t word;
33-
uint8_t bytes[4];
34-
} mimxrt_word_bytes_t;
35-
3630
// Convert from back from FLEXCAN IDs to normal CAN IDs.
3731
#define FLEXCAN_ID_TO_CAN_ID_STD(id) \
3832
((uint32_t)((((uint32_t)(id)) & CAN_ID_STD_MASK) >> CAN_ID_STD_SHIFT))
@@ -62,17 +56,15 @@ bool mimxrt_canio_message_obj_to_flexcan_frame(canio_message_obj_t *src, flexcan
6256
}
6357

6458
dst->length = src->size; // CAN frame data length in bytes (Range: 0~8).
65-
mimxrt_word_bytes_t mixVal;
66-
mixVal.bytes[0] = src->data[0];
67-
mixVal.bytes[1] = src->data[1];
68-
mixVal.bytes[2] = src->data[2];
69-
mixVal.bytes[3] = src->data[3];
70-
dst->dataWord0 = mixVal.word; // CAN Frame payload word0.
71-
mixVal.bytes[0] = src->data[4];
72-
mixVal.bytes[1] = src->data[5];
73-
mixVal.bytes[2] = src->data[6];
74-
mixVal.bytes[3] = src->data[7];
75-
dst->dataWord1 = mixVal.word; // CAN Frame payload word1.
59+
60+
dst->dataByte0 = src->data[0];
61+
dst->dataByte1 = src->data[1];
62+
dst->dataByte2 = src->data[2];
63+
dst->dataByte3 = src->data[3];
64+
dst->dataByte4 = src->data[4];
65+
dst->dataByte5 = src->data[5];
66+
dst->dataByte6 = src->data[6];
67+
dst->dataByte7 = src->data[7];
7668

7769
return true;
7870
}
@@ -97,17 +89,15 @@ bool mimxrt_flexcan_frame_to_canio_message_obj(flexcan_frame_t *src, canio_messa
9789
}
9890

9991
dst->size = src->length; // CAN frame data length in bytes (Range: 0~8).
100-
mimxrt_word_bytes_t mixVal;
101-
mixVal.word = src->dataWord0; // CAN Frame payload word0.
102-
dst->data[0] = mixVal.bytes[0];
103-
dst->data[1] = mixVal.bytes[1];
104-
dst->data[2] = mixVal.bytes[2];
105-
dst->data[3] = mixVal.bytes[3];
106-
mixVal.word = src->dataWord1; // CAN Frame payload word1.
107-
dst->data[4] = mixVal.bytes[0];
108-
dst->data[5] = mixVal.bytes[1];
109-
dst->data[6] = mixVal.bytes[2];
110-
dst->data[7] = mixVal.bytes[3];
92+
93+
dst->data[0] = src->dataByte0;
94+
dst->data[1] = src->dataByte1;
95+
dst->data[2] = src->dataByte2;
96+
dst->data[3] = src->dataByte3;
97+
dst->data[4] = src->dataByte4;
98+
dst->data[5] = src->dataByte5;
99+
dst->data[6] = src->dataByte6;
100+
dst->data[7] = src->dataByte7;
111101

112102
return true;
113103
}

0 commit comments

Comments
 (0)