study_hardware 发表于 2014-4-24 19:39:52

nrf24l01的信号收发的问题

发送的代码
while (1)
{
       
                SPI_CE_L();               //停止发送
                NRF_Write_Buf(NRF_WRITE_REG + RX_ADDR_P0, TX_ADDRESS, TX_ADR_WIDTH); // 写发送地址
                NRF_Write_Buf(WR_TX_PLOAD, tx_buf, len);                        // 写发送数据       
                delay_ms(1);
                SPI_CE_H();               //激发数据发送到空气中
               
                delay_ms(10);       

}

接收代码
while (1)
{

                        SPI_CE_H();               //搜索空气中的地址和数据如果正确写入fifo
                        NRF_Read_Buf(RD_RX_PLOAD,rx_buf,3);// read receive payload from RX_FIFO buffer
                        delay_ms(1);
                        SPI_CE_L();               //停止接收
                        delay_ms(10);

}
}

目前的情况是接收和发送同时上电,可以接收到正常的数据。如果单独把发送模块电去掉,可以发现接收不到数据,然后把发送模块上电,还是接受不到数据,理论上上电之后它就会不断的往空气中发送电磁波,接收模块也在不断的从空气中搜索接收,但是为什么就是接收不到呢?

一心2013 发表于 2014-4-24 20:04:37

沙发{:lol:}

你是不是整块板包括MCU一起断电的?

如果不是的话可能就是发送那边的时序乱了,因为NRF24L01的是没有复位操作的,SPI容易出现时序乱了

所以一般我是只能用断电来复位

study_hardware 发表于 2014-4-24 20:53:37

一心2013 发表于 2014-4-24 20:04
沙发

你是不是整块板包括MCU一起断电的?


是啊 这个挺蛋疼的发现确实把接收的电也断了但是现在把发射模块单独断开,但是接收还是能检测到信号,真是奇怪,难道接收到的数据都是从fifo里面读的都是以前的?但是我用指令去清除fifo又清除不了。
现在能证明数据确实一直在发送,因为我把接收模块单独把电断开(所有寄存器都清零),再上电接收,能直接检测到信号。
就是没有办法证明接收模块一直在接收数据。因为把发送模块电断开和不断开效果一样。。。。。

霸气侧漏 发表于 2014-4-24 21:06:16

这个还是比较好调的

一心2013 发表于 2014-4-24 21:26:48

study_hardware 发表于 2014-4-24 20:53
是啊 这个挺蛋疼的发现确实把接收的电也断了但是现在把发射模块单独断开,但是接收还是能检测到信号 ...

模块上有个中断脚,就是接收时会有个中断产生,你可以用示波器或逻辑分析仪看下有没有中断产生

jiang887786 发表于 2014-4-29 16:10:02

你调好了没有?就贴那么一点点代码谁看得出问题?等我调好了,我全贴出来。飞思卡尔的mcu

steaven2000 发表于 2014-4-29 16:27:44

上电时无线模块内部没准备好的话可能导致发送失败,再初始化一次后通讯就正常了。你的设计还没有达到产品的标准。
页: [1]
查看完整版本: nrf24l01的信号收发的问题