input自系统之gsensor模块开发

1. 模块介绍

2.1.模块功能介绍

    在人机交互过程中,G-sensor起着非常重要的作用,gsensor作为输入设备,能感知当前G-sensor传感器所处的空间状态,附着在pad上配合使用,能测量出pad在空间上的坐标状态,从而获知pad用户的操作意图:横竖屏切换,转弯等。

2.2.硬件介绍

    目前G-sensorHOST的连接有4pin脚,分别为VCCGNDSDA,SCL。引脚正常工作时候的高电平均为3.3V

G-sensor的调试中,首先确认硬件的正确性。硬件调试中,需要确认下列项:

(1)、确认各个引脚与HOST连接的正确性。

(2)、电源电压是不是正常的,VCC是否为3.3VGND是否为0

(3)、I2C引脚电平是否匹配。

(4)、确认设备使用的I2C地址,特别是设备可以设置为多个地址时。

2.3.源码结构介绍

    G-sensor驱动源码位于如下两个目录中。

mma7660mma8452mma865xafa750,kxtik的源码位于linux-3.4\drivers\hwmon中。

bma250lis3delis3dh,dmard10mxc622x的源码位于linux-3.4\drivers\gsensor中。

linux-3.4

drivers/hwmon/

├── mma7660.c

├── mma8452.c

├── mma865x.c

├── afa750.c

├── kxtik.c

drivers/G-sensor/

├── bma250.c

├── lis3de_acc.c

├── lis3dh_acc.c

├── dmard10.c

├── mxc622x.c

2.4.模块配置介绍

2.4.1. sys_config.fex配置

1Gsensor 使用配置

配置文件的位置:\lichee\tools\pack\chips\sun7i\configs\android\wing-XXX目录下。

配置文件sys_config.fex中关于G-sensor的配置项如下:

--------------------------------------------------------------------------------

 G sensor configuration

 gs_twi_id ---  TWI ID for controlling G-sensor (0: TWI0, 1: TWI1, 2: TWI2)

--------------------------------------------------------------------------------

[G-sensor_para]

G-sensor_used        = 1

G-sensor_twi_id      = 2

G-sensor_int1        = 

G-sensor_int2        =    

文件配置说明如下:

配置项

配置项含义

G-sensor_used=xx

是否支持G-sensor

G-sensor_twi_id =xx

I2CBUS控制选择,0TWI0;1:TWI1;2:TWI2

G-sensor_int1=xx

中断1GPIO配置,目前暂不使用

G-sensor_int2=xx

中断2GPIO配置,目前暂不使用

    目前G-sensor采用轮询工作方式,在sysconfig中只需指定如下两个信息即可:

    G-sensor_used设为1,代表启用G-sensor

G-sensor_twi_id根据具体的电路,选择对应的I2C

2gsensor自动检测配置

使用自动检测功能时,需要增加以下配置信息,增加设备的可选择性。

如果gsensor_used 设置为0 则将退出gsensor的自动检测。

;--------------------------------------------------------------------------------

; G sensor automatic detection configuration

;gsensor_detect_used  --- Whether startup automatic inspection function. 1:used,0:unused

;Module name postposition 1 said detection, 0 means no detection. 

;--------------------------------------------------------------------------------

[gsensor_list_para]

gsensor_det_used = 1 //设置为1时,启动自动检测,设置为0时,退出自动检测。

bma250 = 1 //设置为1,该模块支持的I2C地址添加到扫描列表

mma8452 = 1

mma7660 = 1

mma865x = 1

afa750 = 1

lis3de_acc = 1

lis3dh_acc = 1

Kxtik = 1

dmard10 = 0 //设置为0,该模块支持的I2C地址从扫描列表中剔除

dmard06 = 1

mxc622x = 1

fxos8700 = 0

lsm303d = 0

当gsensor_det_used 设置为1时,启用自动检测,将设置为0时,退出自动检测。模块的名称后面写 1表示添加到自动检测扫描列表,写0表示剔除自动检测扫描列表。

gsensor_list_para列表中的名称顺序必须与 sw_device.c中gsensors的名称顺序一一对应。

2.4.2. menuconfig的配置

对于G-sensor的的内核配置,可通过命令make ARCH=arm menuconfig进入配置主界面,并按以下步骤操作:

首先,选择Device Drivers选项进入下一级配置,如图2所示:

进入Device Drivers配置后,如果需要配置mma7660mma8452mma865xafa750,选择Hardware Monitoring support,如图3所示:

Hardware Monitoring support选项配置下的驱动如下图所示:

进入Device Drivers配置后,如果需要配置bma250lis3delis3dh,选择G-sensor support,如图5所示:

最后,选择相应的G-sensor模块驱动选项,可选择直接编译进内核,也可以选择编译成模块。如图6所示:

1. 模块体系结构描述

G-sensor模块的体系结构图,如图6所示。

G-sensor设备为使用I2C总线进行通信的输入设备,G-sensor driver通过调用I2C驱动的相应接口来实现对G-sensor设备的控制、通信,如G-sensor driverG-sensor设备硬件各寄存器的读写访问等。

G-sensor driver将底层硬件对用户输入访问的响应转换为标准的输入事件,再通过核心层(Input Core)提交给事件处理层;而核心层对下提供了G-sensor driver的编程接口,对上又提供了事件处理层的编程接口;而事件处理层(input Event Driver)就为我们用户空间的应用程序提供了统一访问设备的接口和驱动层提交来的事件处理。用户空间将根据设备的节点进行数据的读取以及相应的处理。

<
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值