OpenEdv-开源电子网

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

nrf24l01的一些心得和疑问

[复制链接]

52

主题

142

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
437
金钱
437
注册时间
2013-10-17
在线时间
23 小时
发表于 2015-8-27 15:32:41 | 显示全部楼层 |阅读模式
最近在用这块芯片,也遇到很多奇奇怪怪的问题.这里列举一二, 高手轻喷...<br />
<br />
大多数教程选择使用轮询irq引脚或者轮询STATUS寄存器来判断发 收的完成, 但是相当耗时, 在比较顺利的情况下, Nrf固定32B的发送耗时实测400us, 不顺利的话会上ms, 相对于72M主频的机器已经是非常大的占用.<br />
所以我选择中断接收和发送. 这里需要关注几个寄存器, STATUS &nbsp;CONFIG &nbsp;<br />
首先必须开nrf的中断事件, 在CONFIG寄存器里面将mask位置0即可, 对应的会在TX_DS &nbsp;MAX_RT &nbsp;RX_DR这三件事出现后改变STATUS并自动拉低irq引脚.<br />
<br />
然后,各种配置完成以后, 开始发数据. 发完数据无论成功还是超时, 均会成功进入中断. 这时我做了一件危险的事情, 就是在中断中直接发下一帧, 我希望通过这种方式减少CPU占用率,在中断中直接链式的发送.<br />
后来调了两天,才发现原来对方根本没来得及读走FIFO . 注意, 虽然对方的FIFO收到数据后会ACK, 但是对方什么时候读走FIFO是CPU的事情, 做完并不会通知发送方.<br />
所以后来我发送的间隔加大为3ms, 就没啥问题了.<br />
<br />
另外由于我们的周边wifi 频道的干扰比较多,所以会涉及到跳频的问题. 跳频主要就是要控制好时间序列, 具体以后会补充一下.&nbsp;<br />
<br />
现在存在的问题是 接收中断.&nbsp;<br />
调试时可以在受到数据后进去irq, 并且我已经在Irq中清掉了status寄存器. 这个时候, 在主程序中, status莫名其妙的出现了RX_DR置位, Irq也同时被置低 . <br />
有人遇到过类似的事情吗?<br />
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165186
金钱
165186
注册时间
2010-12-1
在线时间
2106 小时
发表于 2015-8-27 22:36:39 | 显示全部楼层
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

52

主题

142

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
437
金钱
437
注册时间
2013-10-17
在线时间
23 小时
 楼主| 发表于 2015-8-29 16:47:37 | 显示全部楼层
已经搞定,&nbsp;原因很简单,&nbsp;irq是先于STATUS寄存器的变化的.
回复 支持 反对

使用道具 举报

15

主题

114

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
242
金钱
242
注册时间
2014-7-1
在线时间
28 小时
发表于 2015-10-21 22:23:29 | 显示全部楼层
楼主你好,你有没有测试过他发送成功一个字节所耗费的时间呢?我测试他发送16字节成功要10ms,不知道哪里搞错了还是本身就这么慢!
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-9-29 23:26

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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