每帧内容表格注解

每帧1460字节,其中1440为有效数据
大端序:高位在左低位在右;小端序:高位在右低位在左

字节内容备注
0 - 17F7F数据头
2 - 3ID00 00
4 - 7Pmax00 00 00 00
8 - 11FCnt帧计数(1460字节为一帧),
两种帧分开独立计数
12 - 15PCnt00 00 00 00
16Type0x1e : 空气声场数据
0x1f : 非声传感器
17奇偶标志00
18 - 1457Data空气声场有效数据,
固定1440字节,前12帧。
三个通道(Channels),
每个通道是3个Byte(24位)
有符号整型小端序

加速度传感器和温湿度数据,
固定1280字节,第13帧。
三轴+(内置)温度数据,
共4个条目(4 Entries)
每个条目2个Byte(16位)
有符号整型,原始数据,大端序
新增温湿度数据 连接在后面,
皆为小端序float型,共8字节,
1280到1283为温度;
1284到1287为湿度。
1458 - 1459F6F6数据尾
  • 每40ms传输13帧为一次行为,分两种帧,前12帧为声音,第13帧为加速度传感器
  • 每次传输间隔不稳定,在40ms上浮动大约-3 ~ +3ms

更新内容

数据结构变动

加速度数据和温度数据不再分开,而是使用一个传感器同时采集,因此采样率相同;由于内部温度采集速度达不到与加速度同步,因此在输出时若未更新则输出的是上一次采集的旧数据,因此实际采样率相较于加速度传感器较慢。

使用新传感器后采用更高的采样率工作,采样率定义为4k(即每秒产生4k组数据,每组数据包括x y z 温度也就是t 四个点)

每个点数据等长,xyzt都是有符号16位的数据,按xyzt顺序排列,大端序

每帧数据长度变动

现在每第13帧(也就是专门存放加速度和温度的那一帧)中18到1457字节(共1440字节)中,存储1280字节的xyzt数据,每个点16位也就是2字节,每次采集4个点(xyzt),每秒采集4k,每第13帧是40ms的记录,经过计算 2 * 4 * 4000 * 0.04 = 1280字节

接收数据解析示例

使用实际接收HEX文件分析,高亮部分是实际有效字节16进制数据

字节序号字节内容备注
18-19FF 7F首位1,负数,-129,x轴
20-2100 AF首位0,正数,175,y轴
22-231C E4首位0,正数,7396,z轴
24-252B D0首位0,正数,11216,t温度
26-27FF 82首位1,负数,-126,x轴
28-2900 AE首位0,正数,174,y轴
30-311C F5首位0,正数,7413,z轴
32-332B D0首位0,正数,11216,t温度
.........
1278-12792B D0首位0,正数,11216,t温度
1280-128354 2D D3 41float型,26.39,环境温度
1284-1287DC 0C 64 42float型,57.01,环境湿度

与qt构建的解析测试软件输出结果一致

注意!温度有效数据只有12位,因此原始16进制数据 2B D0 实际有效数据为 02 BD,转换成10进制也就是701,我的解析测试程序没有忽略掉无效数据

原始数据转换

以下内容来自参考数据手册调用豆包进行分析

一、加速度数据(XYZ 轴)转换

ADXL380 的加速度输出为数字量(16 位或 12 位),需结合灵敏度(Sensitivity) 转换为物理单位(g 或 m/s²)。

1. 核心参数:灵敏度(Sensitivity)

灵敏度表示每 1 个数字输出单位(LSB)对应的加速度值(单位:g/LSB),与测量量程(±4g、±8g、±16g)相关。

  • 文档位置:在 “SPECIFICATIONS” 部分的Table 1(Specifications) 中,“SENSOR INPUT SENSITIVITY” 条目下,提到不同量程下的灵敏度特性。
  • 原理:灵敏度随量程变化,量程越大,每 LSB 代表的加速度值越大。例如,±4g 量程下,灵敏度更高(每 LSB 对应更小的 g 值)。

2. 转换步骤:

  1. 读取数字输出:从 XDATA_H、XDATA_L(X 轴)、YDATA_H、YDATA_L(Y 轴)、ZDATA_H、ZDATA_L(Z 轴)寄存器读取 16 位数据(低功耗模式下为 12 位,后 4 位为 0)。

3. 注意:

  • 数字输出为有符号数(补码),需考虑正负方向。
  • 具体灵敏度数值需结合量程从Table 1中查询(文档中未直接给出具体数值,需根据量程和输出分辨率推导)。

二、温度数据转换

温度数据通过内置温度传感器输出,需结合温度灵敏度(LSB/°C) 和零点偏移转换为摄氏度。

1. 核心参数:

  • 灵敏度:文档中 “TEMPERATURE SENSOR” 部分提到,默认模式(HIGH_GAIN_TEMP=0)下灵敏度为 10.2 LSB/°C;高增益模式(HIGH_GAIN_TEMP=1)下为 16.5 LSB/°C。
  • 零点偏移:25°C 时的输出为 550 LSB(默认模式)。

2. 文档位置:

  • 温度传感器的特性在 “THEORY OF OPERATION” 章节下的 “TEMPERATURE SENSOR” 部分(文档中对应章节提到温度传感器的输出特性、灵敏度及校准方法)。
  • 寄存器输出:温度数据从 TDATA_H(高 8 位)和 TDATA_L(低 4 位,高 4 位为温度数据)读取,组合为 12 位数据。

3. 转换公式:

总结

  • 加速度转换:依赖 “SPECIFICATIONS” 中的Table 1(灵敏度参数)和 “REGISTER MAP” 中的数据寄存器说明(读取 16 位输出)。
  • 温度转换:参考 “THEORY OF OPERATION” 中的 “TEMPERATURE SENSOR” 章节(灵敏度和零点参数)。

补充说明

程序中使用的量程为4g,对应文档中灵敏度为7500 LSB/g
温度有效12位,默认模式,也就是10.2 LSB/°C的灵敏度

与加速度伴随的温度数据来自加速度传感器内部,器件发热,因此计算出温度高于室温;02 BD的有效原始数据计算后得出温度为39.8°C.