根据多字节数据在存储单元中的字节摆放顺序的不同,分为大端模式和小端模式。
大端模式:低地址存放高位数据,高地址存放低位数据,与我们实际书写数字的顺序一致。
小端模式:低地址放低位数据,高地址放高位数据。
MSB和LSB即最高有效位和最低有效位,是单位字节中每一位的排列顺序。在大端模式中,从左到右:MSB......LSB(符合正常的书写习惯),小端:LSB......MSB。
在大小端模式不同的设备之间进行数据通信时,要注意进行端模式的转换。
不同端模式的硬件在多字节数据存储的过程是相同的即按照字节接收的先后顺序由低地址向高地址依次存放,也就是说先收到的数据放置在低地址,后接收到的数据放置在高地址,数据发送时,也按照地址由低到高的顺序取数据发送。在此基础上,我们分析端模式转换的必要性:假设在数据采集接收中,AD芯片负责采集数据,为大端模式,DSP芯片负责接收AD数据,为小端模式,二者交互一个32位数据0x11 22 33 44时,AD芯片以大端模式存储该数据,因此在AD中该数据的存储按照高字节放低地址,低字节放高地址的顺序:
低地址 11
地址+1 22
地址+1 33
高地址 44,
按照上述的多字节数据收发方式,该数据按照由低地址到高地址的顺序发送给DSP,而DSP也按照地址由低到高的顺序存放:
低地址 11
地址+1 22
地址+1 33
高地址 44,
乍一看,数据收发前后并没有变化,但是看似相同的字节摆放顺序在不同端模式的设备中的解读方式是完全不同的。大端模式的AD芯片中,该数据逻辑上表示为0x11223344,但是在小端模式的DSP中,该数据被理解为:0x44332211,这种解读方式的不同是由于端模式中,数据总线的MSB和LSB的顺序不同:大端模式为
(MSB)0...........................31(LSB)
小端模式:
(LSB)0...........................31(MSB)