exs_adxl34x - ADXL345/ADXL346 三轴加速度传感器扩展库#

示例

本文件为 ADXL345/ADXL346 三轴加速度传感器(ADI 出品)的 LuatOS 扩展库。

=== 对外接口 ===
1、exs_adxl34x.setup(model, config)  初始化 ADXL345/ADXL346
2、exs_adxl34x.get_data()            读取三轴加速度数据
3、exs_adxl34x.set_range(range)      切换量程
4、exs_adxl34x.set_odr(hz)           切换输出速率
5、exs_adxl34x.int_config(int, cfg)  配置中断事件
6、exs_adxl34x.get_int_source()      读取中断源
7、exs_adxl34x.sleep()               进入待机模式
8、exs_adxl34x.wakeup()              从待机模式唤醒
9、exs_adxl34x.close()               关闭传感器
10、exs_adxl34x.version()            获取版本号

=== 版本更新说明 ===
版本号:202607180900
1、更新时间:2026-07-18
2、更新内容:
        修复 close() 未注销 GPIO 中断,传感器关闭后 INT 引脚变化导致死机
        新增常量中文注释

版本号:202607170900
1、更新时间:2026-07-17
2、更新内容:
        i2c_bus_recovery 增加 SDA 释放检测,提前结束脉冲循环
        i2c_write/i2c_read 增加 I2C 总线卡死自动检测与恢复
        硬件 I2C 恢复后自动重新 i2c.setup()
        新增 exs_adxl34x.close() 接口,关闭传感器并释放资源
        新增 exs_adxl34x.sleep()/wakeup() 低功耗接口,替换 soft_reset()

版本号:202607141200
1、更新时间:2026-07-14
2、更新内容:
        初版,实现 ADXL345/ADXL346 驱动所有基础功能
        初始化接口使用 setup 命名,统一 TM16xx 系列命名规范
        支持软件 I2C 和硬件 I2C 两种通信模式(SPI 未适配)
        支持量程切换(±2g / ±4g / ±8g / ±16g)
        支持输出速率切换(0.78Hz~3200Hz)
        支持自动器件地址检测
        支持软件复位

=== 使用示例 ===
-- I2C 软件模式 + 中断
local function adxl34x_cb(data)
    log.info("exs_adxl34x", string.format("X=%.3f Y=%.3f Z=%.3f g", data.x, data.y, data.z))
end
local result = exs_adxl34x.setup("I2C", {
    scl = 31, sda = 30,
    range = "2g", odr = 100,
    int1 = {int_gpio = 10, data_ready = true, cb = adxl34x_cb},
})

exs_adxl34x.setup(model, config)#

初始化 ADXL345/ADXL346 加速度传感器

参数

传入值类型

解释

string

model 通信模式,当前仅支持 “I2C”(SPI 未适配)

return

boolean

返回值

例子


exs_adxl34x.get_data()#

读取三轴加速度数据

参数

返回值

返回值类型

解释

table

or nil {x, y, z} 单位 g

例子


exs_adxl34x.set_range(range)#

切换量程

参数

传入值类型

解释

string

range “2g”、”4g”、”8g”、”16g”

返回值

例子


exs_adxl34x.set_odr(hz)#

切换输出数据速率

参数

传入值类型

解释

number

hz 0.78~3200

返回值

例子


exs_adxl34x.int_config(int, config)#

配置中断事件

参数

传入值类型

解释

string

int “int1” 或 “int2”

table

config 事件配置

返回值

例子


exs_adxl34x.get_int_source()#

读取中断源

参数

返回值

返回值类型

解释

table

or nil 事件名称数组

例子


exs_adxl34x.sleep()#

进入待机模式(低功耗)

参数

返回值

例子


exs_adxl34x.wakeup()#

从待机模式唤醒

参数

返回值

例子


exs_adxl34x.close()#

关闭传感器

参数

返回值

例子


exs_adxl34x.version()#

获取版本号

参数

传入值类型

解释

return

string

返回值

例子