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.

MSP430F169如何判断SPI数据已经发送完成

Other Parts Discussed in Thread: MSP430F169

我用MSP430F169通过SPI控制OLED,我用 while (!(IFG1 & UTXIFG0)); 无法判断数据是否发送完成。要在后面加一段延时OLED才正常工作。

下面是程序:

   配置程序

ME1 |= USPIE0; // Enable USART0 SPI mode
UCTL0 |= CHAR + SYNC + MM; // 8-bit SPI Master **SWRST**
UTCTL0 |= 0X80 + SSEL1 + 0x02; // SMCLK, 3-pin mode
U0BR0 = 0x03; // UCLK/2
U0BR1 = 0x00; // 0
UMCTL0 = 0x00; // no modulation
UCTL0 &= ~SWRST; // Initialize USART state machine
P3SEL |=0x0e; // P3.1-3 SPI option select
P3DIR |=0x01; // P3.0 output direction

发送数据,oled正常工作

while (!(IFG1 & UTXIFG0));
TXBUF0=dat;
 a=9;
 while(a--);

发送数据。OLED不正常工作

while (!(IFG1 & UTXIFG0));
TXBUF0=dat;
// a=9;
// while(a--);

感觉while (!(IFG1 & UTXIFG0));这句话没有起作用啊,网上及官方例程都是这样写的,但是我的却不能真长工作。