考虑到成本或多样性,新传感器往往需要兼容。这一次,陀螺仪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\\\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
如果你觉得文章有用,请表扬博主