概述
目标环境:
Android8.1
RK3399PRO
添加MPU6500六轴传感器。
步聚:
1. 配置dts,添加中断脚的PINCTRL,添加对应的I2C。
&pinctrl {
//add by yuan 20201118
mpu6500_irq_gpio: mpu6500-irq-gpio {
rockchip,pins =
<2 RK_PA6 RK_FUNC_GPIO &pcfg_pull_up>;
};
//end
};
&i2c6 {
status = "okay";
i2c-scl-rising-time-ns = <345>;
i2c-scl-falling-time-ns = <11>;
clock-frequency = <200000>;
mpu6500@69 { /* Gyroscope and accelerometer sensor combo */
compatible = "mpu6500_acc";
reg = <0x69>; //
pinctrl-names = "default";
pinctrl-0 = <&mpu6500_irq_gpio>;
irq-gpios = <&gpio2 RK_PA6 IRQ_TYPE_EDGE_FALLING>;
type = <SENSOR_TYPE_ACCEL>;
irp_enable = <1>;
poll_delay_ms = <30>;
layout = <4>;
reprobe_en=<1>;
status ="okay";
//vdd-supply = <&pm8909_l17>;
//invn,place = "Portrait Down Back Side";
};
//注意此项必须添加,否则不会挂载gyroscope的驱动。
mpu6500_gyro@69{
reg = <0x69>;
pinctrl-names = "default";
compatible = "mpu6500_gyro";
type = <SENSOR_TYPE_GYROSCOPE>;
//irp_enable = <1>;
poll_delay_ms = <30>;
status = "okay";
reprobe_en=<1>;
};
};
2. 在menuconfig中使能相应的驱动程序。
3. 配置HAL层,RK3399配置Sensor的HAL层为ST,不要修改为MPU_PAD。
devicerockchiprk3399proBoardConfig.mk
# Sensors
BOARD_SENSOR_ST := true
BOARD_SENSOR_MPU_VR := false
BOARD_SENSOR_MPU_PAD := false
修改具体对应的Sensor HAL使能,GRAVITY_SENSOR,GYROSCOPE_SENSOR.
BOARD_GRAVITY_SENSOR_SUPPORT := true
BOARD_COMPASS_SENSOR_SUPPORT := false
BOARD_GYROSCOPE_SENSOR_SUPPORT := true
BOARD_PROXIMITY_SENSOR_SUPPORT := false
BOARD_LIGHT_SENSOR_SUPPORT := true
BOARD_PRESSURE_SENSOR_SUPPORT := false
BOARD_TEMPERATURE_SENSOR_SUPPORT := false
BOARD_USB_HOST_SUPPORT := true
BOARD_ACCELEROMETER_SENSOR_SUPPORT:=false
4. 开始编译系统,并烧录后;进行测试。
驱动挂载是否正常检查:
首先通过getevent查看驱动是否完全挂载;如果gsensor和gyro同时存在;则表示驱动均正常挂载。否则检查相应的dts和驱动程序是否配置好,compatibe是否一致。调试时在这里遇到问题:只写了acc的dts,未添加gyro的dts;后根据驱动的路径打开相应的文件查看,发现需要添加mpu6500_gyro对应的dts文件。
校正测试
命令行校准 命令行校准 方法:保持机器水平静止放置,输入以下命令校准 :
Gsensor: echo 1 > /sys/class/sensor_accel_calibration
GYRO : echo 1 > /sys/class/sensor_gyro_calibration G
查看校准值:
cat /sys/class/ sensor_class/accel_calibration
cat /sys/class/ sensor_class/gyro_calibration
cat是否能返回正常校正值,返回正常的校正值;则表示移植基本完成。返回read error或not find sensor,请查找驱动和HAL层。
我这边遇到的问题是GRAVITY_SENSOR没打开,则GYROSCOPE_SENSOR read error。因为gyro的I2C调用是通过gsensor实现。
5. 通过测试Android-SensorDataLogger APP进行测试。
最后
以上就是爱撒娇仙人掌为你收集整理的Android MPU6500r添加的全部内容,希望文章能够帮你解决Android MPU6500r添加所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复