Intel和Motorola两种CAN总线编码格式详解

1、Byte order for Intel Processors(Little Edian)

ID:XX

MSB                                                                                                      LSB

Byte0

7

6

5

4

3

2

1

0

Byte1

15

14

13

12

11

10

9

8

Byte2

23

22

21

20

19

18

17

16

Byte3

31

30

29

28

27

26

25

24

Byte4

39

38

37

36

35

34

33

32

Byte5

47

46

45

44

43

42

41

40

Byte6

55

54

53

52

51

50

49

48

Byte7

63

62

61

60

59

58

57

56

Example:

(1)在0字节上填充一个6位的数据:

Byte0

 

 

MSB

<---

<--- <---

<---

LSB

填充模式:起始位:0,长度6

(2)在1和2字节上填充一个12位的数据(高位在低字节,低位在高字节):

Byte1

<---

<---

<---

LSB

 

 

 

 

Byte2

MSB

<---

<---

<---

<---

<---

<---

<---

填充模式:起始位:12,长度12

 

2、Byte order for Mortorola Processors(BigEdian)

ID:XX

MSB                                                                                                       LSB

Byte0

7

6

5

4

3

2

1

0

Byte1

15

14

13

12

11

10

9

8

Byte2

23

22

21

20

19

18

17

16

Byte3

31

30

29

28

27

26

25

24

Byte4

39

38

37

36

35

34

33

32

Byte5

47

46

45

44

43

42

41

40

Byte6

55

54

53

52

51

50

49

48

Byte7

63

62

61

60

59

58

57

56

Example:

(1)在0字节上填充一个6位的数据:

Byte0

 

 

MSB

<---

<---

<---

<---

LSB

填充模式:起始位:0,长度6

(2)在1和2字节上填充一个12位的数据(高位在高字节,低位在低字节):

Byte1

 

 

 

 

MSB

<---

<---

<---

Byte2

<---

<---

<---

<---

<---

<---

<---

LSB

填充模式:起始位:11,长度12

 

总结:

(1)当一个信号的数据长度不超过 1 个字节(8 位)时,Intel 与 Motorola 两种格式的编码结果没有什么不同,完全一样。

(2)当信号的数据长度超过 1 个字节(8 位)时,两者的编码结果出现 了明显的不同:

         Intel是高位在低字节,低位在高字节;

         Motorola是高位在高字节,低位在低字节;

 

 

猜你喜欢

转载自blog.csdn.net/hunzhangzui9837/article/details/82966103
今日推荐