OpenEdv-开源电子网

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

NRF24L01_Check函数的问题

[复制链接]

7

主题

29

帖子

0

精华

初级会员

Rank: 2

积分
65
金钱
65
注册时间
2016-10-13
在线时间
16 小时
发表于 2016-11-18 16:25:11 | 显示全部楼层 |阅读模式
1金钱
u8 NRF24L01_Check(void)
{
        u8 buf[5]={0XA5,0XA5,0XA5,0XA5,0XA5};
        u8 i;
        SPI2_SetSpeed(SPI_SPEED_4);           
        NRF24L01_Write_Buf(NRF_WRITE_REG+TX_ADDR,buf,5);       
        NRF24L01_Read_Buf(TX_ADDR,buf,5);
        for(i=0;i<5;i++)if(buf[i]!=0XA5)break;                                                                   
        if(i!=5)return 1;
        return 0;               
}       

u8 NRF24L01_Write_Buf(u8 reg, u8 *pBuf, u8 len)
{
        u8 status,u8_ctr;            
        NRF24L01_CSN = 0;        
          status = SPI2_ReadWriteByte(reg);
          for(u8_ctr=0; u8_ctr<len; u8_ctr++)SPI2_ReadWriteByte(*pBuf++);  
          NRF24L01_CSN = 1;   
          return status;         
}                                  

u8 NRF24L01_Read_Buf(u8 reg,u8 *pBuf,u8 len)
{
        u8 status,u8_ctr;               
          NRF24L01_CSN = 0;           
          status=SPI2_ReadWriteByte(reg);   
        for(u8_ctr=0;u8_ctr<len;u8_ctr++)pBuf[u8_ctr]=SPI2_ReadWriteByte(0XFF);
          NRF24L01_CSN=1;     
          return status;      
}


SPI通信不是写一个数据,然后要读出一个数据吗??这样写,为何前面的4个0X5A不会丢掉呢??能连续写入5个?然后他用pBuf[u8_ctr]=SPI2_ReadWriteByte(0XFF);读出存进去的数据,这个数据5次出来为何都是0X5A?  当然肯定是在第一个问题的基础上才有第二个问题,那么如果能连续不丢失的写入,那么根据读一个数据,出来一个数据,怎么保证这个地址已经存满了,然后输入0XFF一个个把数据移位出来

最佳答案

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

SPI把数据写到NRF2401的寄存器里,会保存下来。读出来的时候跟你写进去当然是一样的。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

13

主题

448

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1755
金钱
1755
注册时间
2015-2-7
在线时间
369 小时
发表于 2016-11-18 16:25:12 | 显示全部楼层
SPI把数据写到NRF2401的寄存器里,会保存下来。读出来的时候跟你写进去当然是一样的。
回复

使用道具 举报

7

主题

29

帖子

0

精华

初级会员

Rank: 2

积分
65
金钱
65
注册时间
2016-10-13
在线时间
16 小时
 楼主| 发表于 2016-11-19 14:13:46 | 显示全部楼层
电子之旅 发表于 2016-11-18 22:55
SPI把数据写到NRF2401的寄存器里,会保存下来。读出来的时候跟你写进去当然是一样的。

用SPI通信的话,不是写一个数据就要读一个数据出来吗?如果这样的话,写了一个0X5A,再写第二个0X5A不是把第一个0X5A给挤掉了吗?
回复

使用道具 举报

13

主题

448

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1755
金钱
1755
注册时间
2015-2-7
在线时间
369 小时
发表于 2016-11-19 21:17:07 | 显示全部楼层
你去看看NRF2401的资料文档吧
回复

使用道具 举报

3

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
136
金钱
136
注册时间
2015-12-27
在线时间
15 小时
发表于 2016-11-21 20:42:33 | 显示全部楼层
楼主我最近也在用调nrf24l01,这个函数我读出来的5个值都是0x00(我只调了发送模块,没有接收模块应该不影响吧),不知道什么原因导致的,寄存器地址也没什么问题,使用在线调试也没有解决这个问题,不知道楼主知不知道这有可能是什么原因导致的?
回复

使用道具 举报

7

主题

29

帖子

0

精华

初级会员

Rank: 2

积分
65
金钱
65
注册时间
2016-10-13
在线时间
16 小时
 楼主| 发表于 2016-11-22 10:38:39 | 显示全部楼层
sawyer22 发表于 2016-11-21 20:42
楼主我最近也在用调nrf24l01,这个函数我读出来的5个值都是0x00(我只调了发送模块,没有接收模块应该不影 ...

我没有遇到这个问题啊,我的读写是一样的
回复

使用道具 举报

3

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
136
金钱
136
注册时间
2015-12-27
在线时间
15 小时
发表于 2016-11-22 12:14:14 | 显示全部楼层
雷雷 发表于 2016-11-22 10:38
我没有遇到这个问题啊,我的读写是一样的

嗯,我的问题现在已经解决了
回复

使用道具 举报

7

主题

29

帖子

0

精华

初级会员

Rank: 2

积分
65
金钱
65
注册时间
2016-10-13
在线时间
16 小时
 楼主| 发表于 2016-11-22 14:30:01 | 显示全部楼层
sawyer22 发表于 2016-11-22 12:14
嗯,我的问题现在已经解决了

怎么解决的?
回复

使用道具 举报

10

主题

41

帖子

0

精华

初级会员

Rank: 2

积分
187
金钱
187
注册时间
2016-8-5
在线时间
57 小时
发表于 2016-11-22 16:53:15 | 显示全部楼层
楼主 在不在,有问题问你
回复

使用道具 举报

7

主题

29

帖子

0

精华

初级会员

Rank: 2

积分
65
金钱
65
注册时间
2016-10-13
在线时间
16 小时
 楼主| 发表于 2016-11-22 19:59:17 | 显示全部楼层
豆腐老 发表于 2016-11-22 16:53
楼主 在不在,有问题问你

什么事
回复

使用道具 举报

22

主题

92

帖子

0

精华

初级会员

Rank: 2

积分
101
金钱
101
注册时间
2018-1-16
在线时间
74 小时
发表于 2018-1-25 15:48:38 | 显示全部楼层
sawyer22 发表于 2016-11-22 12:14
嗯,我的问题现在已经解决了

怎么解决的?
回复

使用道具 举报

0

主题

3

帖子

0

精华

新手入门

积分
12
金钱
12
注册时间
2019-11-25
在线时间
3 小时
发表于 2020-3-13 19:00:08 | 显示全部楼层
sawyer22 发表于 2016-11-22 12:14
嗯,我的问题现在已经解决了

请问是怎么解决的
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-25 22:41

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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