[讨论] 飞思卡尔单片机与rf905的通信spi通信问题

djxzmg   2012-3-16 17:44 楼主

我是一个新人,对飞思卡尔单片机使用的不是很熟,最近在使用飞思卡尔128单片机和nrf905之间做一个无线传输的小协议,选择飞思卡尔为主机模式,并且作为接收终端,用于接收我的发送数据。我的发送端是用51做到已经好使了,没有问题了(发送端暂且不用考虑是好使的)。那我的问题来了,就是接收端接收不到数据,仿真时,spi只是一打开就迅速中断停止了。查看状态寄存器的SPIF位根本没有改变一直是零停在那里。所以我判断这就是症结所在,导致了MCU读取nrf905的接收数据失败了。

查找了好久,资料阅读了好多也没有发现问题的解决方案。听说这里的高手如云,热心的人如云。我相信,我有信心相信我的问题能很快得到高手的指点的。解决我的问题。

{
  //(void)SPI0SR;
 SPI0DRL = byte;
 Delay(2);
 while(!(SPI0SR_SPTEF));//wait until the data is all sent off
 
 }

/*****************************************************************************/
//function SpiRead();
/*****************************************************************************/
uchar SpiRead(void)
{
 
 while(!(SPI0SR_SPIF));  //程序就是卡在这里了,如果屏蔽掉改行代码,spi的数据时运行的状态
 Delay(2);
 return SPI0DRL;  // Return function parameter
}

接收905数据包的函数

void RxPacket(void)
{
 uchar i; 
 TRX_CE=0;     // Set nRF905 in standby mode 
 CSN=0;      // Spi enable for write a spi command
 SpiWrite(RRP);                  
 for (i=0;i<4;i++)      // Read payload comma
 {
  RxBuf=SpiRead();  // Read data and save to buffer
 }
 CSN=1;      // Disable spi
 while(DR||AM); 
   
    Delay(2);
    TRX_CE=1;
 
  
}

 

 

真心求解  希望得到各位的帮助 多谢!

 

 

 

回复评论 (8)

回复 楼主 djxzmg 的帖子

我没有说清楚吧看来 补充:单片机工作的晶振是16Mhz的,905采用从机工作方式,采用三线制spi连接方式。因为只有一个905从机。
现在问题的主要原因是读取数据没有成功,while(!(SPI0SR_SPIF));这个代码总是运行不过去,原因是spif状态位没有改变,这个我在单步调试的时候已经验证过了。
我想知道我的接收端怎样才能使spif位正常,想请用过的好心人解答一下。
点赞  2012-3-16 18:55

大虾们呀 你们在哪里呀 “青青子衿,悠悠我心”我的这个问题就这么的沉了吗。有没有做过的,来解答或是指导亦或是交流一下都很好的呀。 看看这是怎么回事 程序总是调试的不好。 

点赞  2012-3-17 15:03
我用飞思卡尔发送.也还没成...纠结中
点赞  2012-3-17 20:50

这个可以呀, void SpiWrite(uchar  byte)
{
  //(void)SPI0SR;
 SPI0DRL = byte;
 Delay(2);
 while(!(SPI0SR_SPTEF));//wait until the data is all sent off
 
 }

这个发送的程序我是在12日早上调试好的,要加上个延时905才能够处理好,跟波特率没有关系,只要不超过100K就可以了,我想照着这样做就没有问题了,还有问题再联系。

点赞  2012-3-19 09:13
看看SPI的模式配置,有4种,这个模式别错了,错了肯定是不行
Nicrosystem专业提供freescale、TI和STM32高性价比开发板、解决方案 http://nicrosystem.taobao.com
点赞  2012-3-19 10:07

这个SPI的模式肯定是没有错的了,因为发送的时候spi是好用的而且已经成功了,所以呀,接收程序应该是read函数有问题的了,但是原因到现在还是没有发现,逼得我们开始尝试用模拟的试试,但是我还没有放弃对SPI接收方式的调试过程,我还要坚持一下看看。希望各位大虾支持一哈

 

点赞  2012-3-20 09:25
我也是一样的问题…纠结了一个多月了…就是接收端接受不到…甚至连载波都检测不到…
点赞  2012-6-13 01:23
楼主要是成功了求指教…扣扣:252076178
点赞  2012-6-13 01:24
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复