用nRF24L01无线模块接收10个不同频率的数据,老是出现数据丢失

2020-02-04 09:19发布

我想用一个nRF24L01无线模块作为接收,另外10个nRF24L01无线模块作为发射,这10个模块各有一个固定的频率,且各不相同,这10个无顺序的发射数据,作为接收的那个模块的程序主函数里循环的设置成这10个频率接收,用外部中断来接收数据,这时问题就出现了,外部来中断时接收的那个频率可能与发射数据来的频率不同,此时这个数据就接收不到了,然后我将nRF24L01无线模块设置了自动应答模式,比原来好点了,可是要是达到了自动发射次数的最大值了数据还是没有接收到呢?
   我想请教一下高手们nRF24L01无线模块用什么方法接收数据时,保证数据部丢失呢??望高手指个方法啊
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
23条回答
34071417
1楼-- · 2020-02-05 04:22
 精彩回答 2  元偷偷看……
anyhu
2楼-- · 2020-02-05 07:41
回复【6楼】yayahello
-----------------------------------------------------------------------

也是可以实现的。可以这么干:10个发送模块要具备接收功能,全都初始化为一个频率,没有发射任务时让它们全部休眠,当其中一个发射模块出现发射任务时,首先使用默认的频率,通知其他九个模块,让它们屏蔽掉发射任务,然后这个模块才进入预先设定的发射频率,等到数据发送完成后,再跳回默认频率,通知其他9个模块解除屏蔽。如果仅仅是简单的错开频率想完全避免同频干扰,并且避开收发一体程序的复杂性,那你的想法是行不通的。或者你想得根本就太简单了。
yayahello
3楼-- · 2020-02-05 11:17
回复【8楼】anyhu
-----------------------------------------------------------------------

恩 是啊 我也越来越发现我想的这条路走着费劲了,真的很感谢你的帮助!
   唉 我的问题是越来越多啦
   发射接收数据都很正常,可是这个其中的状态寄存器STATUS一直没闹明白,我把这个寄存器里的数据读出来后通过串口发送到串口调试助手里,都是00,这个时候我很郁闷,就把主函数里的程序都屏蔽了,只留了3句话,把0x70写入STATUS,然后读出来,然后发送到电脑里,居然是F8,而不是70,哪位高手指点一下啊???这是为什么啊
1a2b3c
4楼-- · 2020-02-05 12:45
你这个10个发射端异频非协调随即发射,一个接收端想要接收所有的发射端数据,这个是不可能的!
实际上如果你可能使用TDMA就应该可以了,这样的话就是一个频道也行的 ,反正是分时。实际上8楼差不多就是这个意思,反正就是保证了同一时刻只有一个发射工作,这个只是解决了信息源本身不会冲突的问题(频率冲突或者接收端只能同时接受一个信息源顾此失彼的冲突),那么怎么协调(同步)又成了问题,他是使用了另外10个接收机作为抑制接收,那这样的话实际上还不如在接收端直接就用10个接收机一对一了,处理起来还更简单一些,是吧
yayahello
5楼-- · 2020-02-05 18:16
回复【10楼】1a2b3c
-----------------------------------------------------------------------

谢谢高手的指点,就是啊,是我开始的时候想的太不全面了,看来我要换换思路了,真的很感谢各位的帮助!
biansf2001
6楼-- · 2020-02-05 19:16
 精彩回答 2  元偷偷看……

一周热门 更多>