MSP430F448的SPI接口配置如下:
char SpiMasterInit(void)
{
UCTL0 |= SWRST; //初始
ME1 |= USPIE0; // Enable USART0 SPI mode
UCTL0 |= CHAR + SYNC + MM; // 8-bit SPI Master **SWRST**
UTCTL0 |= CKPH + SSEL1 + SSEL0 + STC; // SMCLK, 3-pin mode
UBR00 = 0x02; // UCLK/2
UBR10 = 0x00; // 0
UMCTL0 = 0x00; // no modulation
UCTL0 &= ~SWRST; // Initalize USART state machine
IE1 |= URXIE0 + UTXIE0; // Enable USART0 TX RX interrupt
P3SEL |= 0x0E; // P3.1-3 SPI option select
P3DIR |= 0x01; // P3.0 output direction
return(1); //设置成功
}
用IAR进行调试发现如下问题:
(1)当发生一字节数据时,先进入接收中断,然后进入发送中断(IFG1相应接收和发送中断标志同时置1),但是接收到的数据为0;
(2)当接收一字节数据时,先发送0xff,然后等待接收数据,发送完0xff后,仍先进入接收中断,然后进入发送中断,接收到的数据仍为0;
我现在有点搞不清SPI的工作原理了,如何才能接收到从机的有效数据呢?
希望大家予以回复,谢谢。