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.

【求助】Keystone_SPI例程 中的 “SPI_Shift_Direction”问题

Other Parts Discussed in Thread: ADS1298

       各位工程师好,我在调试论坛推荐使用的Keystone_SPI例程,过程中遇到一些问题,故向工程师咨询一下。

      在例程中的 SPI_Init() 初始化函数中需要配置SPI的移位方向(见下图1),即SPI_Shift_Direction,它包括两项:SPI_MSB_SHIFT_FIRSTSPI_LSB_SHIFT_FIRST(见下图2)。

     在实际应用中发现配置SPI_Shift_Direction 不同会直接影响和从设备的SPI通信(我的从设备ADS1298手册要求是MSB(见图3),但是我设置SPI_Shift_Direction SPI_MSB_SHIFT_FIRST时通信不成功,当改变为SPI_LSB_SHIFT_FIRST时则工作正常)。

     希望工程师回答一下

1.SPI_Shift_Direction的工作机理;

2.SPI_MSB_SHIFT_FIRST和SPI_LSB_SHIFT_FIRST两者有何不同,应当基于何种情况才能正确设置;

3.我在工程Properties-general中设定Device endianness为little(见图4),请问这个选项对于选择SPI_MSB_SHIFT_FIRST和SPI_LSB_SHIFT_FIRST有影响吗?如何判断一个机器是大端序(big-endian)还是小端序(little-endian)呢?  请工程师提供一下方法!

      thanks in advance!

       

                                                                                      图1

                                                  图2

                                                            图3


                                                                 图4

  • shift direction指的是16bit输出串行输出的顺序,MSB first out即从高bit开始依次将数据输出,LB first out即对应从低bit依次输出。

    编译工程的大小端决定了数据存储字节序,如在小端模式读取16bit的数据,高字节对应高地址存储的数据,地字节对应低地址存储的数据,在写数据时存储顺序也是如此;大端模式则正好相反,读取16bit数据,低地址对应高字节,高地址对应低字节。

    我觉得你可以测试当DSP侧SPI进行不同的配置后,分析对端收到的数据格式进行调整。