|
本帖最后由 CCALM 于 2013-5-22 13:20 编辑
下面是发送和接收的时序图
1
2
3
下面是接收时序
1
2
3
真的看不出哪里出问题了,不知道是发送问题还是接收问题!
接收的程序STATUS读出来的值使0E,FIFOSTATUS的值使11,到底是什么情况??
下面贴出发送主函数:- int main()
- {
- char a,b;
-
- GPIO_INIT(); //GPIO初始化
- SPI1_INIT(); //SPI初始化
- NRF24L01_INIT(); //NRF初始化
-
- while(1)
- {
- GPIO_SetBits(GPIOC ,GPIO_Pin_8); ////LED
- SetTX_Mode(); //设置为发送模式
- NRF_TxPacket(TxBuf,32);//发送数据
- a=NRF_Read_Reg(STATUS);//读取STATUS寄存器值
- b=NRF_Read_Reg(FIFO_STATUS);//读取FIFO_STATUS寄存器
- if(a==0x2e) //a=0x2e&&b=0x11说明发送数据成功
- GPIO_WriteBit(GPIOC,GPIO_Pin_6,0); //检查并发送数据,发送完LED亮
- else GPIO_WriteBit(GPIOC,GPIO_Pin_6,1);
- if(!(GPIOC->IDR & GPIO_Pin_11)) NRF_IRQ(); //清中断
- GPIO_WriteBit(GPIOC,GPIO_Pin_7,NRF24L01_Check()); //LED显示NRF存在
- d();
- GPIO_ResetBits(GPIOC,GPIO_Pin_8);
- d();
- }
- }
复制代码 接收程序主函数:- int main()
- {
- int i;
- char a,b;
- GPIO_INIT(); //GPIO初始化
- USART_Config();//串口初始化
- SPI1_INIT();//SPI初始化
- NRF_INIT(); //NRF初始化
- GPIO_WriteBit(GPIOD,GPIO_Pin_6,0);
- while(1)
- {
-
- GPIO_SetBits(GPIOD,GPIO_Pin_5);
- SetRX_Mode();//接收模式
-
- if(NRF_RxPacket(RxBuf,32)) 接收数据
- {
- GPIO_WriteBit(GPIOD,GPIO_Pin_6,1); //接收导数据LED亮
- for(i=0;i<32;i++)
- USART1_Putc(RxBuf[i]);//把接收到的数据发送到串口
- }
- else
- { a=NRF_Read_Reg(STATUS);//读取状态字
- b=NRF_Read_Reg(FIFO_STATUS);
- GPIO_WriteBit(GPIOD,GPIO_Pin_6,0);
- USART1_Putc(a);
- USART1_Putc(b);
- }
- if(!(GPIOC->IDR & GPIO_Pin_11)) NRF_IRQ();//清中断
-
- GPIO_WriteBit(GPIOD,GPIO_Pin_7,NRF_Check());
- d();
- GPIO_ResetBits(GPIOD,GPIO_Pin_5);
- d();
- }
- }
复制代码 !!! |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
阿莫论坛20周年了!感谢大家的支持与爱护!!
你熬了10碗粥,别人一桶水倒进去,淘走90碗,剩下10碗给你,你看似没亏,其实你那10碗已经没有之前的裹腹了,人家的一桶水换90碗,继续卖。说白了,通货膨胀就是,你的钱是挣来的,他的钱是印来的,掺和在一起,你的钱就贬值了。
|