问个MSPFR5739 SPI USCI的问题..急啊...
时钟配置....CSCTL0_H = 0xA5;
CSCTL1 |= DCOFSEL0 + DCOFSEL1; // Set max. DCO setting 8MHZ
CSCTL2 = SELA_0 + SELS_3 + SELM_3; // set ACLK = XT1; MCLK = DCO
CSCTL3 = DIVA_0 + DIVS_0 + DIVM_0; // set all dividers
CSCTL4 |= XT1DRIVE_0;
CSCTL4 &= ~XT1OFF;
模块配置....
UCA0CTLW0 |= UCSWRST; // **Put state machine in reset**
UCA0CTLW0 |= UCMST+UCSYNC+UCCKPL+UCMSB+UCSSEL_2; // 3-pin, 8-bit SPI master Clock polarity high, MSB , SMCLK=DCO
UCA0BR0 = 0x02; // /2baud
UCA0BR1 = 0; //
UCA0MCTLW = 0; // No modulation
UCA0STATW|=UCLISTEN; //Receive the transmitted;
UCA0CTLW0 &= ~UCSWRST; // **Initialize USCI state machine**
//UCA0IE |= UCTXIE; // Enable USCI_A0 TX interrupt We will useno interruption.
然后开始写
void spiw(unsigned char word)
{
while((UCA0IFG&UCTXIFG)==0);
UCA0TXBUF=word;
};
出问题了....写入一个字节后,UCTXIFG应该按照说明书自动清零才对,为什么没自动清零呢?而且发送寄存器根本不移位... 我把输出监听那个去掉后,
第一次写入一个输出字节,结果RXBUF立即就变成了0XFF.........
这是怎么回事???是不是SPI从设备有问题???用G2553调试木有问题啊... UCTXIFG清0时间很短,可能观察不到,就马上置位了。
移位寄存器移没移位你是观察不到,要看是不是正常工作要用示波器看输出波形。
至于输入是什么数据,要看你从设备的相应,观察MISO lcofjp 发表于 2012-12-9 10:58 static/image/common/back.gif
UCTXIFG清0时间很短,可能观察不到,就马上置位了。
移位寄存器移没移位你是观察不到,要看是不是正常工作 ...
哦,是这样啊...但是TXBUF全部移位完以后不应该是0么...最终还是写入的值没变... zgbkdlm 发表于 2012-12-9 12:07 static/image/common/back.gif
哦,是这样啊...但是TXBUF全部移位完以后不应该是0么...最终还是写入的值没变... ...
你好好看看手册吧,TXBUF不是移位寄存器,是缓冲区。
页:
[1]