当前位置:首页 > 单片机 > 单片机
[导读] 所使用的为MSP430F5438,比较老的一款单片机了。不过它的串口还是比较多,所以本人还是比较喜欢。在使用SPI硬件接口的时候,初始化程序代码:void halCom3Init(void){ unsigned char Data[3]; P3SEL |

所使用的为MSP430F5438,比较老的一款单片机了。不过它的串口还是比较多,所以本人还是比较喜欢。

在使用SPI硬件接口的时候,初始化程序代码:

void halCom3Init(void)
{
unsigned char Data[3];
P3SEL |= (BIT0+BIT4+BIT5);
P3DIR |= BIT3;
UCA0CTL1 |= UCSWRST; // **Put state machine in reset**
UCA0CTL0 |= UCMST+UCSYNC+UCCKPH+UCCKPL+UCMSB; // 3-pin, 8-bit SPI master+UCCKPL
// Clock polarity high, MSB
UCA0CTL1 |= UCSSEL_2; // SMCLK
UCA0BR0 = 0x04; // /2
UCA0BR1 = 0; //
UCA0CTL1 &= ~UCSWRST; // **Initialize USCI state machine**
// UCA0IE |= UCRXIE; // Enable USCI_B0 RX interrupt

}

通常时序由UCCKPH和UCCKPL来控制,具体可参看USER'S GUIDE。实际调试的时候,CLK下降沿或上升沿和DATA的转变时间几乎重合,导致硬件SPI接口不好使。

改用软件模拟SPI接口后,感觉很稳定。具体时序可参照所通信的器件的时序图来调整。

//****************************************模拟SPI实现DAC8734基本写操作
void DAC8734_Write(UCHAR txdata)
{
UCHAR i;
SETCLK;
for(i=0;i<8;i++)
{
SETCLK;
if(0x80&txdata)
SETSDI;
else CLRSDI;
_NOP();
CLRCLK;
txdata<<=1;
}
SETCLK;
}
//****************************************模拟SPI实现写8734命令字
void DAC8734WriteReg(UCHAR* Dat)
{
CLRCS;
_NOP();
DAC8734_Write(Dat[0]);
DAC8734_Write(Dat[1]);
DAC8734_Write(Dat[2]);
SETCS;
_NOP();
}


本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
换一批
延伸阅读
关闭