使用的是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
TI中文支持网



