微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > 射频无线通信设计 > 初学者对于NRF24L01的SPI读写时序的疑问?

初学者对于NRF24L01的SPI读写时序的疑问?

时间:10-02 整理:3721RD 点击:
/*****************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寄存器的值啊?

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top