分享我的launchpad学习心得----------------SPI的使用
[复制链接]
SPI的使能方法: UCA0CTL1 &= ~UCSWRST; // **Initialize USCI state machine**
在主模式下,只有往 UCxTXBUF送数据的时候,SMCLK才会被激活。也就是说就算你只想接收数据,也得往UCxTXBUF写数据。也就是说发送和接收是并行的。 接下来的图片证明了上述的说法:
SPI时钟的大小的设置方法:
Fbrclk 是由UCA0CTL1寄存器中的UCSSEL选定的,可以来选择ACLK和SMCLK。 UCBRX 由两个8位的寄存器BR0和BR1组成,意思是最大值可达65535 。
SPI的中断:
USCI有一个发送中断向量和一个接收中断向量。当接收缓冲寄存器UCxRXBUF接收到一个字符时,对应的中断标志位UCxRXIFG就会置1,读取了UCxRXBUF后,UCxRXIFG就会自动复位。当发送缓冲器UCxTXBUF为空时,对应的中断标志位UCxTXIFG就会置1,表明可以想发送缓冲写入数据,UCxTXIFG不为1时,写入数据将会导致数据出错。 当允许了发送和接收中断,并开启了全局中断时,当UCxRXBUF和UCxTXIFG为1时都会触发中断。 SPI时序图:
可以看到,UCCKPH,和UCCKPL的组合可产生不同的锁存发送数据的沿,上升沿或者下降沿。值得一提的是,还可以设置数据的高位在前还是低位在前。
下面上一个源码:
|