完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我想用MSP430F149单片机控制SCA100倾角传感器,来读取Y轴加速度以及温度,需要用到SPI接口,请问谁能提供一下SPI程序?我这里写了一个程序,但是读出来的数据老是0,不知道哪里设置不对,我把程序贴出来,请大家指教。 #include unsigned char UART0_RX_BUF[2]; //串口0的接收缓冲区 unsigned int temp;unsigned int y; void Portinit() { P3SEL = BIT1+BIT2+BIT3; // Setup P3.1/2/3 for SPI mode P3DIR |= BIT0+BIT1+BIT3; // P3.0 for slave initialization P3OUT=BIT0+BIT1+BIT3; } void Init_SPI() { U0CTL|= SWRST; U0CTL|= CHAR + SYNC + MM; // 8-bit, SPI, Master U0TCTL=0x00; U0TCTL = CKPH + SSEL0 + STC; //时钟源为ACLK,3线模式,上升沿数据有效 U0BR0 = 0x07; // 波特率为4681 U0BR1 = 0x00; U0MCTL = 0x00; ME1 = USPIE0; //SPI0模块允许 U0CTL &= ~SWRST; IE1 |= URXIE0; //接收中断允许 } void CLKInit() { unsigned int i; BCSCTL1 &= ~XT2OFF; // XT2on do { IFG1 &= ~OFIFG; // Clear OSCFault flag for (i = 0xFF; i > 0; i--); // Time for flag to set } while ((IFG1 & OFIFG)); // OSCFault flag still set? BCSCTL2 |= SELM_2 + SELS; // MCLK = SMCLK = XT2 (safe) } void CS_Enable(void) //片选信号置低 { P3OUT &= ~BIT0; _NOP(); _NOP(); } void CS_Disable(void) //片选信号置高 { P3OUT |= BIT0; _NOP(); _NOP(); } void SendCode(unsigned char code) { while ((IFG1 & UTXIFG0) == 0); TXBUF0=code; //发送命令 } void PowerUp(void) //发送加电指令 { unsigned char code; code=0x00; SendCode(code); } void ReadTR(void) //发送加电指令 { unsigned char code; code=0x08; SendCode(code); } void ReadAY(void) //发送加电指令 { unsigned char code; code=0x11; SendCode(code); } void main(void) { WDTCTL = WDTPW + WDTHOLD; // Stop WDT CLKInit(); PortInit(); Init_SPI(); _EINT(); CS_Enable(); //片选使能 int i; for(i=1000;i>0;i--); //延迟一点时间 PowerUp(); //发送加电指令 CS_Disable(); //片选禁止 for(i=500;i>0;i--); //至少延迟150us CS_Enable(); //片选使能 for(i=100;i>0;i--); //延迟一点时间 ReadTR(); LPM0; //temp=RXBUF0; CS_Disable(); //片选禁止 for(i=500;i>0;i--); //至少延迟150us CS_Enable(); //片选使能 for(i=100;i>0;i--); //延迟一点时间 ReadAY(); LPM0; while(1); } #pragma vector=USART0RX_VECTOR __interrupt void SPI0_rx(void) { int i; for(i=0;i<2;i++) { UART0_RX_BUF=RXBUF0; } _BIC_SR_IRQ(CPUOFF); } |
|
相关推荐
6 个讨论
|
|
只有小组成员才能发言,加入小组>>
3030个成员聚集在这个小组
加入小组2923 浏览 1 评论
MSP430FR5994 使用库函数 定时器触发AD问题请教
3594 浏览 2 评论
请问怎么把下面51单片机的代码改成msp430 g2 pocket的代码,还有改下时间变成30秒
2341 浏览 1 评论
4800 浏览 1 评论
2573 浏览 1 评论
1323浏览 3评论
MSP430FR5994 使用库函数 定时器触发AD问题请教
3594浏览 2评论
2923浏览 1评论
1506浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-27 17:53 , Processed in 1.416787 second(s), Total 52, Slave 44 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号