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