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