硬件平台:正点原子阿波罗STM32F429IGT6
zephyr版本:Zephyr version 3.7.99
开发环境:ubuntu 24.4
zephyr驱动开发与之前接触到的开发方式可能都不一样,更像是linux驱动开发,zephyr源码里边其实已经有写好的I2C和MPU6050的驱动,我们要做的就是向设备树追加一些内容,和修改一下.yaml文件。
首先找到zephyr/samples/sensor/mpu6050文件夹
在board里边创建一个stm32f429i_alientek.overlay文件
文件内容:
/*
* Copyright (c) 2019 Nordic Semiconductor ASA
*
* SPDX-License-Identifier: Apache-2.0
*/
&i2c1 {
mpu6050@68 {
compatible = "invensense,mpu6050";
reg = <0x68>;
status = "okay";
int-gpios = <&gpioa 15 GPIO_ACTIVE_LOW>;
};
};
可以看到内容很简单,向tm32f429i_alientek.dts设备树文件的I2C1节点追加一个MPU6050子节点,compatible 属性为"invensense,mpu6050",设备地址为0X68,状态为启用,中断引脚为PA15,低电平。
然后修改sample.yaml文件
文件内容:
#
# Copyright (c) 2019 Nordic Semiconductor ASA
#
# SPDX-License-Identifier: Apache-2.0
#
sample:
name: MPU6050 Sensor Sample
tests:
sample.sensor.mpu6050:
build_only: true
platform_allow: nrf52dk/nrf52832 stm32f429i_alientek
tags: sensors
integration_platforms:
- nrf52dk/nrf52832 stm32f429i_alientek
只是在platform_allow和integration_platforms后边加上了我们的板子。
然后就大功告成了
编译:
bash
west build -p always -b stm32f429i_alientek samples/sensor/mpu6050
编译成功:
打开串口:
bash
sudo minicom -D /dev/ttyUSB0 -b 115200
下载程序:
bash
west flash
现象: