Skip to content

传感器与显示

板载 BMI270 使用 SPI2;AHT20 与 OLED 共用 I²C1。开发顺序应是“先验证总线和器件身份,再写完整驱动和界面”,否则很难区分接线、时序、地址与上层逻辑问题。

BMI270 六轴 IMU

BMI270 集成三轴加速度计和三轴陀螺仪,通过 4 线 SPI2 与 STM32 通信。PA1 另用于加热,PA2 连接中断信号。

BMI270 在板卡上的位置

BMI270 器件位置;坐标方向以 PCB 丝印为准

BMI270 与加热电路原理图

BMI270 SPI2、INT1 与恒温加热驱动

信号MCU 引脚CubeMX 建议
CS/NSSPB12GPIO Output,软件控制片选
SCKPB13 / SPI2_SCKSPI2 Master
MISOPB14 / SPI2_MISOSPI2 Master
MOSIPB15 / SPI2_MOSISPI2 Master
INT1PA2GPIO EXTI(按驱动需求)
HEATPA1 / TIM2_CH2PWM,必须闭环限幅

BMI270 上电后需要加载配置文件才能进入正常工作状态。初始化至少完成:总线读写自检、芯片 ID、软复位、配置文件加载、量程/输出速率和错误状态检查。原始数据还需按量程换算,并处理坐标方向、静态零偏、温漂和滤波。

坐标系不要靠猜

说明书给出默认方向,但最终应以当前 PCB 丝印和实测旋转方向为准。分别沿单轴正向转动开发板,确认软件中的 X/Y/Z 符号后再接入姿态解算。

AHT20 温湿度传感器

AHT20 挂载在 I²C1,总线引脚为 PB6/SCLPB7/SDA,标准 7 位地址为 0x38

AHT20 在板卡上的位置

板载 AHT20 位置

AHT20 原理图

AHT20 与 I²C1 的连接

项目参数
SCLPB6 / I2C1_SCL
SDAPB7 / I2C1_SDA
7 位地址0x38
HAL 常用传参0x38 << 1,即 0x70

典型读取流程为上电等待、检查校准状态、必要时初始化、触发测量、等待 busy 清除、读取 6 字节并换算温湿度。具体命令与等待时间以 AHT20 数据手册和所用驱动版本为准。

0.96 英寸 I²C OLED

OLED 接口用于 SSD1306 类 0.96 英寸模块,与 AHT20 共用 PB6/PB7。说明书记录地址 0x78,这是常见的 8 位写地址表示;对应 7 位地址通常为 0x3C

OLED 接口线序

OLED 模块接口位置和线序

OLED 接口原理图

SSD1306 OLED 与 I²C1 的连接

接口针脚信号连接
1GND电源地
2VCC3.3 V
3SCLPB6 / I2C1_SCL
4SDAPB7 / I2C1_SDA

地址表示法

不要在驱动中混用 7 位地址 0x3C、8 位写地址 0x78 和 HAL 已左移参数。先确认 API 需要哪一种表示法,再在整个工程中统一。

共用 I²C1 的访问规则

AHT20 与 OLED 地址不同,可以共享总线。裸机程序应避免在一次事务中途切换设备;进入 FreeRTOS 后,多个任务访问同一 I²C 句柄时使用互斥锁,或集中到一个设备服务任务。

最小验证顺序

  1. 读取 BMI270 芯片 ID,再加载配置并观察静止原始值。
  2. 用 I²C 设备就绪检查分别确认 0x380x3C
  3. 读取一次 AHT20 状态与测量值。
  4. 让 OLED 清屏并显示固定字符串。
  5. 最后再组合传感器采样、界面刷新和 RTOS 任务。

对应实验:I²C AHT20I²C OLEDSPI BMI270

最近更新