完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
总结了一下我的问题,就是:调试2401的时候,就是每次进行spi 读 写 指令操作时,是不是每次同时都会返回一个状态寄存器的值,如图所示,返回的就是状态寄存器 这是开发板的源程序函数 u8 NRF24L01_Write_Reg(u8 reg,u8 value) { u8 status; NRF24L01_CSN=0; //使能SPI传输 status =SPIx_ReadWriteByte(reg);//发送寄存器号 SPIx_ReadWriteByte(value); //写入寄存器的值 NRF24L01_CSN=1; //禁止SPI传输 return(status); //返回状态值 }
1、第一个函数中 status =SPIx_ReadWriteByte(reg) ,这一句status返回的是什么啊? 2、我看了一下,nrf24l01的spi时序,在发送一个指令的同时,就有状态返回,我想知道这个返回的是什么状态,是状态寄存器位??我觉得这个指令还没发完呢,他收到的和这个指令无关吗? 这个状态寄存器与这个写的指令没什么关系?反正就是返回一个状态寄存器的值? u8 NRF24L01_Read_Reg(u8 reg) { u8 reg_val; NRF24L01_CSN = 0; //使能SPI传输 SPIx_ReadWriteByte(reg); //发送寄存器号 reg_val=SPIx_ReadWriteByte(0XFF);//读取寄存器内容 NRF24L01_CSN = 1; //禁止SPI传输 return(reg_val); //返回状态值 } 3、如果上述推断正确,这个读寄存器函数是有问题的,因为,他即使发送0xFF,返回的应该也是状态寄存器的值,而不是当前寄存器的。 |
|
相关推荐
7个回答
|
|
1,status,这个你查一下NRF的技术资料,看看这个东东的每个位表示什么意思? 2,发送的时候返回的就是S0~S7.至于和什么有关,也是要看NRF的资料了. 3,这个S是状态寄存器,而不是你要读的寄存器.假设你的推理正确,那么我的代码应该不能工作才对,实际上呢? |
|
|
|
不是,我查了一下你的代码,调用 NRF24L01_Read_Reg()这个函数的地方都是读取的状态寄存器,所以肯定不会出错,你可以试着读取别的寄存器。 你的读寄存器函数中,由于有了写0XFF的操作,所以应该返回一个状态寄存器的值,但是之前读寄存器操作,SPIx_ReadWriteByte(reg);返回来的数据我也不知道存在哪里,不知道SPIx_ReadWriteByte(0XFF)操作返回的数据会不会覆盖掉SPIx_ReadWriteByte(reg);返回的寄存器的值。我觉得再发送完数据后,可不可以进行一次只读操作?防止返回的是状态寄存器 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
我突然发现我和前辈绕在了同样的圈圈里,不知前辈的问题解决了吗
|
|
|
|
|
|
|
|
只有小组成员才能发言,加入小组>>
如何使用STM32+nrf24l01架构把有线USB设备无线化?
2547 浏览 7 评论
请问能利用51单片机和nRF24L01模块实现实时语音无线传输吗?
2332 浏览 5 评论
3161 浏览 3 评论
2804 浏览 8 评论
为什么ucosii上移植lwip后系统进入了HardFault_Handler?
2762 浏览 4 评论
请教各位大咖:有没有接收频率32M左右的芯片推荐的?先感谢啦!
611浏览 1评论
857浏览 0评论
971浏览 0评论
625浏览 0评论
452浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-25 05:09 , Processed in 1.288865 second(s), Total 90, Slave 73 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号