首页 > 微波/射频 > 射频学习交流 > 关于nRF24L01的一个新手问题

关于nRF24L01的一个新手问题

录入:edatop.com    阅读:
大家好,我刚开始学习nRF,是个菜鸟,有个很简单的问题想要请教大神们:
下面这个函数中有几句代码我不太理解,为什么要把MOSI的最高位置1,temp又是干嘛用的?
/****************************************************************************************************
函数:uint SPI_RW(uint uchar)
功能:NRF24L01的SPI写
***************************************************************************************************/
char SPI_RW(char data)
{
char i,temp=0;
           for(i=0;i<8;i++) // output 8-bit
           {
if(data & 0x80)
{
Hign_24L01_MOSI ;         // output 'uchar', MSB to MOSI
}
else
{
        Low_24L01_MOSI;  
}       
data = (data << 1);           // shift next bit into MSB..
temp<<=1;
Hign_24L01_SCK ;                      // Set SCK high..
if(Read_24L01_MISO )temp++;                  // capture current MISO bit
Low_24L01_SCK;                       // ..then set SCK low again
           }
    return(temp);                      // return read uchar
}

char SPI_RW(char data)
{
    char i,temp=0;
    for(i=0;i<8;i++) // output 8-bit
    {
        if(data & 0x80) //最高位为1的话 就个从机发1 否则发0 通过这几句就可以向从机发送数据的最高位
     Hign_24L01_MOSI ;
        else
        Low_24L01_MOSI;
                  
        data = (data << 1); // 把数据的低一位移至最高位以备发送
     temp<<=1;
        Hign_24L01_SCK ; //拉高拉低写入数据                 
     if(Read_24L01_MISO )temp++;//从 从机读取一位值然后跟 temp<<=1;
                                                     //合起来实现读取八位从机向主机发送的数据
     Low_24L01_SCK;                       
    }
    return(temp);//最后将八位集合为一个字节返回出来
}

a=(a<<1)与a<<=1表达的意思一样吗?

我对此问题也不明白 希望能明白

申明:网友回复良莠不齐,仅供参考。如需专业解答,请学习本站推出的微波射频专业培训课程

上一篇:想把控制继电器的电路改为无线遥控,看网上有开关2键无线遥控插座,怎样把两者接起来
下一篇:Android平台的 USB Host/slave IC

射频和天线工程师培训课程详情>>

  网站地图