MSP430 SPI硬件接口

2023-11-01 105浏览
百检网是一家专业的第三方检测平台,汇聚众多拥有权威资质的第三方检测机构为你提供一站式的检测服务,做检测就上百检网。百检网让检测从此检测,一份报告全国通用,专业值得信赖。

所使用的为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(); }


百检网秉承“客户至上,服务为先,精诚合作,以人为本”的经营理念,始终站在用户的角度解决问题,为客户提供“一站购物式”的新奇检测体验,打开网站,像挑选商品一样简单,方便。打破行业信息壁垒,建构消费和检测机构之间高效的沟通平台