OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3460|回复: 9

关于nrf24l01的通信问题

[复制链接]

37

主题

79

帖子

0

精华

初级会员

Rank: 2

积分
144
金钱
144
注册时间
2017-12-14
在线时间
51 小时
发表于 2018-8-28 20:50:25 | 显示全部楼层 |阅读模式
1金钱
求教各位大佬,我在做nrf24l01的通信实验时,在程序中加了一个PB5的外部中断,这个外部中断加上后发现nrf24l01模块就不能正常的接收数据了,偶尔能接收一次,PB5连的是mpu9250的INT引脚,200Hz的输出速率,求大佬指导

最佳答案

查看完整内容[请看2#楼]

这个你就要压缩一下故障, 首先反复确认一下是否加PB5中断就不正常; 如果确实如此就临时简化一下PB5中断服务程序(比如直接清中断返回), 如果简化后正常,就说明是PB5现有服务与2401有冲突, 如果简化后仍不正常,那就是引脚冲突等其它问题了。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

32

主题

1940

帖子

3

精华

论坛元老

Rank: 8Rank: 8

积分
4301
金钱
4301
注册时间
2018-5-11
在线时间
895 小时
发表于 2018-8-28 20:50:26 | 显示全部楼层
users 发表于 2018-8-28 22:36
嗯嗯,PB5和2401没有关系,2401接收用的是原子哥的例程,没有用中断吧,IRQ连的是PB1引脚

这个你就要压缩一下故障,
首先反复确认一下是否加PB5中断就不正常;
如果确实如此就临时简化一下PB5中断服务程序(比如直接清中断返回),
如果简化后正常,就说明是PB5现有服务与2401有冲突,
如果简化后仍不正常,那就是引脚冲突等其它问题了。
我的开源链接 https://github.com/ShuifaHe/STM32.git  请关注,点赞支持哦。
回复

使用道具 举报

37

主题

79

帖子

0

精华

初级会员

Rank: 2

积分
144
金钱
144
注册时间
2017-12-14
在线时间
51 小时
 楼主| 发表于 2018-8-28 21:11:34 | 显示全部楼层
这是接收部分的函数,如果不开PB5的外部中断的话就可以正常接收
(X6QWWMA)L%RUVOT_WB0AXV.png
回复

使用道具 举报

32

主题

1940

帖子

3

精华

论坛元老

Rank: 8Rank: 8

积分
4301
金钱
4301
注册时间
2018-5-11
在线时间
895 小时
发表于 2018-8-28 22:25:44 | 显示全部楼层
你也没有说清楚,
PB5和2401是什么关系?
2401接收用中断了吗,
IRQ连的是什么?
如果有冲突的话,当然就不能用了。
我的开源链接 https://github.com/ShuifaHe/STM32.git  请关注,点赞支持哦。
回复

使用道具 举报

37

主题

79

帖子

0

精华

初级会员

Rank: 2

积分
144
金钱
144
注册时间
2017-12-14
在线时间
51 小时
 楼主| 发表于 2018-8-28 22:36:54 | 显示全部楼层
warship 发表于 2018-8-28 22:25
你也没有说清楚,
PB5和2401是什么关系?
2401接收用中断了吗,

嗯嗯,PB5和2401没有关系,2401接收用的是原子哥的例程,没有用中断吧,IRQ连的是PB1引脚
回复

使用道具 举报

2

主题

760

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4163
金钱
4163
注册时间
2017-10-24
在线时间
251 小时
发表于 2018-8-29 08:47:17 | 显示全部楼层
目测楼主是直接在开发板上进行的实验?MPU9250使用IIC方式还是SPI方式?还有就是你要做什么?准确、具体地描述问题能够让别人更好地帮助你解决问题。

5#的建议不错,我再加一个猜想,有可能是MCU和NRF24L01正在通信中,结果突然外部中断产生,打断了原本正常的和NRF24L01的通讯时序,造成无法正常读取到数据;如果碰巧外部中断产生的时候不在和NRF通讯时,那么楼主就能接受到数据,也就是楼主所说的“偶尔能接收一次”的可能原因。

另外如果使能外部中断,那么MPU9250能否正常工作?

十六进制带我飞。
回复

使用道具 举报

32

主题

1940

帖子

3

精华

论坛元老

Rank: 8Rank: 8

积分
4301
金钱
4301
注册时间
2018-5-11
在线时间
895 小时
发表于 2018-8-29 19:58:02 | 显示全部楼层
问题解决了么?
我的开源链接 https://github.com/ShuifaHe/STM32.git  请关注,点赞支持哦。
回复

使用道具 举报

37

主题

79

帖子

0

精华

初级会员

Rank: 2

积分
144
金钱
144
注册时间
2017-12-14
在线时间
51 小时
 楼主| 发表于 2018-8-29 22:29:52 | 显示全部楼层
warship 发表于 2018-8-29 19:58
问题解决了么?

有进展,但是还没有完全解决,之前加中断就不能接受数据的原因是没有清除中断标志位,现在改正之后,又出现了一个新问题
回复

使用道具 举报

37

主题

79

帖子

0

精华

初级会员

Rank: 2

积分
144
金钱
144
注册时间
2017-12-14
在线时间
51 小时
 楼主| 发表于 2018-8-29 22:35:19 | 显示全部楼层
图中是我的接收端的中断服务函数,发送端和接收端上电后可以进行数据收发,我在发送端用一个按键控制RemoteControl[0] ,让它在0和1之间切换,上电后为初始值0,我发现我现在只要一按这个按键,使RemoteControl[0] = 1 之后,就会发送失败,搞不懂
E%1WU}IXA6I60$H1V0YTFMB.png
回复

使用道具 举报

37

主题

79

帖子

0

精华

初级会员

Rank: 2

积分
144
金钱
144
注册时间
2017-12-14
在线时间
51 小时
 楼主| 发表于 2018-8-29 23:09:53 | 显示全部楼层
问题又有了一些新进展,我发了个新帖
http://www.openedv.com/forum.php ... d=278114&extra=
小白求拯救
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-5-29 13:05

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表