arielw 发表于 2011-11-24 11:04:39

关于L3G4200D用模拟SPI如何读取ID呀?

如题,在网上只看到模拟IIC读取ID的例程,它的数据接收为只有SDA,但SPI我是用四线的,不知道如何读取ID。请各位给予指点啊~~

MrLCL 发表于 2012-1-7 23:25:12

回复【楼主位】arielw
-----------------------------------------------------------------------

/*******************************************************************/
/*
/*L3G4200D读寄存器
/*
/*******************************************************************/
uchar L3G_R(uchar add)
{
        uchar k,dat=0xFF;
        add |=0x80;       //写寄存器;地址不自动增加;
        CS=0;
          for(k=0;k<8;k++)   //将寄存器的地址写入L3G4200D中
                   {
                          SCK=0;
                          if((add << k) & 0x80)
                                  {
                                        SDI = 1;
                                  }
                           else
                                  {
                                        SDI= 0;
                                  }                                                                                                                    
                           SCK=1;
                   }
                   SDI=1;
          for(k=0;k<8;k++)//将目标寄存器的数据读出来
                      {
                          SCK=0;
                          dat=dat<<1;
                          if(SDO==1)dat++;
                          SCK=1;
                   }
   CS =1;
       SDI=1;
       SDI=1;
       return(dat);       
}
其中add是ID的寄存器地址;返回值dat是那个reg的值,也就是你想知道的设备ID
页: [1]
查看完整版本: 关于L3G4200D用模拟SPI如何读取ID呀?