MTK 安卓11 传感器兼容 陀螺仪42607-p
处于成本或多样性考虑,经常需要新增传感器进行兼容,本次以陀螺仪icm42607-p型号进行分析1.如果平台或项目首次使用该传感器,需要添加传感器驱动文件(FAE提供),如果已经存在,直接进行下一步:文件存放路径:vendor\mediatek\proprietary\tinysys\freertos\source\middleware\contexthub\MEMS_Driver\accGyro\
处于成本或多样性考虑,经常需要新增传感器进行兼容,本次以陀螺仪icm42607-p型号进行分析
1.如果平台或项目首次使用该传感器,需要添加传感器驱动文件(FAE提供),如果已经存在,直接进行下一步:
文件存放路径:
vendor\mediatek\proprietary\tinysys\freertos\source\middleware\contexthub\MEMS_Driver\accGyro\icm4n607.c
2.新增陀螺仪i2c接口、方向、地址及中断号进行配置;
mt6771:项目平台 lv973:项目名
文件路径:
vendor\mediatek\proprietary\tinysys\freertos\source\project\CM4_A\mt6771\lv973\cust\accGyro\cust_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配置
文件路径:
vendor\mediatek\proprietary\tinysys\freertos\source\project\CM4_A\mt6771\lv973\cust\overlay\overlay.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;
}
文件路径:
vendor\mediatek\proprietary\tinysys\freertos\source\project\CM4_A\mt6771\lv973\inc\overlay_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.在项目的配置文件中进行配置;
文件路径:
vendor\mediatek\proprietary\tinysys\freertos\source\project\CM4_A\mt6771\lv973\ProjectConfig.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.如果平台首次使用该传感器,需要将文件添加到编译链接中;
文件路径:
vendor\mediatek\proprietary\tinysys\freertos\source\project\CM4_A\mt6771\platform\feature_config\chre.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
如果感觉文章有用请给博主点个赞
更多推荐
所有评论(0)