Android MPU6500r添加

目标环境:

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。

\device\rockchip\rk3399pro\BoardConfig.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进行测试。

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值