资讯详情

联发科 (MTK) sensor bring up

MT6768平台

  • 1.添加驱动文件
  • 2.增加硬件配置支持
  • 3.添加硬件配置
  • 4.添加编译配置
  • 5.分配空间(不必要,当代码量超过当前空间大小时,会报错,根据报错log大小可以改变。
  • 6.兼容配置
  • 7.特殊情况 (下一步基本不用自己做,厂家提供的驱动代码都写好了,万一没有,可以自己加)
    • (FAE给的驱动有些许问题)
  • 8.遇到的问题

1.添加驱动文件

路径:vendor\mediatek\proprietary\tinysys\freertos\source\middleware\contexthub\MEMS_Driver\alsps

驱动.c   驱动.h  (以stk3321.c   stk3321.h为例) 

2.增加硬件配置支持

路径: vendor/mediatek/proprietary/tinysys/freertos/source/project/CM4_A/mt6768/P98980AA1/ProjectConfig.mk

CFG_stk3321_SUPPORT = yes ///修改内容

CFG_stk3321_SUPPORT = yes CFG_CM36558_SUPPORT = yes 

3.添加硬件配置

路径: vendor/mediatek/proprietary/tinysys/freertos/source/project/CM4_A/mt6768(根据项目确定)/P98980AA1/cust/alspscust_alsps.c

#ifdef CFG_STK3321_SUPPORT    { 
                .name = "stk3321",               //驱动名,驱动代码.c文件名为准        .i2c_num    = 0,                 //使用i2c选0,spi选1        .i2c_addr = { 
        0x48, 0},           //使用i2c时是i2c地址,使用spi时为0,即{0, 0}        .polling_mode_als = 1,           //0是轮询,1是中断        .als_level  = { 
        0, 328, 861, 1377, 3125, 7721, 7767, 12621, 23062, 28430, 33274, 47116, 57694, 57694, 65535},       ///光感采样值范围        .als_value  = { 
        0, 200, 320, 502, 1004, 2005, 3058, 5005, 8008, 10010, 12000, 16000, 20000, 20000, 20000, 20000},      //光感采样值经过算法获得的上报值范围。
       .eint_num = 10,                 //中断脚
   },
#endif

4.添加编译配置

路径: vendor/mediatek/proprietary/tinysys/freertos/source/project/CM4_A/mt6768(根据项目定)/platform /feature_config/chre.mk

ifeq ($(CFG_STK3321_SUPPORT),yes)
C_FILES  += $(SENDRV_DIR)/alsps/stk3321.c
endif                                   //注意放到对应传感器支持位置

5.分配空间(非必要,当代码量超过当前空间大小时将会报错,根据报错log改大小即可。)

路径: vendor/mediatek/proprietary/tinysys/freertos/source/project/CM4_A/mt6768(根据项目定)/platform/Setting.ini

alsps:***        //原有大小足够就不用改,反之跟着需求修改

6.兼容配置

路径:vendor/mediatek/proprietary/tinysys/freertos/source/project/CM4_A/mt6768(根据项目定)/P98980AA1/inc/overlay_sensor.h

#define OVERLAY2 \ OVERLAY_ONE_OBJECT(cm36558, cm36558) \ OVERLAY_ONE_OBJECT(stk3321, stk3321) //特别注意,”\”为连接符,必不可少。

路径: vendor/mediatek/proprietary/tinysys/freertos/source/project/CM4_A/mt6768(根据项目定)/P98980AA1/cust/overlay/overlay.c

void alspsOverlayRemap(void)
{ 
        
ALSPS_OVERLAY_REMAP_START
  ALSPS_OVERLAY_REMAP(cm36558);  
ALSPS_OVERLAY_REMAP(stk3321);
ALSPS_OVERLAY_REMAP_END
   return;

7.特殊情况 (下面这一步基本不用自己做,厂商提供的驱动代码都写好了,万一没有,可以自己加)

(FAE给的驱动有些许问题)

路径: vendor/mediatek/proprietary/tinysys/freertos/source/middleware/contexthub/MEMS_Driver/alsps/stk3321.c

/* #ifndef CFG_OVERLAY_INIT_SUPPORT MODULE_DECLARE(stk3321, SENS_TYPE_ALS, stk3321Init); #else #include "mtk_overlay_init.h" OVERLAY_DECLARE(stk3321, OVERLAY_WORK_02, stk3321Init); #endif */ 

8.遇到的问题

  1. 添加硬件配置时,如果协议是spi时,误将”.i2c_num”改为“.spi_num“,没有”.spi_num“这种写法,是根据来判断使用的是哪个协议。
  2. I2c地址写错,当时因为项目资料i2c通讯规格书上的i2c地址为0x46, 但是实际上该传感器的数据手册却是0x48,所以导致i2c通讯失败,改正后通讯成功。 (注:I2c通讯地址以IC数据手册为准)
  3. scp空间不足报错,根据log更改空间大小后编译通过。
  4. 兼容配置时overlay_sensor.h里添加驱动名字后没有添加连接符,导致编译报错,查看平台其它自带传感器配置添加后编译通过。
  5. 修改中断脚后却不生效,删掉out目录后重编生效。

标签: 传感器1004

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台