gsensor驱动调用框架流程

gsensor驱动调用框架流程

ID:7772124

大小:31.00 KB

页数:7页

时间:2018-02-25

gsensor驱动调用框架流程_第1页
gsensor驱动调用框架流程_第2页
gsensor驱动调用框架流程_第3页
gsensor驱动调用框架流程_第4页
gsensor驱动调用框架流程_第5页
资源描述:

《gsensor驱动调用框架流程》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、一、首先建立这样一个全局的观念:   Android中sensor在Android系统架构中的位置及其工作。方框图如下:从以上方框图中,可以看出Android中sensor在系统分为四层:驱动层(SensorDriver)、硬件抽象层(Native)、中间层(Framework)、应用层(Java)。硬件抽象层与中间层可以合并一起作为Framework层。针对我们xx这里一个具体的Gsensor,下面将以具体的源码形式来讲解以上的这个系统框图。 二、驱动层(SensorDriverLayer)芯片

2、ADXL345为GSensor,至于硬件的具体工作原理,须分析ADXL345的DataSheet。驱动源码位于:xxcustomcommonkernelaccelerometeradxl345目录。由于ADXL345是以I2C形式接口挂接到Linux系统,因此同时需要分析Linux的I2C子系统架构(略)。其源码位于:1、 xxplatformxxkerneldriversi2c2、 kerneldriversi2c查看ADXL345.c文件,分析针对于其硬件工作原理的几个

3、函数。硬件初始化: [cpp]viewplaincopy1.static int adxl345_init_client(struct i2c_client *client, int reset_cali)  2.  3.{  4.  5.    struct adxl345_i2c_data *obj = i2c_get_clientdata(client);  6.  7.    int res = 0;  8.  9.   1.  2.    adxl345_gpio_config();//

4、配置GPIO口,这里由于不使用中断,所以将中断引脚配置成输入输出口。  3.  4.      5.  6.    res = ADXL345_CheckDeviceID(client); //检测设备ID,通过读ADXL345的DEVID寄存器  7.  8.    if(res != ADXL345_SUCCESS)  9.  10.    {  11.  12.        return res;  13.  14.    }     15.  16.   17.  18.    res 

5、= ADXL345_SetPowerMode(client, false);//设置电源模式,ADXL345有几种电源模式,这里设置false值指不让芯片处于messure模式  19.  20.    if(res != ADXL345_SUCCESS)  21.  22.    {  23.  24.        return res;  25.  26.    }  27.  28.      29.  30.   31.  32.    res = ADXL345_SetBWRate(c

6、lient, ADXL345_BW_100HZ);//设置带宽,100Hz  33.  34.    if(res != ADXL345_SUCCESS ) //0x2C->BW=100Hz  35.  36.    {  37.  38.        return res;  39.  40.    }  41.  42.   43.  44.    //设置数据格式,具体见datasheet  45.  46.    res = ADXL345_SetDataFormat(client, A

7、DXL345_FULL_RES

8、ADXL345_RANGE_2G);  47.  1.    if(res != ADXL345_SUCCESS) //0x2C->BW=100Hz  2.  3.    {  4.  5.        return res;  6.  7.    }  8.  9.   10.  11.    gsensor_gain.x = gsensor_gain.y = gsensor_gain.z = obj->reso->sensitivity;  12.  13. 

9、  14.  15.    //设置中断寄存器,关闭中断  16.  17.    res = ADXL345_SetIntEnable(client, 0x00);//disable INT          18.  19.    if(res != ADXL345_SUCCESS)   20.  21.    {  22.  23.        return res;  24.  25.    }  26.  27.   28.  29.    if(0 != reset_

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。