在进行配置MSP430F6638 SPI时,发现SPI模块没有时钟信号输出,请大神指点一下。
已经参考了MSP430F563x_MSP430F663x_Code_Examples中的例子。
#define SCK P8_1 //UCA1_CLK
#define SIMO P8_2 //UCA1_SIMO
#define SOMI P8_3 //UCA1_SOMI
#define CS P8_5
#define RESET P4_4 //slave reset
P8SEL |= 0x0E;
P8DIR |= 0x2E;
P8OUT |= 0x20; //cs high
P4OUT |= 0x10;
UCA0CTL1 |= 0x01; // Put state machine in reset
UCA0CTL0 &= ~0xFF;
UCA0CTL0 |= 0xA9; // 3-pin, 8-bit SPI master
UCA0CTL1 &= ~0xC0;
UCA0CTL1 |= 0x80;
UCA0BR0 = 0x10; //SMCLK=8Mhz
UCA0BR1 = 0;
UCA0MCTL = 0;
UCA0CTL1 &= ~0x01;
P4OUT &= ~0x10; //slave reset
P8OUT &= ~0x20;
不知是不是还漏配了哪个寄存器或者配错了?在主机发送数据的时候,都没有时钟起来。
在调试时,看到UCA0TXBUF数据有变化,但是UCA0RXBUF一直没有数据,而且会出现UCOE错误。
不知有没有使用查询方法,进行发送和接收数据的例程参考?
非常谢谢!
key dongle:
回复 Bruce Wei:
好的,谢谢!现在基本调通了。
有个小疑问,在官方程序msp430f66xx_uscia0_spi_09.c中,
P2SEL |= BIT0+BIT1+BIT2; // Assign P2.0 to UCB0CLK and… P2DIR |= BIT0+BIT1+BIT2; // P2.1 UCB0SOMI P2.2 UCB0SIMO
开始将P2.0,P2.1,P2.2映射为UCB0模块的引脚,然而后面
初始化的却是UCA0模块的配置。
UCA0CTL1 |= UCSWRST; // **Put state machine in reset** UCA0CTL0 |= UCMST+UCSYNC+UCCKPL+UCMSB; // 3-pin, 8-bit SPI master // Clock polarity high, MSB UCA0CTL1 |= UCSSEL_2; // SMCLK UCA0BR0 = 0x02; // /2 UCA0BR1 = 0; // UCA0MCTL = 0; // No modulation UCA0CTL1 &= ~UCSWRST; // **Initialize USCI state machine** UCA0IE = UCRXIE ; // Enable USCI_A0 RX,TX interrupt
SPI的引脚映射和模块配置不一致,敬请bruce确认一下。
程序库版本为MSP430ware_1_70_00_28。
key dongle:
回复 key dongle:
不好意思, 之前看错了,现知道了。