初学者对于NRF24L01的SPI读写时序的疑问:NRF24L01(0)读写在一起?

/*****************SPI时序函数******************************************/uncharNRFSPI(unch... /*****************SPI时序函数******************************************/
unchar NRFSPI(unchar date)
{
unchar i;
for(i=0;i<8;i++) // 循环8次
{
if(date&0x80)
MOSI=1;
else
MOSI=0; // byte最高位输出到MOSI
date<<=1; // 低一位移位到最高位
SCLK=1;
if(MISO) // 拉高SCK,nRF24L01从MOSI读入1位数据,同时从MISO输出1位数据
date|=0x01; // 读MISO到byte最低位
SCLK=0; // SCK置低
}
return(date); // 返回读出的一字节
}
/*****************SPI读取RXFIFO寄存器的值********************************/
unchar NRFReadRxDate(unchar RegAddr,unchar *RxDate,unchar DateLen)
{ //寄存器地址//读取数据存放变量//读取数据长度//用于接收
unchar BackDate,i;
CSN=0;//启动时序
BackDate=NRFSPI(RegAddr);//写入要读取的寄存器地址
for(i=0;i<DateLen;i++) //读取数据
{
RxDate[i]=NRFSPI(0); //???????????????????????????????????????????????????
}
CSN=1;
return(BackDate);
}

上面标注问号的是疑问之处,在写入要读取的寄存器地址,要读取数据,但是要调用函数NRFSPI要加形势参数,于是NRFSPI(0)。但是,NRFSPI(0)不是向NRF24L01发操作命令要读取config寄存器的数据吗?
数据手册 操作命令:R_REGISTER 000A AAAA 读配置寄存器;
那么在写完之后的下一个循环里,又一次NRFSPI(0),读到的应该是config寄存器的值,如此循环下去,读到的都会是config寄存器的值啊??????
展开
 我来答
lgd123ll
2017-08-04
知道答主
回答量:5
采纳率:0%
帮助的人:2.1万
展开全部

你看spi的时序就知道了,读取的时候只要有一个寄存器的地址被写入了,那么后面的读取的都是那个寄存器内的数值了,第二次写入多少都没有关系,所以你就算写入0,读出来的还是上一次你往里面写的那个寄存器内的数值

意法半导体(中国)投资有限公司
2023-06-12 广告
STM32是一种由意法半导体(STMicroelectronics)公司设计和生产的单片机系列,广泛用于嵌入式系统、物联网(IoT)设备、汽车电子、工业自动化等领域。STM32具有以下优点:1. 低功耗:STM32单片机通常具有较低的功耗,... 点击进入详情页
本回答由意法半导体(中国)投资有限公司提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式