Files
mobile_comm/luatos/air780epm/module/Air780EPM/demo/sensor/sc7a20h
wangfq 173dd6874f init: Air780EPM 官方 LuatOS 项目代码基线
- 来源: 合宙 LuatOS 官方仓库 air780epm 模块完整代码
- 路径: luatos/air780epm/module/Air780EPM/demo 含官方 demo(含 mqtt/mqtts/socket/uart 等)
- 后续: 基于 demo 开发 UART<->MQTT 数据上报功能
2026-08-31 08:53:49 +08:00
..

SC7A20H 三轴加速度传感器演示

一、功能模块介绍

1.1 核心主程序模块

  1. main.lua - 主程序入口,负责项目初始化、版本定义和任务调度
  2. sc7a20h_demo.lua - SC7A20H 功能演示模块,包含数据读取、量程切换、输出速率切换、休眠唤醒等所有功能的演示用例

1.2 扩展库模块

  1. exs_sc7a20h - SC7A20H 扩展库,提供初始化、三轴加速度数据读取、量程切换、输出速率切换、功耗模式切换、睡眠/唤醒、关闭等 API

1.3 I2C 模式说明

推荐使用软件 I2C 模式SC7A20H 在异常 I2C 通信后可能锁死 SDA 总线。本库已内置 I2C 总线卡死自动检测与恢复功能。本 demo 使用软件 I2C 模式演示。

二、演示流程介绍

本 demo 按顺序演示 exs_sc7a20h 扩展库的 4 项功能:HELLO → [1/4] → [2/4] → [3/4] → [4/4] → End

2.1 功能演示项说明

  1. [1/4] 初始化与数据读取 - 初始化 SC7A20H 传感器并读取三轴加速度数据(X/Y/Z,单位 g)
  2. [2/4] 量程切换演示 - 在 ±2g(高精度)和 ±4g(宽范围)量程之间切换,观察数据变化
  3. [3/4] 输出速率切换 - 依次切换 25Hz / 50Hz / 100Hz / 200Hz 输出速率
  4. [4/4] 休眠与唤醒演示 - 演示 sleep()/wakeup() 待机与唤醒

三、显示效果

四、演示硬件环境

4.1 硬件清单

  • Air780EPM 核心板 × 1
  • SC7A20H 三轴加速度传感器模块 × 1 demo所演示的SC7A20H 三轴加速度传感器模块购买链接
  • 母对母杜邦线 × 6
  • TYPE-C 数据线 × 1

4.2 接线配置

4.2.1 SC7A20H 模块接线

Air780EPM 核心板
SC7A20H 模块
32/GPIO31
SCL
31/GPIO30
SDA
30/GPIO29
INT1
VDD_EXT
VCC
GND
GND

说明:接线时注意杜邦线不宜过长,以免通信不稳定。

五、演示软件环境

5.1 开发工具

5.2 内核固件

5.3 脚本文件

  1. main.lua - 程序入口
  2. sc7a20h_demo.lua - SC7A20H 功能演示模块
  3. exs_sc7a20h - SC7A20H 扩展库

六、演示核心步骤

6.1 硬件准备

  1. 按照接线表将 SC7A20H 模块连接到核心板
  2. 确保电源连接正确,通过 TYPE-C USB 口供电
  3. 检查所有接线无误,避免短路

6.2 软件配置

main.lua 中加载对应的演示模块:

-- 加载 sc7a20h_demo.lua 演示模块
require "sc7a20h_demo"

6.3 软件烧录

  1. 使用 Luatools 选择最新内核固件
  2. 下载本项目所有脚本文件
  3. 将固件和脚本一起烧录到设备
  4. 烧录成功后设备自动重启后开始运行

6.4 功能测试

6.4.1 初始化与数据读取演示

  1. 设备启动后打印 "HELLO",随后自动进入 [1/4] 初始化与数据读取
  2. 观察日志输出,确认初始化成功
  3. 观察三轴加速度数据(X/Y/Z,单位 g)的连续读取

6.4.2 量程切换演示

  1. 自动进入 [2/4] 量程切换演示
  2. 观察 ±4g 宽范围量程下的数据
  3. 观察 ±2g 高精度量程下的数据

6.4.3 输出速率切换演示

  1. 自动进入 [3/4] 输出速率切换演示
  2. 依次观察 25Hz / 50Hz / 100Hz / 200Hz 下的数据读取
  3. 最终恢复为 100Hz

6.4.4 休眠与唤醒演示

  1. 自动进入 [4/4] 休眠与唤醒演示
  2. 观察 sleep() 进入待机模式
  3. 观察 wakeup() 唤醒后数据恢复

6.5 预期效果

  • 初始化与数据读取:SC7A20H 初始化成功,三轴加速度数据正常输出
  • 量程切换:量程切换后数据范围随之变化,灵敏度不同
  • 输出速率切换:不同速率下均能正常读取数据
  • 休眠与唤醒sleep 后进入低功耗,wakeup 后数据读取正常
  • 打印日志
[2026-07-23 14:13:19.999][000000000.246] I/user.main SC7A20H_Demo 001.999.000
[2026-07-23 14:13:20.005][000000000.262] D/user.exs_sc7a20h version -> 202607180900
[2026-07-23 14:13:20.014][000000000.264] I/user.sc7a20h_demo HELLO
[2026-07-23 14:13:20.506][000000001.265] I/user.sc7a20h_demo ===== [1/4] 初始化与数据读取 =====
[2026-07-23 14:13:20.521][000000001.274] I/user.exs_sc7a20h SC7A20H @ I2C 0x18
[2026-07-23 14:13:20.537][000000001.295] I/user.exs_sc7a20h REG读回 CTRL1=0x57 CTRL4=0x88 STATUS=0xFF INT1_CFG=0x00
[2026-07-23 14:13:20.548][000000001.302] I/user.exs_sc7a20h INT1 已注册, gpio=29
[2026-07-23 14:13:20.555][000000001.303] I/user.exs_sc7a20h 初始化完成 mode=I2C range=2g odr=100Hz mode=highres
[2026-07-23 14:13:20.564][000000001.303] I/user.sc7a20h_demo SC7A20H 初始化成功,版本: 202607180900
[2026-07-23 14:13:20.570][000000001.318] I/user.exs_sc7a20h CTRL1=0x57 CTRL2=0x01 CTRL3=0x40 CTRL4=0x88 CTRL5=0x08 CTRL6=0x00 STATUS=0xFF INT1_SRC=0x15 INT2_SRC=0x00 FIFO_SRC=0x20
[2026-07-23 14:13:20.757][000000001.521] I/user.sc7a20h_demo X=-0.660 Y=0.545 Z=0.551 g
[2026-07-23 14:13:22.264][000000003.024] I/user.sc7a20h_demo 1次读取: X=-0.660 Y=0.549 Z=0.555 g
[2026-07-23 14:13:22.774][000000003.527] I/user.sc7a20h_demo 2次读取: X=-0.666 Y=0.552 Z=0.552 g
[2026-07-23 14:13:23.269][000000004.030] I/user.sc7a20h_demo 3次读取: X=-0.661 Y=0.545 Z=0.551 g
[2026-07-23 14:13:23.273][000000004.030] I/user.sc7a20h_demo ---- [1/4] 完成 ----
[2026-07-23 14:13:23.769][000000004.531] I/user.sc7a20h_demo ===== [2/4] 量程切换演示 =====
[2026-07-23 14:13:23.773][000000004.531] I/user.sc7a20h_demo 切换量程为 4g
[2026-07-23 14:13:23.776][000000004.534] I/user.exs_sc7a20h 量程切换为 4g
[2026-07-23 14:13:24.080][000000004.836] I/user.sc7a20h_demo 4g 量程: X=-0.662 Y=0.545 Z=0.551 g
[2026-07-23 14:13:25.076][000000005.837] I/user.sc7a20h_demo 切换量程为 2g(高精度)
[2026-07-23 14:13:25.081][000000005.839] I/user.exs_sc7a20h 量程切换为 2g
[2026-07-23 14:13:25.387][000000006.142] I/user.sc7a20h_demo 2g 量程: X=-0.663 Y=0.546 Z=0.556 g
[2026-07-23 14:13:26.385][000000007.143] I/user.sc7a20h_demo ---- [2/4] 完成 ----
[2026-07-23 14:13:26.882][000000007.643] I/user.sc7a20h_demo ===== [3/4] 输出速率切换 =====
[2026-07-23 14:13:26.898][000000007.643] I/user.sc7a20h_demo 设置输出速率为 25Hz
[2026-07-23 14:13:26.913][000000007.646] I/user.exs_sc7a20h 输出速率切换为 25Hz
[2026-07-23 14:13:27.395][000000008.149] I/user.sc7a20h_demo 25Hz : X=-0.670 Y=0.551 Z=0.559 g
[2026-07-23 14:13:27.891][000000008.650] I/user.sc7a20h_demo 设置输出速率为 50Hz
[2026-07-23 14:13:27.903][000000008.653] I/user.exs_sc7a20h 输出速率切换为 50Hz
[2026-07-23 14:13:28.092][000000008.856] I/user.sc7a20h_demo int1: 朝向=down X=0.125 Y=0.323 Z=0.513 g
[2026-07-23 14:13:28.373][000000009.133] I/user.sc7a20h_demo int1: 朝向=back X=0.475 Y=0.291 Z=0.404 g
[2026-07-23 14:13:28.389][000000009.155] I/user.sc7a20h_demo 50Hz : X=0.208 Y=0.180 Z=0.390 g
[2026-07-23 14:13:28.656][000000009.410] I/user.sc7a20h_demo int1: 朝向=down X=0.075 Y=1.164 Z=1.317 g
[2026-07-23 14:13:28.876][000000009.628] I/user.sc7a20h_demo int1: 朝向=down X=0.281 Y=0.115 Z=0.308 g
[2026-07-23 14:13:28.891][000000009.656] I/user.sc7a20h_demo 设置输出速率为 100Hz
[2026-07-23 14:13:28.903][000000009.659] I/user.exs_sc7a20h 输出速率切换为 100Hz
[2026-07-23 14:13:28.937][000000009.693] I/user.sc7a20h_demo int1: 朝向=down X=-0.659 Y=1.035 Z=1.466 g
[2026-07-23 14:13:29.404][000000010.161] I/user.sc7a20h_demo 100Hz : X=-0.659 Y=0.357 Z=0.859 g
[2026-07-23 14:13:29.905][000000010.662] I/user.sc7a20h_demo 设置输出速率为 200Hz
[2026-07-23 14:13:29.921][000000010.665] I/user.exs_sc7a20h 输出速率切换为 200Hz
[2026-07-23 14:13:30.404][000000011.167] I/user.sc7a20h_demo 200Hz : X=-0.440 Y=0.722 Z=0.582 g
[2026-07-23 14:13:30.918][000000011.670] I/user.exs_sc7a20h 输出速率切换为 100Hz
[2026-07-23 14:13:30.933][000000011.670] I/user.sc7a20h_demo ---- [3/4] 完成 ----
[2026-07-23 14:13:31.416][000000012.171] I/user.sc7a20h_demo ===== [4/4] 休眠与唤醒演示 =====
[2026-07-23 14:13:31.432][000000012.171] I/user.sc7a20h_demo 进入 power-down 模式(低功耗)
[2026-07-23 14:13:31.444][000000012.174] I/user.exs_sc7a20h 已进入 power-down 模式
[2026-07-23 14:13:41.913][000000022.674] I/user.sc7a20h_demo  power-down 模式唤醒
[2026-07-23 14:13:41.932][000000022.676] I/user.exs_sc7a20h 已从 power-down 模式唤醒,ODR=100Hz
[2026-07-23 14:13:42.116][000000022.879] I/user.sc7a20h_demo 唤醒后数据: X=-0.614 Y=0.165 Z=0.852 g
[2026-07-23 14:13:42.132][000000022.879] I/user.sc7a20h_demo ---- [4/4] 完成 ----
[2026-07-23 14:13:42.613][000000023.380] I/user.sc7a20h_demo ===== [演示完毕] =====
[2026-07-23 14:13:42.628][000000023.386] I/user.exs_sc7a20h 传感器已关闭
[2026-07-23 14:13:42.640][000000023.386] I/user.sc7a20h_demo End

6.6 故障排除

  1. 传感器初始化失败

    • 检查 SC7A20H 接线是否正确(SCL、SDA、VCC、GND
    • 确认 GPIO 引脚配置与接线一致
    • 检查电源电压是否稳定(3.3V
    • 确认 exs_sc7a20h 扩展库已正常加载
  2. 读取数据始终为零

    • 检查传感器供电是否正常
    • 检查 I2C 地址是否正确(SA0=GND 时地址 0x18SA0=VCC 时地址 0x19
    • 确认接线无松动
  3. 量程切换无效果

    • 确认 set_range() 参数为 "2g"、"4g"、"8g" 或 "16g"
    • 切换后需等待传感器稳定再读取数据

6.7 扩展功能建议

exs_sc7a20h 更多接口的使用可以查看 exs_sc7a20h 扩展库说明