OpenEdv-开源电子网

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

请教原子大哥,关于NRF24L01的基本问题

[复制链接]

8

主题

29

帖子

0

精华

初级会员

Rank: 2

积分
81
金钱
81
注册时间
2012-2-29
在线时间
0 小时
发表于 2012-6-26 10:26:32 | 显示全部楼层 |阅读模式
<div>总结了一下我的问题,就是:调试2401的时候,就是每次进行spi 读 写 指令操作时,是不是每次同时都会返回一个状态寄存器的值,如图所示,返回的就是状态寄存器<br />
<br />

<br />
这是开发板的源程序函数<br />
u8 NRF24L01_Write_Reg(u8 reg,u8 value)</div>
<div>{</div>
<div><span class="Apple-tab-span" style="white-space:pre;">        </span>u8 status;<span class="Apple-tab-span" style="white-space:pre;">        </span></div>
<div>&nbsp; &nbsp;<span class="Apple-tab-span" style="white-space:pre;">        </span>NRF24L01_CSN=0; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //使能SPI传输</div>
<div>&nbsp; <span class="Apple-tab-span" style="white-space:pre;">        </span>status =SPIx_ReadWriteByte(reg);//发送寄存器号&nbsp;</div>
<div>&nbsp; <span class="Apple-tab-span" style="white-space:pre;">        </span>SPIx_ReadWriteByte(value); &nbsp; &nbsp; &nbsp;//写入寄存器的值</div>
<div>&nbsp; <span class="Apple-tab-span" style="white-space:pre;">        </span>NRF24L01_CSN=1; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //禁止SPI传输<span class="Apple-tab-span" style="white-space:pre;">        </span> &nbsp;&nbsp;</div>
<div>&nbsp; <span class="Apple-tab-span" style="white-space:pre;">        </span>return(status); &nbsp; &nbsp; &nbsp; <span class="Apple-tab-span" style="white-space:pre;">                        </span>//返回状态值</div>
<div>}<br />
1、第一个函数中&nbsp;&nbsp;status =SPIx_ReadWriteByte(reg) ,这一句status返回的是什么啊?<br />
2、我看了一下,nrf24l01的spi时序,在发送一个指令的同时,就有状态返回,我想知道这个返回的是什么状态,是状态寄存器位??我觉得这个指令还没发完呢,他收到的和这个指令无关吗?<br />
<br />
这个状态寄存器与这个写的指令没什么关系?反正就是返回一个状态寄存器的值?<br />
<br />
<div>u8 NRF24L01_Read_Reg(u8 reg)</div>
<div>{</div>
<div><span class="Apple-tab-span" style="white-space:pre;">        </span>u8 reg_val;<span class="Apple-tab-span" style="white-space:pre;">        </span> &nbsp; &nbsp;</div>
<div>&nbsp;<span class="Apple-tab-span" style="white-space:pre;">        </span>NRF24L01_CSN = 0; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//使能SPI传输<span class="Apple-tab-span" style="white-space:pre;">                </span></div>
<div>&nbsp; <span class="Apple-tab-span" style="white-space:pre;">        </span>SPIx_ReadWriteByte(reg); &nbsp; //发送寄存器号</div>
<div>&nbsp; <span class="Apple-tab-span" style="white-space:pre;">        </span>reg_val=SPIx_ReadWriteByte(0XFF);//读取寄存器内容</div>
<div>&nbsp; <span class="Apple-tab-span" style="white-space:pre;">        </span>NRF24L01_CSN = 1; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//禁止SPI传输<span class="Apple-tab-span" style="white-space:pre;">                </span> &nbsp; &nbsp;</div>
<div>&nbsp; <span class="Apple-tab-span" style="white-space:pre;">        </span>return(reg_val); &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //返回状态值</div>
<div>}</div>
3、如果上述推断正确,这个读寄存器函数是有问题的,因为,他即使发送0xFF,返回的应该也是状态寄存器的值,而不是当前寄存器的。</div>
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165186
金钱
165186
注册时间
2010-12-1
在线时间
2106 小时
发表于 2012-6-26 10:32:19 | 显示全部楼层
回复【楼主位】我是黑名单:
<br>---------------------------------
<br>1,status,这个你查一下NRF的技术资料,看看这个东东的每个位表示什么意思?
<br>2,发送的时候返回的就是S0~S7.至于和什么有关,也是要看NRF的资料了.
<br>3,这个S是状态寄存器,而不是你要读的寄存器.假设你的推理正确,那么我的代码应该不能工作才对,实际上呢?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

8

主题

29

帖子

0

精华

初级会员

Rank: 2

积分
81
金钱
81
注册时间
2012-2-29
在线时间
0 小时
 楼主| 发表于 2012-6-26 10:45:24 | 显示全部楼层
回复【2楼】正点原子:
<br>---------------------------------
<br>不是,我查了一下你的代码,调用&nbsp;NRF24L01_Read_Reg()这个函数的地方都是读取的状态寄存器,所以肯定不会出错,你可以试着读取别的寄存器。
<br>你的读寄存器函数中,由于有了写0XFF的操作,所以应该返回一个状态寄存器的值,但是之前读寄存器操作,SPIx_ReadWriteByte(reg);返回来的数据我也不知道存在哪里,不知道SPIx_ReadWriteByte(0XFF)操作返回的数据会不会覆盖掉SPIx_ReadWriteByte(reg);返回的寄存器的值。我觉得再发送完数据后,可不可以进行一次只读操作?防止返回的是状态寄存器
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165186
金钱
165186
注册时间
2010-12-1
在线时间
2106 小时
发表于 2012-6-26 11:09:13 | 显示全部楼层
回复【3楼】我是黑名单:
<br>---------------------------------
<br>我们的一开始检测NRF是否存在就用到了这个读函数.
<br>至于你自己的想法,可以写代码测试嘛.
<br>
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

8

主题

29

帖子

0

精华

初级会员

Rank: 2

积分
81
金钱
81
注册时间
2012-2-29
在线时间
0 小时
 楼主| 发表于 2012-6-26 11:13:51 | 显示全部楼层
回复【4楼】正点原子:
<br>---------------------------------
<br>好的,谢谢原子大哥,你们的应该没问题,我再试试
回复 支持 反对

使用道具 举报

12

主题

42

帖子

0

精华

初级会员

Rank: 2

积分
110
金钱
110
注册时间
2012-4-25
在线时间
0 小时
发表于 2012-6-26 16:59:55 | 显示全部楼层
回复【3楼】我是黑名单:
<br>---------------------------------
<br>原子哥很给力啊,比杜甫忙多了,有时间做其他东西吗,佩服
真正和谐
回复 支持 反对

使用道具 举报

3

主题

9

帖子

0

精华

新手上路

积分
42
金钱
42
注册时间
2014-4-23
在线时间
0 小时
发表于 2014-10-15 14:38:35 | 显示全部楼层
我突然发现我和前辈绕在了同样的圈圈里,不知前辈的问题解决了吗
回复 支持 反对

使用道具 举报

8

主题

29

帖子

0

精华

初级会员

Rank: 2

积分
81
金钱
81
注册时间
2012-2-29
在线时间
0 小时
 楼主| 发表于 2014-11-15 16:30:12 | 显示全部楼层
回复【7楼】123711972@qq.com:
<br>---------------------------------
<br>哈哈,好久没弄了,都忘记了这是个什么圈圈了。。。12年到现在。两年多了。。。哎
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-10-1 12:13

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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