TI中文支持网
TI专业的中文技术问题搜集分享网站

MSP430F5529的SPI接收中断问题

大家好,我最近用5529的SPI控制ADS1292出现了几点问题,我在数据手册看到SPI接收与发送中断是独立的,初始化的时候初始化了UCRXIE这个,但是我在发送的时候刚把数据装入TXBUF之后,UCRXIFG马上置位了,然后进入中断,我想问这个正常吗?下面是我的程序

#include <msp430.h>

#define uint unsigned int
#define uchar unsigned char

uint y;

void Init_SPI(void);
void delay(uint ms);
/*
* main.c
*/
int main(void)

{
WDTCTL = WDTPW | WDTHOLD; // Stop watchdog timer

Init_SPI();

 while (!(UCB0IFG & UCTXIFG));
UCA0TXBUF = 0x44;

return 0;
}

void Init_SPI(void)
{

P3SEL |= BIT0 + BIT1 +BIT2; // Set SPI peripheral bits
P3DIR |= BIT0 + BIT2; // Clock and Din as output
P3DIR &= ~BIT1; // Dout as input
P3REN |= BIT1; //enable P3.1 inside resistant
UCA0CTL1 = UCSWRST;
UCA0CTL0 |= UCMSB+UCMST+UCSYNC+UCMODE_0 ;//+UCCKPL;
UCA0CTL1 |= UCSSEL_2;
UCA0BR0 = 0X02;
UCA0BR1 = 0;
UCA0CTL1 &= ~UCSWRST;
UCA0IE |= UCRXIE;
_BIS_SR(GIE); //开可屏蔽中断
}

/*********************************************************************************************************
* delay
*
*******************************************************************************************************/
void delay(uint ms)
{
uint i;
while(ms–)
{
for(i=0;i<150;i++);
}
}

#pragma vector=USCI_A0_VECTOR
__interrupt void USCIA0_ISR (void)
{
if(UCA0IFG & UCRXIFG)
{
y = UCA0RXBUF; 

}
}

还有控制ADS1292的时候我控制寄存器的时序是 复位->CS拉低->发送地址+40h->发送0(操作一个寄存器)—>发送操作数,这样有问题吗?SCLK的频率是ADS1292频率的1/2。

困扰一段时间了,希望能帮我解答下,谢谢!

zhiye Lai:

有人吗,你们用SPI的时候没出现过这个问题吗

zhiye Lai:

程序可能有些错误,但是是贴程序上来的时候没有复制完全的问题,原来的太长,A0,B0暂时不要纠结,测试程序检查过没有问题额

赞(0)
未经允许不得转载:TI中文支持网 » MSP430F5529的SPI接收中断问题
分享到: 更多 (0)