OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2745|回复: 2

L3G4200D 有读数 但是读数不变 有遇到这种情况的吗?附代码求指导谢谢!

[复制链接]

5

主题

12

帖子

0

精华

新手上路

积分
28
金钱
28
注册时间
2016-10-9
在线时间
14 小时
发表于 2016-11-29 11:52:14 | 显示全部楼层 |阅读模式
8金钱
本帖最后由 得嘞 于 2016-11-29 19:11 编辑

//************L3G4200D.c*********************************
#include "l3g4200d.h"
#include "sys.h"
#include "delay.h"
#include "math.h"   

u8 Init_L3G4200D(void)
{        
        IIC_Init1();
        Single_Write(CTRL_REG1,0x0F);
        Single_Write(CTRL_REG2,0x00);
        Single_Write(CTRL_REG3,0x00);
        Single_Write(CTRL_REG4,0x30);        //+-2000dps
        Single_Write(CTRL_REG5,0x00);
                                return 0;
                                                                  
}   

void  Single_Write(u8 REG_Address,u8 REG_data)                     //void
{
        IIC_Start1();                                   
        IIC_Send_Byte1(L3G4200_read);            
        IIC_Wait_Ack1();           
    IIC_Send_Byte1(REG_Address);                           
        IIC_Wait_Ack1();                                                                                                               
        IIC_Send_Byte1(REG_data);                                                               
        IIC_Wait_Ack1();                                 
    IIC_Stop1();                                                            
}

//?????*****************************************Single_ReadL3G4200DREG_data
u8 Single_Read(u8 REG_Address)
{   
  u8 REG_data=0;
        IIC_Start1();                                   
        IIC_Send_Byte1(L3G4200_WRITE);                 
        IIC_Wait_Ack1();           
    IIC_Send_Byte1(REG_Address);                  
        IIC_Wait_Ack1();                                                                                                               
        IIC_Start1();                                      
        IIC_Send_Byte1(L3G4200_read);         
        IIC_Wait_Ack1();           
  REG_data=IIC_Read_Byte1(0);                                       
    IIC_Stop1();                                                     
                return REG_data;        
}  


void READ_L3G4200D(short *tlx,short *tly,short *tlz)
{
        u8 BUF[6];
        u8 i;
        *tlx=0;
        *tly=0;
        *tlz=0;
        IIC_Start1();                                   
        IIC_Send_Byte1(L3G4200_WRITE);                 
        IIC_Wait_Ack1();           
    IIC_Send_Byte1(0x80|0x28);                  
        IIC_Wait_Ack1();                                                                                                               

         IIC_Start1();                                      
        IIC_Send_Byte1(L3G4200_read);        
        IIC_Wait_Ack1();
        for(i=0;i<6;i++)
        {
                if(i==5)BUF=IIC_Read_Byte1(0);  
                else BUF=IIC_Read_Byte1(1);        
         }                           
    IIC_Stop1();        
        
  *tlx=(short)(((u16)BUF[1]<<8)+BUF[0]);
  *tly=(short)(((u16)BUF[3]<<8)+BUF[2]);
  *tlz=(short)(((u16)BUF[5]<<8)+BUF[4]);

}



正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

5

主题

12

帖子

0

精华

新手上路

积分
28
金钱
28
注册时间
2016-10-9
在线时间
14 小时
 楼主| 发表于 2016-11-29 16:33:22 | 显示全部楼层
把GND拔掉 再插上数据会变化一次!或者关电源再打开也会变化一次 !其他时间数值没变化!!!
回复

使用道具 举报

5

主题

12

帖子

0

精华

新手上路

积分
28
金钱
28
注册时间
2016-10-9
在线时间
14 小时
 楼主| 发表于 2016-11-29 18:53:07 | 显示全部楼层
终于检查出原因了  居然是这里写错了!
void  Single_Write(u8 REG_Address,u8 REG_data)                     //void
{
        IIC_Start1();                                   
        IIC_Send_Byte1(L3G4200_read);     --------------这里这里-------改成-------    IIC_Send_Byte1(L3G4200_WRITE);
        IIC_Wait_Ack1();           
    IIC_Send_Byte1(REG_Address);                           
        IIC_Wait_Ack1();                                                                                                               
        IIC_Send_Byte1(REG_data);                                                               
        IIC_Wait_Ack1();                                 
    IIC_Stop1();                                                            
}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-3-1 16:11

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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