关于nRF24l01与51单片机的问题

2019-03-24 18:04发布

    最近在配置nrf24l01时遇到一个问题,想问下各位前辈。
    nrf24l01这个芯片的手册上有写它的SPI指令,比如写配置寄存器的指令名称是W_REGISTER,指令格式是001A AAAA,后面的A代表需要操作的寄存器地址。假设我要配置00H这个寄存器,那我是不是应该对nrf24l01输入0010 0000:先通过单片机拉低CSN脚,这样nrf24l01就处于接收指令状态,然后通过MOSI脚输入0010 0000,然后是不是继续往MOSI输入数据,这个数据就被写到00H这个寄存器上了? 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
7条回答
supermiao123
1楼-- · 2019-03-24 23:52
是的,具体你看时序图,最好写完再读一遍。
xulanll
2楼-- · 2019-03-25 05:52
谢谢,还有个问题问下,P0^3=(0xF0 & 0x80)这句执行后,P0^3口是输出一个1还是串行输出1000 0000(关于串行输出我还不懂)
xulanll
3楼-- · 2019-03-25 06:02
 精彩回答 2  元偷偷看……
supermiao123
4楼-- · 2019-03-25 06:15
xulanll 发表于 2015-2-5 18:32



你P0^3是一个BIT,你输出当然是一位了,你需要套个循环,每次移一位输出,这才是串行输出
xulanll
5楼-- · 2019-03-25 11:54
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;

盛夏之蝉
6楼-- · 2019-03-25 13:24
 精彩回答 2  元偷偷看……

一周热门 更多>