3889|7

13

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

关于nRF24l01与51单片机的问题 [复制链接]

    最近在配置nrf24l01时遇到一个问题,想问下各位前辈。
    nrf24l01这个芯片的手册上有写它的SPI指令,比如写配置寄存器的指令名称是W_REGISTER,指令格式是001A AAAA,后面的A代表需要操作的寄存器地址。假设我要配置00H这个寄存器,那我是不是应该对nrf24l01输入0010 0000:先通过单片机拉低CSN脚,这样nrf24l01就处于接收指令状态,然后通过MOSI脚输入0010 0000,然后是不是继续往MOSI输入数据,这个数据就被写到00H这个寄存器上了?
此帖出自51单片机论坛

最新回复

void READ_PLD(uchar y) ;函数是值传递,你在函数体内部对形参y的改变都无法影响到实参,还是先学习一下c语言编程在来弄这些吧   详情 回复 发表于 2015-4-3 03:13
点赞 关注
 

回复
举报

527

帖子

1

TA的资源

一粒金砂(高级)

沙发
 
是的,具体你看时序图,最好写完再读一遍。
此帖出自51单片机论坛
 
 
 

回复

13

帖子

0

TA的资源

一粒金砂(中级)

板凳
 
谢谢,还有个问题问下,P0^3=(0xF0 & 0x80)这句执行后,P0^3口是输出一个1还是串行输出1000 0000(关于串行输出我还不懂)
此帖出自51单片机论坛
 
 
 

回复

13

帖子

0

TA的资源

一粒金砂(中级)

4
 
supermiao123 发表于 2015-2-5 17:57
是的,具体你看时序图,最好写完再读一遍。


谢谢,还有个问题问下,P0^3=(0xF0 & 0x80)这句执行后,P0^3口是输出一个1还是串行输出1000 0000(关于串行输出我还不懂)

此帖出自51单片机论坛

点评

你P0^3是一个BIT,你输出当然是一位了,你需要套个循环,每次移一位输出,这才是串行输出  详情 回复 发表于 2015-2-6 13:16
 
 
 

回复

527

帖子

1

TA的资源

一粒金砂(高级)

5
 



你P0^3是一个BIT,你输出当然是一位了,你需要套个循环,每次移一位输出,这才是串行输出
此帖出自51单片机论坛

点评

又遇到问题了接收模块的中断显示有接收到有效数据,可是数据总是读不出来,下面是读取有效数据的程序,程序很短,麻烦帮忙看一下问题在哪里: void READ_PLD(uchar y) #这个子程  详情 回复 发表于 2015-2-16 17:21
 
 
 

回复

13

帖子

0

TA的资源

一粒金砂(中级)

6
 
supermiao123 发表于 2015-2-6 13:16
你P0^3是一个BIT,你输出当然是一位了,你需要套个循环,每次移一位输出,这才是串行输出


      又遇到问题了接收模块的中断显示有接收到有效数据,可是数据总是读不出来,下面是读取有效数据的程序,程序很短,麻烦帮忙看一下问题在哪里:      
void READ_PLD(uchar y)      #这个子程序是将有效数据读出,存入y中
{
                uint b,c,x;
                y=0x00;
                x=0x61;      #0x61是读取数据寄存器中有效数据的指令
                CSN=0;        #CSN脚拉低,开始写入读取指令
for(b=0; b<8; b++)         #套个循环写入指令
                {
                  MOSI=(x&0x80);
                        SCK=1;
                        x=(x<<1);
                        SCK=0;
                 }
for(c=0; c<8; c++)      #开始读取有效数据,设置的有效数据长度是1个字节
                {
                 SCK=1;
                 y=(y<<1);
                 y|=MISO;
                 SCK=0;
                 }
                 CSN=1;
}


下面是主程序中调用的情况:
       uchar pld;         
        CE=0;             #拉低CE,进入待机模式,准备读取数据
         READ_PLD(pld);        
          P1=pld;

此帖出自51单片机论坛
 
 
 

回复

26

帖子

0

TA的资源

一粒金砂(中级)

7
 
xulanll 发表于 2015-2-16 17:21
又遇到问题了接收模块的中断显示有接收到有效数据,可是数据总是读不出来,下面是读取有效数据的程序,程序很短,麻烦帮忙看一下问题在哪里:      
void READ_PLD(uchar y)      #这个子程序是将有效数据读出,存入y中
{
                uint b,c,x;
                y=0x00;
                x=0x61;      #0x61是读取数据寄存器中有效数据的指令
                CSN=0;        #CSN脚拉低,开始写入读取指令
for(b=0; b

void READ_PLD(uchar y) ;函数是值传递,你在函数体内部对形参y的改变都无法影响到实参,还是先学习一下c语言编程在来弄这些吧

此帖出自51单片机论坛

点评

谢谢,我把void换成uint,然后子程序最后return y, 问题就解决了  详情 回复 发表于 2015-4-7 16:33
 
个人签名最近研究STM32,会对库函数的源代码进行解读,会陆续更新
 
 

回复

13

帖子

0

TA的资源

一粒金砂(中级)

8
 
盛夏之蝉 发表于 2015-4-3 03:13
void READ_PLD(uchar y) ;函数是值传递,你在函数体内部对形参y的改变都无法影响到实参,还是先学习一下c语言编程在来弄这些吧

谢谢,我把void换成uint,然后子程序最后return y, 问题就解决了
此帖出自51单片机论坛
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表