飞思卡尔单片机与rf905的通信spi通信问题
[复制链接]
我是一个新人,对飞思卡尔单片机使用的不是很熟,最近在使用飞思卡尔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; }
真心求解 希望得到各位的帮助 多谢!
|