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.

msp430fr2422做SPI从机问题

Other Parts Discussed in Thread: MSP430FR2422

char TXData[3]={1,2,3};

#pragma vector=USCI_A0_VECTOR
__interrupt void USCI_A0_ISR(void)
{
switch(__even_in_range(UCA0IV,USCI_SPI_UCTXIFG))
{
case USCI_NONE: break; // Vector 0 - no interrupt
case USCI_SPI_UCRXIFG:
RXData = UCA0RXBUF;
if(RXData==0x45)
{//接收到0x45,向主机发送3个字节数据
TXCount = 0;
UCA0IE |= UCTXIE; // Enable TX interrupt
}
UCA0IFG &= ~UCRXIFG;
break;
case USCI_SPI_UCTXIFG:
UCA0TXBUF = TXData[TXCount++]; // Transmit characters
if(TXCount>=3)
{//关发送中断
UCA0IE &= ~UCTXIE;
}
break;
default: break;
}

}

现在msp430fr2422做SPI从机,中断程序如上,实现测试功能:SPI向从机进行写一个字节(0x45),再读取3个字节。现在主机读取到的数据不是1,2,3。

第1次写读,主机得到数据为2,2,2

第2次写读,主机得到数据为3,3,3

第3次写读,主机得到数据为2,2,2

第4次写读,主机得到数据为3,3,3

。。。

请问问题出有哪里?