Android Sensor学

这两天在看传感器部分,如下所说使用了hwmsensor控制所有的传感器,跟这里的代码和具体的代码之后最终调用到了attach,如下所示:


MTK代码里使用了一个hwmsensor模块控制所有的sensor。
代码路径:mediatek/kernel/drivers/hwmon/hwmsen/hwmsen_dev.c,编译成hwmsen_dev.o,系统起来后会生成/dev/hwmsensor设备。 
使用sensor_operate接口管理所有sensor驱动,向上提供hwmsen_unlocked_ioctl接口


再往下就是具体的sensor驱动代码了,根据MTK的驱动结构完成sensor_operate接口(如在bma222.c这个gsensor中bma222_i2c_probe函数中的1652行中的sensor_operate=gsensor_operate),并调用hwmsen_dev.c里的hwmsen_attach函数,把sensor_operate接口加到hwmsen_dev的列表里,这样hwmsen_dev里就能调用所有sensor的sensor_operate函数。


传感器(sensor)
MTK_SENSOR_SUPPORT= yes
CUSTOM_KERNEL_ACCELEROMETER= auto//重力加速度传感器
CUSTOM_KERNEL_MAGNETOMETER=akm8975//磁力感应器//
CUSTOM_KERNEL_ALSPS= tmd2771//光感距离传感器
CUSTOM_KERNEL_BAROMETER=//气压计
CUSTOM_KERNEL_GYROSCOPE=//陀螺仪
 
16.1  重力加速度传感器(G-sensor感应器)
CUSTOM_KERNEL_ACCELEROMETER= auto//传感器
#ifdefined(MTK_AUTO_DETECT_ACCELEROMETER)
\mediatek\source\kernel\drivers\hwmon\hwmsen\Hwmsen_dev.c
inthwmsen_gsensor_add(struct sensor_init_info* obj)
\mediatek\custom\common\kernel\accelerometer\auto\
 
重力传感方向设置:
\alps\mediatek\custom\\kernel\accelerometer\mc3210\cust_acc.c
static structacc_hw cust_acc_hw = {
    .i2c_num = 2,
    .direction = 5,   // modify//重力传感方向
 
16.2 ALS\PS 光感距离传感器
CUSTOM_KERNEL_ALSPS= tmd2771
 
mediatek\custom\common\kernel\alsps\tmd2771\tmd2771.c
mediatek\custom\common\kernel\alsps\tmd2771\tmd2771.h
mediatek\custom\prj\kernel\alsps\tmd2771\cust_alsps.c
 
16.3 GYRO-sensormotion sensor 陀螺仪
CUSTOM_KERNEL_GYROSCOPE= l3g4200d
 
mediatek\custom\common\kernel\gyroscope\l3g4200d\l3g4200d.c
mediatek\custom\prj\kernel\gyroscope\l3g4200d\cust_gyro.c
 
16.4 BAROMETER-sensor气压计
CUSTOM_KERNEL_BAROMETER= ms5607
 
mediatek\custom\prj\kernel\barometer\ms5607\cust_baro.c
mediatek\custom\common\kernel\barometer\ms5607\ms5607.c
 
16.5 MAGNETOMETER 磁感应器
\alps\mediatek\custom\\kernel\magnetometer\yamaha532\cust_mag.c
磁感应方向设置:
static structmag_hw cust_mag_hw = {
    .i2c_num = 2,
    .direction = 3,//磁感应方向//参照规格书
    .power_id = MT65XX_POWER_NONE, 
    .power_vol= VOL_DEFAULT,       
};
 
16.6 compass 指南针
CUSTOM_KERNEL_MAGNETOMETER= akm8975
 
mediatek\custom\common\kernel\magnetometer\akm8975\akm8975.c
mediatek\custom\konka73_gb\kernel\magnetometer\akm8975\cust_mag.c
 
17.     震动马达
CUSTOM_KERNEL_VIBRATOR=vibrator
a.马达震动幅度(MT6582及其他最新平台):
..\mediatek\custom\\kernel\vibrator\cust_vibrator.c
static structvibrator_hw cust_vibrator_hw = {
         .vib_timer = 80,//30,         //振动时长
         .vib_limit = 9,//振动??
         .vib_vol = 0x5, //2.8V for vibr  //  :0x5//振动电压
};
 
b.马达震动幅度MT6577直接修改pmic驱动电压:
此文件可以修改各个gpio驱动电压:
\alps\mediatek\platform\mt6577\lk\mt_pmic.c
 
void PMIC_CUSTOM_SETTING_V1(void){}
ret=pmic_config_interface(BANK0_DIGLDO_CON33,0x3,
BANK_0_RG_VIBR_VOSEL_MASK,BANK_0_RG_VIBR_VOSEL_SHIFT);//0x4
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值