有NRF24L01程序的时序图,帮帮忙分析下哪里出问题了!通信不了
本帖最后由 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);//把接收到的数据发送到串口
}
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();
}
}!!! 等待大神...{:cry:}{:cry:}{:cry:}{:cry:}{:cry:}{:cry:}{:cry:} {:cry:}{:cry:}{:cry:}{:cry:}{:cry:}{:cry:} SOSOSOSOSOOSOSOSOSOSOS 要崩溃了
页:
[1]