A单片机用nrf24l01无线模块向B单片机发送数据,B单片机向PC串口发送数据,遇到了问题,求大神帮忙。

A单片机上采集的温度通过nrf24l01传送到B单片机,B单片机收到数据后发送到电脑串口,在串口上读出数据,原本是这么设想的。程序运行了之后,串口助手上显示出来的是大量的0xff,通篇都是,而不是我要的温度数值。这是发送端被屏蔽了,接收程序自运行发送到串口的结果吗?我乱猜的,鄙人小白....求大神指教下,能给个相似的程序当然最好,学习下,谢谢了!!

部分主程序:
void main(void)
{
unsigned int TN; //储存温度的整数部分
unsigned int TD; //储存温度的小数部分
serial_open(); //打开串口函数
while(1) //不断检测并显示温度
{
SetRX_Mode(); //接收模式
if(nRF24L01_RxPacket(RxBuf))
{
for(b=0;b<2;b++)
{
TN=RxBuf[0];
senddata(TN); //向串口发送温度的整数部分

TD=RxBuf[1];
senddata(TD); //向串口发送温度的小数部分
}
以下是串口发送函数:
void senddata(uchar data_buf)
{
TI = 0;
SBUF = data_buf;
while(!TI);
TI = 0;
}

nRF24L01最好不要用循环读取缓冲区的办法去判断有没有数据。

最好还是用IRQ引脚

用外部中断读取数据。

而且设置接收模式1次就可以了 不需要一直设置。因为很有可能在设置过程中 对方发数据过来然后这边还在设置阶段导致根本接不到数据。或者接收错误。

最好的办法是

SetRX_Mode();//设置接收模式
while(1)//主循环
{
    if(!nRF24L01_IRQ)//等待接收中断
    {
        if(nRF24L01_RxPacket(RxBuf))//读取一次数据包
        {
            for(b=0;b<2;b++)
            {       
N=RxBuf[0];    
senddata(TN);     //向串口发送温度的整数部分

TD=RxBuf[1];  
senddata(TD);     //向串口发送温度的小数部分
    }
        }
    }
}

温馨提示:内容为网友见解,仅供参考
第1个回答  2013-10-12
为什么要发送两遍呢?
nRF24L01_RxPacket(RxBuf)这个子程序可能有点问题,似乎一直为真(非0),所以总是不断的发送数据给PC。

在调试nrf24l01无线模块的时候遇到难题
nRF24L01模块工作电压是1.9~5V的,接5V电源应该是烧坏了。再买几块吧,记得电源别超过3.6V。

为什么我做的NRF24L01无线模块,单片机上电后只能发送和接收一次数据啊...
没用过24L01,以使用CC1101的经历讨论下:无线芯片接收前想要收到数据,必须把芯片设置成接收状态,CC1101的是写SRX命令。每次接收后也要写此命令。好好读读芯片的datasheet跟user guide吧,那个上面很全。

两个单片机之间用nrf24l01是怎样通信的,求按键控制另一单片机流水灯的简...
接收程序和发送程序确实是分开的。一般会有一个.c文件包含所有NRF24L01的所有函数,然后根据是要发送还是接收由主程序调用不同的函数。

我现在也在做nRF24L01无线芯片在两个单片机之间进行传输数据,能交流一...
如果你的nRF24L01芯片是已经做成了模块,而且模块可以直接和单片机的串口连接,那么就当成是有线电缆连接来用就可以了。当然有一些必要的设置,例如模块地址、波特率等不多的几个参数需要设一下。使用时注意几个问题:① 多数模块要求3.6V供电,因此在与单片机连接时,要注意电平问题。最好选用VCC是3.6V的...

nrf24l01中如何判断单片机与无线模块通讯成功
单片机读取 2401的状态寄存器,如果返回正常值,说明连接良好 如果返回0,或者FF就说明没连接正确

pc端用usb转串口链接nrf24l01 和51单片机上的nrf24l01通信
2、在上一条正常的情况下,看下是否串口发送数据是否有错,可以先将USB转串口线的收发端短接,形成回环模式,通过串口调试助手看回环数据是否正确;3、nrf24l01通讯距离大约在50米左右,适当调整距离,收发端不用同一个电源供电尝试一下;4、如果上述方式未能解决问题,那就要看接收发送端的配置代码,这种...

单片机,无线收发模块NRF24L01+为什么接收机前几次能成功接收,后来就什 ...
这个寄存器,配置还是很复杂的,你尝试把每次发射之间的时间加长一点,可能是寄存器过压,你再看看程序,是不是有问题,或者程序跑飞了

一个NRF24L01的无线模块能否同时具备发送和接收的功能,也就是双工...
不能双工模式,只能在初始化阶段被配置为发送或接收模式,不能一边发送一边接收。例如两个单片机各挂一个无线模块,那么指定了其中一个是发送模式后,另一个就别无选择,只能作为接收模式!

NRF24L01无线模块的CE引脚怎么连接单片机
这个是控制引脚,它可以连在单片机的任意一个引脚上,关键是你的程序里面要和引脚对应起来控制盒通信。你把程序发上来吧,这样就能直接告诉你连接哪个引脚了。

求51单片机nRF24L01+无线模块的程序和设计电路图,收和发的
nRF24L01供应商:拍明芯城元器件商城 简介 输出功率频道选择和协议的设置可以通过SPI 接口进行设置。几乎可以连接到各种单片机芯片,并完成无线数据传送工作。极低的电流消耗:当工作在发射模式下发射功率为0dBm 时电流消耗为11.3mA ,接收模式时为12.3mA,掉电模式和待机模式下电流消耗更低。应用领域 ●...

相似回答