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.

MSP430 移位 SPI

       通过SPI接收32位数据的代码如下,程序中通过移位将接收的一字节组合成32位数据,接收的字节分别为0x01,0xDA,0xA8,0xC8,但是移位后Result_read 的值分别为0x100, 0xffffDA00,0xfffffA800,0xffffA8C8。咨询问题如下:

(1)为什么接收第三个字节时高16位的数据全为f,而不是之前接收到的两个字节数据,是否与MSP430为16位处理器有关,还是程序有错误?

(2)为什么从第二个字节左移8位后,高位全为f

       int Result_read=0;
        char Result_read_mid;

      TXBUF0 = read_opcode_addr; //发送读32数命令

        while (TxFlag_Spi==0) SpiLpm();  // 等待命令发送完成 
        //Reading byte1
 TXBUF0 = 0x66;       //any data   ??
        while (TxFlag_Spi==0) SpiLpm();  // 等待上一字节发完,并休眠
        Result_read_mid = RXBUF0;
        Result_read = Result_read | Result_read_mid;
        Result_read = Result_read<<8;
       
        //Reading byte2
        TXBUF0 = 0x66;       //any data   ??
        while (TxFlag_Spi==0) SpiLpm();  // 等待上一字节发完,并休眠
 Result_read_mid = RXBUF0;
        Result_read = Result_read | Result_read_mid;
        Result_read = Result_read<<8;
       
        //Reading byte3
        TXBUF0 = 0x66;       //any data   ??
        while (TxFlag_Spi==0) SpiLpm();  // 等待上一字节发完,并休眠
 Result_read_mid = RXBUF0;
        Result_read = Result_read | Result_read_mid;
        Result_read = Result_read<<8;
       
        //Reading byte4
        TXBUF0 = 0x66;       //any data   ??
        while (TxFlag_Spi==0) SpiLpm();  // 等待上一字节发完,并休眠
 Result_read_mid = RXBUF0;
        Result_read = Result_read | Result_read_mid;