2572|2

447

帖子

0

TA的资源

纯净的硅(中级)

楼主
 

5438 NRF905 SPI [复制链接]

用5438与NRF905做发送与接收数据的实验,用I/O口模拟SPI时没有问题,但将USCI设置为SPI模式时,无法通信,下面是接收数据的代码,麻烦大家给看一看

void RxPacket(unsigned char *RxBuf)
{          
        while(!(DR_IN));   //DR_IN=1时,收到正确的数据包
        uchar i;
        TRX_CE_0;          //由接收状态转到空闲状态
        CSN_0;             //CSN=0; // Spi enable for write a spi command 
        while (!(UCB0IFG&UCTXIFG));
        UCB0TXBUF=RRP;     // 写“读数据”命令
        for (i=0;i<SIZE;i++)
         {while (!(UCB0IFG&UCRXIFG));
         RxBuf=UCB0RXBUF; // 接收收到的数据
         while (!(UCA1IFG&UCTXIFG));
         UCA1TXBUF=RxBuf; //发送给PC
         }
        CSN_1;              //CSN=1; // Spi disable  
        while(AM_IN||DR_IN);//读完数据后,NRF905自动将AM_IN、DR_IN清零
        TRX_CE_1;           //转到接收状态
       
}
void init_usci_b()    //串口初始化
{ UCB0CTL1 |= UCSWRST;                      // **Put state machine in reset**
  UCB0CTL0 |= UCMST+UCSYNC+UCCKPL+UCMSB;    // 3-pin, 8-bit SPI master
                                                                                      // Clock polarity high, MSB
  UCB0CTL1 |= UCSSEL_1;                     // ACLK
  UCB0BR0 = 3;                          
  UCB0BR1 = 0;                              //
  //UCB0MCTL = 0;                             // No modulation
  UCB0CTL1 &= ~UCSWRST;                     // **Initialize USCI state machine**
                
}

void main()
{ WDTCTL=WDTPW+WDTHOLD;    //关闭看门狗
  InitIO();             //IO口初始化
  init_usci_a();
  init_usci_b();
  NRF905_RxOn();        //置接收模式
   while(1)
   {       
     RxPacket(RxBuf);
     _NOP();
   }
}

红色语句以前为I/O模拟SPI的程序,现改为SPI模式,InitIO()和init_usci_a()已经经验证没问题,就不附上了。发送数据的程序仍为I/O模拟SPI,所以发送也没问题了,就是收不到

最新回复

现在问题的质量,以及发帖的题目都有很大的进步啊!  详情 回复 发表于 2012-3-23 21:40
 
点赞 关注

回复
举报

424

帖子

0

TA的资源

纯净的硅(高级)

沙发
 
真不知道该怎么回答你的问题。
NRF905又不了解,读写时序怎么样又不知道。
等做过这部分的人来给你说吧
 
 

回复

424

帖子

0

TA的资源

纯净的硅(高级)

板凳
 
现在问题的质量,以及发帖的题目都有很大的进步啊!
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/6 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表