amoBBS 阿莫电子论坛

 找回密码
 注册
搜索
bottom↓
查看: 4380|回复: 6

L3G4200D spi问题

[复制链接]
发表于 2011-6-22 23:56:57 | 显示全部楼层 |阅读模式
我在使用SPI读写L3G4200D常出现以下两个问题,一是无法读出数据,二是读出的数据一直为一个不变的值。请教高手,有没有知道原因的,我已经整了好久。谢谢了.....我的初始化程序如下,现在很怀疑自己的初始化程序有问题:请高手看下,给点意见!
    SPIWrite(0x60);
    SPIWrite (0x4F);
    SPIWrite (0x00);
    SPIWrite (0x00);
    SPIWrite (0xD1);
    SPIWrite (0x00);
读L3G4200D如下
    do
    {
    SPIWrite(STATUS_REG | 0x80);
    Status = SPIRead();
    }
    while(Status & 0x08);
    if(Status & 0x80)
    return;
   
    SPIWrite(OUT_X_L | 0x80);
    Angular_Speed_XL = SPIRead();
    SPIWrite(OUT_X_H|0x80);
    Angular_Speed_XH=SPIRead();
发表于 2011-6-23 09:19:29 | 显示全部楼层
http://ourdev.cn/bbs/bbs_content.jsp?bbs_sn=4728727&bbs_page_no=1&bbs_id=1025

1L有代码,三线SPI模式
 楼主| 发表于 2011-6-23 13:45:32 | 显示全部楼层
回复【1楼】Clinging 哆拉C梦
-----------------------------------------------------------------------

我试了一下,结果值一直是在一个范围内变化,当我旋转陀螺仪时,也还是在那个范围内变化,这是为什么啊?我把初始化程序屏蔽了,结果还是那样。你知道可能是什么原因吗?
发表于 2011-6-29 13:35:57 | 显示全部楼层
楼主你的问题解决了吗我碰到和你一样的问题 请指教
发表于 2011-7-6 10:32:55 | 显示全部楼层
L3G4200D 原装现货,有需要请联系QQ:1612150952
LSM303DLH也有!
发表于 2012-1-7 23:31:38 | 显示全部楼层
回复【3楼】veryjc
-----------------------------------------------------------------------

/*******************************************************************/
/*
/*  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);       
}
/*******************************************************************/
/*
/*  L3G4200D写寄存器
/*
/*******************************************************************/
void L3G_W(uchar add,uchar dat)
{
        uchar k;
        add &=0x3F;       //写寄存器;地址不自动增加;
        CS   =0;
          for(k=0;k<8;k++)   //将寄存器的地址写入L3G4200D中
                   {
                          SCK=0;
                          if((add << k) & 0x80)
                                  {
                                        SDI = 1;
                                  }
                           else
                                  {
                                        SDI= 0;
                                  }                                                                                                                    
                           SCK=1;
                   }

          for(k=0;k<8;k++)   //将配置数据写入L3G4200D寄存器中
                   {
                          SCK=0;
                          if((dat << k) & 0x80)
                                  {
                                        SDI = 1;
                                  }
                           else
                                  {
                                        SDI= 0;
                                  }                                                                                                                    
                           SCK=1;
                   }
                   SDI=1;
                  
      CS =1;
          SDI=1;
          SDO=1;       
}
发表于 2018-4-24 15:46:27 | 显示全部楼层
谢谢分享!
友情提示:标题不合格、重复发帖,将会被封锁ID。详情请参考:论坛通告:封锁ID、获得注册邀请码、恢复被封ID、投诉必读
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|阿莫电子论坛(原ourAVR/ourDEV) ( 工信部备案:粤ICP备09047143号 公安备案:44190002001997(交互式论坛) )

GMT+8, 2018-8-19 12:24

阿莫电子论坛, 原"中国电子开发网"

© 2004-2018 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表