概述
处于成本或多样性考虑,经常需要新增传感器进行兼容,本次以陀螺仪icm42607-p型号进行分析
1.如果平台或项目首次使用该传感器,需要添加传感器驱动文件(FAE提供),如果已经存在,直接进行下一步:
文件存放路径:
vendormediatekproprietarytinysysfreertossourcemiddlewarecontexthubMEMS_DriveraccGyroicm4n607.c
2.新增陀螺仪i2c接口、方向、地址及中断号进行配置;
mt6771:项目平台 lv973:项目名
文件路径:
vendormediatekproprietarytinysysfreertossourceprojectCM4_Amt6771lv973custaccGyrocust_accGyro.c
#include "cust_accGyro.h"
struct accGyro_hw cust_accGyro_hw[] __attribute__((section(".cust_accGyro"))) = {
#ifdef CFG_ICM2060X_SUPPORT
{
.name = "icm2060x",
.i2c_num = 1,
.direction = 2,
.i2c_addr = {0x68, 0},
.eint_num = 4,
},
#endif
#ifdef CFG_FIS210X_SUPPORT
{
.name = "fis210x",
.i2c_num = 1,
.direction = 2,
.i2c_addr = {0x6a, 0x6b},
.eint_num = 4,
},
#endif
#ifdef CFG_ICM4X607_SUPPORT
{
.name = "icm4n607",
.i2c_num = 1,
.direction = 2,
.i2c_addr = {0x68, 0},
.eint_num = 4,
},
#endif
};
查看项目配置文件可知,兼容前使用ICM2006X传感器,其中i2c_num,direction,eint_num可以完全照搬icm2006x的配置,宏定义和name进行修改,i2c_addr可以查看其他平台的配置地址或查看芯片手册获取;
3.添加overlay配置
文件路径:
vendormediatekproprietarytinysysfreertossourceprojectCM4_Amt6771lv973custoverlayoverlay.c
void accGyroOverlayRemap(void)
{
ACC_GYRO_OVERLAY_REMAP_START
ACC_GYRO_OVERLAY_REMAP(icm2060x);
ACC_GYRO_OVERLAY_REMAP(icm4n607);
ACC_GYRO_OVERLAY_REMAP_END
return;
}
文件路径:
vendormediatekproprietarytinysysfreertossourceprojectCM4_Amt6771lv973incoverlay_sensor.h
/*****************************************************************************
* Overlay0: ACCGYRO
*****************************************************************************/
#define OVERLAY_SECTION_ACCGYRO
OVERLAY_ONE_OBJECT(icm2060x, icm2060x)
OVERLAY_ONE_OBJECT(icm4n607, icm4n607)
#ifdef OVERLAY_SECTION_ACCGYRO
#define OVERLAY0 OVERLAY_SECTION_ACCGYRO
#else
#define OVERLAY0
#endif // OVERLAY_SECTION_ACCGYRO
4.在项目的配置文件中进行配置;
文件路径:
vendormediatekproprietarytinysysfreertossourceprojectCM4_Amt6771lv973ProjectConfig.mk
CFG_ACCGYRO_SUPPORT = yes
CFG_LSM6DS3_SUPPORT = no
CFG_LSM6DSM_SUPPORT = no
CFG_BMI160_SUPPORT = no
CFG_LIS3DH_SUPPORT = no
CFG_LIS2HH12_SUPPORT = no
CFG_FIS210X_SUPPORT = no
CFG_ICM2060X_SUPPORT = yes
CFG_ICM4X607_SUPPORT = yes
5.如果平台首次使用该传感器,需要将文件添加到编译链接中;
文件路径:
vendormediatekproprietarytinysysfreertossourceprojectCM4_Amt6771platformfeature_configchre.mk
ifeq ($(CFG_FIS210X_SUPPORT),yes)
C_FILES += $(SENDRV_DIR)/accGyro/fis210x.c
endif
ifeq ($(CFG_ICM2060X_SUPPORT),yes)
C_FILES += $(SENDRV_DIR)/accGyro/icm2060x.c
endif
ifeq ($(CFG_ICM4X607_SUPPORT),yes)
C_FILES += $(SENDRV_DIR)/accGyro/icm4n607.c
endif
ifeq ($(CFG_MIR3DA_SUPPORT),yes)
C_FILES += $(SENDRV_DIR)/accGyro/mir3da.c
CFLAGS += -DCFG_ACC_NO_FIFO
endif
endif
如果感觉文章有用请给博主点个赞
最后
以上就是要减肥柜子为你收集整理的MTK 安卓11 传感器兼容 陀螺仪42607-p的全部内容,希望文章能够帮你解决MTK 安卓11 传感器兼容 陀螺仪42607-p所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复