zgbkdlm 发表于 2012-12-9 10:33:48

问个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应该按照说明书自动清零才对,为什么没自动清零呢?而且发送寄存器根本不移位...

zgbkdlm 发表于 2012-12-9 10:48:03

我把输出监听那个去掉后,
第一次写入一个输出字节,结果RXBUF立即就变成了0XFF.........
这是怎么回事???是不是SPI从设备有问题???用G2553调试木有问题啊...

lcofjp 发表于 2012-12-9 10:58:29

UCTXIFG清0时间很短,可能观察不到,就马上置位了。
移位寄存器移没移位你是观察不到,要看是不是正常工作要用示波器看输出波形。
至于输入是什么数据,要看你从设备的相应,观察MISO

zgbkdlm 发表于 2012-12-9 12:07:07

lcofjp 发表于 2012-12-9 10:58 static/image/common/back.gif
UCTXIFG清0时间很短,可能观察不到,就马上置位了。
移位寄存器移没移位你是观察不到,要看是不是正常工作 ...

哦,是这样啊...但是TXBUF全部移位完以后不应该是0么...最终还是写入的值没变...

lcofjp 发表于 2012-12-9 13:24:13

zgbkdlm 发表于 2012-12-9 12:07 static/image/common/back.gif
哦,是这样啊...但是TXBUF全部移位完以后不应该是0么...最终还是写入的值没变... ...

你好好看看手册吧,TXBUF不是移位寄存器,是缓冲区。
页: [1]
查看完整版本: 问个MSPFR5739 SPI USCI的问题..急啊...