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.
通过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;