TI中文支持网
TI专业的中文技术问题搜集分享网站

MSP430F5438A 的SPI问题

使用的是UCB0SPI,初始化函数如下:

void SPI_Inint()
{

P3SEL |= BIT1+BIT2+BIT3;    

UCA0CTL 1 |= UCSWRST;     
UCA0CTL0 |= UCSYNC+UCMSB+UCMODE_0; //同步模式MSB优先,3线SPI

UCA0CTL1 &= ~UCSWRST; // **Initialize USCI state machine**
}

初始化之后,

while (!(UCB0IFG&UCTXIFG));  

UCB0TXBUF = 0xaa;

单步调试的时候,发现TXBUF没有赋值之前,UCB0IFG = 0x02,赋值之后,UCB0IFG = 0x03,且循环发送时,第二次给TXBUF赋值时,UCB0STAT = 0x20,根据数据手册显示是出现了超限错误。请问这是什么原因

yongjie pan2:

回复 灰小子:

代码复制错了,我初始化的的确是UCB0,现在的问题已经找到,寄存器配置的写法顺序不对。

UCB0CTL0 |= UCMST + USCYNC + USMSB;

UCB0CTL1 |=UCSSEL_2 + UCSWRST;

UCB0BR0 = 0;

UCB0BR1 = 0;

USB0CTL1 &=~UCSWRST;

这种写法就可以成功驱动SPI

赞(0)
未经允许不得转载:TI中文支持网 » MSP430F5438A 的SPI问题
分享到: 更多 (0)