1 关键字

sensor;sensorhub;AP;

2 问题描述

展锐7885芯片设备中,原安卓版本通过sensorhub访问的i2c传感器设备,现需修改成直接通过ap i2c总线访问的方式。

3 问题背景

sensorhub介绍

在sensorhub架构中,外部的 sensor IC 通过I2C、SPI 等总线挂载于 sensor hub 核,sensor hub 核通过 SIPC 通讯方式与 AP 核进行交互。

Sensor Hub主要有两个功能:

  1、在CPU休眠的情况下,实现对传感器的实时控制,从而达到降低功耗的功能。

  2、将不同类型Sensor的数据进行融合,实现多种sensor数据结合才能实现的功能。

SPRD平台的参考设计中,sensor通常是连接到IIC2总线并由CM4进行控制:

{REG_PIN_IIC_MATRIX_MTX_CFG,0x76D23C10},//IIC0->AP_IIC0;IIC1->AP_IIC1;IIC2->CM4_I2C0;IIC3->AP_IIC3;IIC4->AP_IIC2;IIC5->CM4_I2C1;IIC6->AP_IIC6;IIC7->AP_IIC7

现在想通过AP直接对sensor进行访问,那么修改I2C2的控制权就可以了。

4 解决方案

修改pinmap.c中的相关配置,具体如下:

步骤1:将 IIC2 总线的挂载关系从 CM4 切换到 AP

IIC_MATRIX_MTX_CFG 寄存器 用于IIC控制器选择。

修改 IIC_MATRIX_MTX_CFG 寄存器,将连接传感器的 I2C2 总线从原本由 CM4 控制变为由 AP 控制。在修改过程中,需要确认 AP 侧哪个 I2C 接口处于空闲状态,以便正确挂载设备。

(注:这里只提供修改思路,具体值需参看对应平台芯片手册中iic_matrix_mtx_cfg寄存器的配置说明)

-{REG_PIN_IIC_MATRIX_MTX_CFG,0x76D23C10},//IIC0->AP_IIC0;IIC1->AP_IIC1;IIC2->CM4_I2C0;IIC3->AP_IIC3;IIC4->AP_IIC2;IIC5->CM4_I2C1;IIC6->AP_IIC6;IIC7->AP_IIC7+{REG_PIN_IIC_MATRIX_MTX_CFG,0x76D23410},//IIC0->AP_IIC0;IIC1->AP_IIC1;IIC2->AP_I2C4;IIC3->AP_IIC3;IIC4->AP_IIC2;IIC5->CM4_I2C1;IIC6->AP_IIC6;IIC7->AP_IIC7

步骤2:调整 I2C2 的引脚跟随AP睡眠

通过修改 SCL2 和 SDA2 引脚的相关寄存器配置,将这些引脚在睡眠状态下的控制权从 CM4 切换为 AP, 使得sensor跟随AP睡眠。

{REG_PIN_SCL2, BITS_PIN_AF(0)},
-{REG_MISC_PIN_SCL2, BITS_PIN_DS(1)|BIT_PIN_WPUS|BIT_PIN_WPU|BIT_PIN_SLP_CM4|BIT_PIN_SLP_WPU|BIT_PIN_SLP_Z},//I2C2_SCL
+{REG_MISC_PIN_SCL2, BITS_PIN_DS(1)|BIT_PIN_WPUS|BIT_PIN_WPU|BIT_PIN_SLP_AP|BIT_PIN_SLP_WPU|BIT_PIN_SLP_Z},//I2C2_SCL

{REG_PIN_SDA2, BITS_PIN_AF(0)},
-{REG_MISC_PIN_SDA2, BITS_PIN_DS(1)|BIT_PIN_WPUS|BIT_PIN_WPU|BIT_PIN_SLP_CM4|BIT_PIN_SLP_WPU|BIT_PIN_SLP_Z},//I2C2_SDA
+{REG_MISC_PIN_SDA2, BITS_PIN_DS(1)|BIT_PIN_WPUS|BIT_PIN_WPU|BIT_PIN_SLP_AP|BIT_PIN_SLP_WPU|BIT_PIN_SLP_Z},//I2C2_SDA

5 知识延申

修改完配置之后,接下来就要对sensor基于openharmony的hdf驱动框架做适配了。

在oh hdf框架中,提供了Sensor驱动模型,传感器的驱动开发包括抽象驱动开发和差异化驱动开发两部分。传感器的抽象驱动开发包括同一个传感器id中不同器件的公共接口实现;传感器的差异化驱动开发包括不同器件差异化接口的实现。

具体适配过程参看设备开发指南中的详细说明: https://docs.openharmony.cn/pages/v5.0/zh-cn/device-dev/driver/driver-peripherals-sensor-des.md

Logo

社区规范:仅讨论OpenHarmony相关问题。

更多推荐