This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] TMS570LC4357:BE32转换

Guru**** 2124260 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/811956/tms570lc4357-be32-convertion

器件型号:TMS570LC4357

很棒

我使用 TMS570LC Launch 与 SD 卡通信、并使用 FAT32存储.txt 文件  

FAT32使用小端字节序格式、因此我应该在 每次从 SD 卡接收数据时以及每次发送数据时转换数据。

基本转换代码的一些工作方式不正确、在搜索时、我了解到 TMS570使用 BE32。



问题是  
BE32和正常大端字节序(字节)之间的区别是什么?

是否有任何代码或参考可帮助我从小端字节序转换为 BE32、反之亦然。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Hamdy、

    在 BE32中、交换字节0和字节3、字节1和字节2。

    请参阅此链接中的表格:

    您可以使用此函数在发送前和接收后混合数据:

    uint32开关数据(uint32字)

    #if ((__little_endian__= 1)||(__little_ENDIAN__= 1)

    返回字;

    其他

    返回__rev (word);

    #endif

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    这意味着在使用 uint16时,字节顺序与小端字节序相同或也交换了字节序。

    感谢您王的快速响应。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Hamdy、

    很抱歉耽误你的回答。 如果使用 uint16、则字节顺序也应交换。

    对于 RM57小端字节序器件:

    将 uint16 (0x1234)写入 SRAM:  

                      地址  偏移量:       0x00            0x01          0x02          0x03

                       UINT16=0x1234        0x34             0x12

    对于 TMS570LC43x 大端器件:

    将 uint16 (0x1234)写入 SRAM:  

                      地址  偏移量:       0x00            0x01          0x02          0x03

                       UINT16=0x1234        0x12            0x34