OpenEdv-开源电子网

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

关于stm32f407的nrf24l01的通信问题

[复制链接]

19

主题

95

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
328
金钱
328
注册时间
2018-8-2
在线时间
170 小时
发表于 2019-7-1 17:02:37 | 显示全部楼层 |阅读模式
10金钱
本帖最后由 Leven175 于 2019-7-1 17:24 编辑

最近项目原因所以就做了一个nrf24l01的无线通信实验,先简单介绍一下情况。
基本stm32f030与stm32f407作通信,然后两者互相通信,由于需要改变频道,所以需要相互通信实现
但是一旦使用IRQ脚作外部中断脚后能接收到数据,发送的STATUS值也正常,但是FIFO_STATUS值却为0x01,意思就是说TX_FIFO值非空;
我没有使能应答通道和自动应答功能。单纯调试发送端的功能。
因为我程序已经搞好了一个方向,stm32f030控制stm32f407方向,但是这个使用中断接收的,即stm32f407是通过IRQ的脚的外部中断接收数据。但是加了发送后就会出现以上情况,如果我不使用中断的话就可以双向通信,因为由于某些原因必须使用中断,所以来请教一下各位。
接收端一直接收不到数据,使得一直卡在这里。接收端的值其实是正常的,接收不到数据STATUS的值就为0x0e,FIFO_STATUS值却为0x11.

最佳答案

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

终于把这个尴尬到一匹的模块调试好了,毕竟这个模块的确很奇怪。 首先我要说明的是,一定要确保硬件没问题条件下去调试,不然到后面跟本无法做。 我的目的是双向调试的,但是需要更改频率,在程序中无论怎么样都别把接收端和发送端随意写进循环内部,即使加了判断。 第二,模块调试过程中,必须先调试一端然后才调试另外一端,假如只需要传输一次数据的话在接收包和发送包内部完成接收模式和发送模式的转换。我也不知道为什么如 ...
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

19

主题

95

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
328
金钱
328
注册时间
2018-8-2
在线时间
170 小时
 楼主| 发表于 2019-7-1 17:02:38 | 显示全部楼层
终于把这个尴尬到一匹的模块调试好了,毕竟这个模块的确很奇怪。
首先我要说明的是,一定要确保硬件没问题条件下去调试,不然到后面跟本无法做。
我的目的是双向调试的,但是需要更改频率,在程序中无论怎么样都别把接收端和发送端随意写进循环内部,即使加了判断。
第二,模块调试过程中,必须先调试一端然后才调试另外一端,假如只需要传输一次数据的话在接收包和发送包内部完成接收模式和发送模式的转换。我也不知道为什么如果在完成发送后再次转换成另外一种模式时死活不接收。
意思即我的一个nrf24l01模块从发送端-接收端-发送端,另一个是接收端-发送端-接收端,这样的话,如果把这三个模式写在同一个水平上好像就不会转变一样。当把第二次模式转换写进对应包内即可完成转化,我也不知道是芯片问题还是程序问题,如果写在同一个if判断内部就会执行不了,这个我也实在没搞懂。。。
总而言之,这次调试这个模块让我印象深刻,毕竟调试了已经有差不多一个月了
回复

使用道具 举报

109

主题

5564

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
10567
金钱
10567
注册时间
2017-2-18
在线时间
1913 小时
发表于 2019-7-1 18:42:30 | 显示全部楼层
帮顶~~
回复

使用道具 举报

0

主题

6

帖子

0

精华

新手上路

积分
47
金钱
47
注册时间
2019-7-14
在线时间
4 小时
发表于 2019-7-14 23:26:48 | 显示全部楼层
邦迪那个~~~
回复

使用道具 举报

1

主题

4

帖子

0

精华

新手入门

积分
16
金钱
16
注册时间
2019-12-11
在线时间
5 小时
发表于 2019-12-20 20:02:44 | 显示全部楼层
我想了解一下这项功能,能发份代码给我学习一下吗?谢谢 我的邮箱1921551480@qq.com
回复

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
11
金钱
11
注册时间
2019-12-25
在线时间
2 小时
发表于 2019-12-25 20:22:10 | 显示全部楼层
lsw121314 发表于 2019-12-20 20:02
我想了解一下这项功能,能发份代码给我学习一下吗?谢谢 我的邮箱

老哥,你有代码了,我一直卡在那里不知道怎么进行转换
回复

使用道具 举报

0

主题

3

帖子

0

精华

新手上路

积分
29
金钱
29
注册时间
2020-1-15
在线时间
8 小时
发表于 2020-2-18 12:27:41 | 显示全部楼层
你好,我是个新手,想请教一个问题,如果想用这个模块做一对多的双向发送和接收数据,该怎么搞呢
回复

使用道具 举报

19

主题

95

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
328
金钱
328
注册时间
2018-8-2
在线时间
170 小时
 楼主| 发表于 2020-2-19 10:18:49 | 显示全部楼层
Mysterious 发表于 2020-2-18 12:27
你好,我是个新手,想请教一个问题,如果想用这个模块做一对多的双向发送和接收数据,该怎么搞呢

你先按正常步骤来,先调试发送端,然后调试接收端,注意一下发送转接收的时候这时候确定发送函数和接收函数就不能写在循环内部。基本上就这样吧,这个模块要稍微注意点,网上也有教程的。有问题再问我吧
回复

使用道具 举报

19

主题

95

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
328
金钱
328
注册时间
2018-8-2
在线时间
170 小时
 楼主| 发表于 2020-2-19 10:20:02 | 显示全部楼层
lsw121314 发表于 2019-12-20 20:02
我想了解一下这项功能,能发份代码给我学习一下吗?谢谢 我的邮箱

好的,已发
回复

使用道具 举报

7

主题

54

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1028
金钱
1028
注册时间
2015-12-8
在线时间
447 小时
发表于 2021-1-5 14:14:45 | 显示全部楼层

兄好,还有这个例子吗,能发我一份参考吗  6349632932@qq.com
回复

使用道具 举报

19

主题

95

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
328
金钱
328
注册时间
2018-8-2
在线时间
170 小时
 楼主| 发表于 2021-1-20 13:59:08 | 显示全部楼层
jiangyimfs 发表于 2021-1-5 14:14
兄好,还有这个例子吗,能发我一份参考吗

不好意思,现在用到32很少,很少上论坛,网上基本教程比较多,你注意一下我说的重点就好。因为我这边已经没有了那个例程了。
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-15 16:51

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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