Gsensor驱动调试

目录

Gsensor driver. 1

一、Gsensor文件建立与编译... 1

二、Gsensor的原理图... 2

三、Gsensor的相关配置... 2

四、Gsensor I2C 读写... 3

五、X、Y、Z轴数据的获取... 4

六、Gsensor加速度算法... 8

七、驻车监控功能:... 9

八、Xxx 调试总结:... 11                           

Gsensor driver

G-sensor中文是重力传感器的意思(英文全称是Gravity-sensor),它能够感知到加速力的变化,加速力就是当物体在加速过程中作用在物体上的力,比如晃动、跌落、上升、下降等各种移动变化都能被G-sensor转化为电信号,然后通过微处理器的计算分析后,就能够完成程序设计好的功能,比如汽车在行驶过程中突然加速前进或静止或剧烈震动,从而触发紧急录影,以及驻车监控功能。

一、Gsensor文件建立与编译

驱动文件路径:peripheral\g_sensor

建立A_GSensor_MEMS_XXX.c、A_GSensor_MEMS_XXX.h

添加kconfig 选项

config G_SENSOR_MEMS_XXX

        bool"G_SENSOR_MEMS_XXX"

        default n

Gsensor编译:

ifdef CONFIG_G_SENSOR_MEMS_XXX

libperipheral-objs += $(GSENSORPATH)/A_GSensor_MEMS_XXX.o

endif

 

二、Gsensor的原理图

         GsensorXXX的原理图与LIS3DE pin to pin,(XXX 无INT2.) XXX的引脚4和6分别是SCL和SDA并与A__I2C_CHANNEL2相连接,9脚为INT2脚,连接DSP PWC_wkup1,用于驻车监控唤醒。INT1 为硬件gpio 中断,并未使用。

三、Gsensor的相关配置

寄存器地址的配置      

/* Reg address defination */

#define GSENSOR_MEMS_XXX_I2C_ADDR   0x30

 

//Digital Gyro Register Define

#define REG_WHO_AM_I                       0x04  /*xx change*/

#define REG_POWER_DOWN_CTRL       0X01   /*xx add*/

#define REG_ACTION                            0X02    /*xx add*/

#define REG_MOTION_THRESHOLD       0X03  /*xx add*/

#define REG_START_DATA_READ          0X04  /*xx add*/

#define REG_STATUS                              0X05   /*xx add*/

 

//06h~0Dh: Data registers

#define REG_X_L             0x06

#define REG_X_H             0x07

#define REG_Y_L             0x08

#define REG_Y_H             0x09

#define REG_Z_L             0x0A

#define REG_Z_H             0x0B                          

 

#define REG_INT_CFG                           0X15   /*xx add*/

#define REG_CTRL1           0x16

#define REG_CTRL2           0x17

#define REG_CTRL3           0x18

#define REG_OVERSAMPLING          0x38

#define MAX_REG                      (REG_OVERSAMPLING)

 

Gsensor初始化的设置

int GSENSOR_MEMS_XXX_Init(void)

{

   UINT16 Data;

   UINT8 temp[10] = {0};

 

   if((GSENSOR_MEMS_XXX_Read( REG_WHO_AM_I, &Data) != OK) || (Data !=WHO_AM_I_ID)){

       GSENSOR_DBG("[%s]: Addr: 0x%02x, Data: 0x%02x", __func__,REG_WHO_AM_I, (UINT8)Data);

       return NG;

   }else{

                   MY_MSG("REG_WHO_AM_I:0x%X",Data);

         }

       GSENSOR_MEMS_XXX_Write( REG_POWER_DOWN_CTRL, 0x02);  // Powerdown reset

       A_KAL_TaskSleep(3);

       GSENSOR_MEMS_XXX_Write(0x03,0x1F);//

       GSENSOR_MEMS_XXX_Write(0x38,0x9F);//

       GSENSOR_MEMS_XXX_Write(0x15,0x00);//0x00 low active 0x08 high active(INT PIN)

       GSENSOR_MEMS_XXX_Write(0x16,0x00);//

       GSENSOR_MEMS_XXX_Write(0x02,0x02);//

       GSENSOR_MEMS_XXX_Write(0x02,0x00);//

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值