实例代码:
分析:直接分析SPI部分,其实这篇的话也是对我自己一些不理解的进行提问,希望能得到解答。这系列可以说是虎头蛇尾吧,不好意思。
1、配置USCI_A0为I2C模式。
(1)在配置或者重新配置eUSCI_A模块时应该先将UCSWRST置1以避免出现配置错误,配置完之后释放复位。
- UCA0CTLW0 = UCSWRST; // **Put state machine in reset**
- UCA0CTLW0 &= ~UCSWRST; // **Initialize USCI state machine**
(2)设置模式。
- UCA0CTLW0 |= UCMST | UCSYNC | UCCKPL | UCMSB; // 3-pin, 8-bit SPI master
- // Clock polarity high, MSB
其中,UCMST = 0x0800, UCSYNC = 0x0100, UCCKPL = 0x4000, UCMSB = 0x2000。
这里我们会发现,eUSCI_A在UART和SPI两种模式下,UCAxCTLW0 寄存器是不一样的。我有一个疑问:
eUSCI_A在UART和SPI两种模式是通过哪里切换的,只要PxSEL设置了两个引脚就是UART模式,四个引脚就自动进入SPI模式?
(3)选择eUSCI_A时钟源
- UCA0CTLW0 |= UCSSEL__ACLK; // ACLK
其中,UCSSEL__ACLK = 0x0040。
(4)设置设置比特率。
- UCA0BR0 = 0x02; // /2
- UCA0BR1 = 0; //
fBitClock = fBRCLK/UCBRx
(5)我在SPI的模式说明里发现没有对UCA0MCTLW这个寄存器的说明,是不是和UART模式时的寄存器一模一样。用来配置波特率参数?希望有知道的帮忙解答下这条代码的作用:
UCA0MCTLW = 0; // No modulation
(6)使能中断
|