每帧内容表格注解
每帧1460字节,其中1440为有效数据
大端序:高位在左低位在右;小端序:高位在右低位在左
| 字节 | 内容 | 备注 |
| 0 - 1 | 7F7F | 数据头 |
| 2 - 3 | ID | 00 00 |
| 4 - 7 | Pmax | 00 00 00 00 |
| 8 - 11 | FCnt | 帧计数(1460字节为一帧), 两种帧分开独立计数 |
| 12 - 15 | PCnt | 00 00 00 00 |
| 16 | Type | 0x1e : 空气声场数据 0x1f : 非声传感器 |
| 17 | 奇偶标志 | 00 |
| 18 - 1457 | Data | 空气声场有效数据, 固定1440字节,前12帧。 三个通道(Channels), 每个通道是3个Byte(24位) 有符号整型,小端序; 加速度传感器和温湿度数据, 固定1280字节,第13帧。 三轴+(内置)温度数据, 共4个条目(4 Entries) 每个条目2个Byte(16位) 有符号整型,原始数据,大端序。 新增温湿度数据 连接在后面, 皆为小端序float型,共8字节, 1280到1283为温度; 1284到1287为湿度。 |
| 1458 - 1459 | F6F6 | 数据尾 |
- 每40ms传输13帧为一次行为,分两种帧,前12帧为声音,第13帧为加速度传感器
- 每次传输间隔不稳定,在40ms上浮动大约-3 ~ +3ms
更新内容
请注意看红字内容
此颜色代表新增内容
数据结构变动
加速度数据和温度数据不再分开,而是使用一个传感器同时采集,因此采样率相同;由于内部温度采集速度达不到与加速度同步,因此在输出时若未更新则输出的是上一次采集的旧数据,因此实际采样率相较于加速度传感器较慢。
使用新传感器后采用更高的采样率工作,采样率定义为4k(即每秒产生4k组数据,每组数据包括x y z 温度也就是t 四个点)
每个点数据等长,xyzt都是有符号16位的数据,按xyzt顺序排列,大端序。
新增AHT20温湿度传感器数据,小端序。
每帧数据长度变动
现在每第13帧(也就是专门存放加速度和温度的那一帧)中18到1457字节(共1440字节)中,存储1280字节的xyzt数据,每个点16位也就是2字节,每次采集4个点(xyzt),每秒采集4k,每第13帧是40ms的记录,经过计算 2 * 4 * 4000 * 0.04 = 1280字节
第13帧中1280到1287字节存放AHT20温湿度传感器数据,Float型,连接在加速度(和内部温度)数据后面,也就是1280字节到1287字节。两个Float数据,共8字节,温度在前(1280-1283),湿度在后,小端序。
接收数据解析示例
使用实际接收HEX文件分析,高亮部分是实际有效字节16进制数据

每帧内部有效字节计算注释,新增AHT20温湿度数据
| 字节序号 | 字节内容 | 备注 |
| 18-19 | FF 7F | 首位1,负数,-129,x轴 |
| 20-21 | 00 AF | 首位0,正数,175,y轴 |
| 22-23 | 1C E4 | 首位0,正数,7396,z轴 |
| 24-25 | 2B D0 | 首位0,正数,11216,t温度 |
| 26-27 | FF 82 | 首位1,负数,-126,x轴 |
| 28-29 | 00 AE | 首位0,正数,174,y轴 |
| 30-31 | 1C F5 | 首位0,正数,7413,z轴 |
| 32-33 | 2B D0 | 首位0,正数,11216,t温度 |
| ... | ... | ... |
| 1278-1279 | 2B D0 | 首位0,正数,11216,t温度 |
| 1280-1283 | 54 2D D3 41 | float型,26.39,环境温度 |
| 1284-1287 | DC 0C 64 42 | float型,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. 转换步骤:
- 读取数字输出:从 XDATA_H、XDATA_L(X 轴)、YDATA_H、YDATA_L(Y 轴)、ZDATA_H、ZDATA_L(Z 轴)寄存器读取 16 位数据(低功耗模式下为 12 位,后 4 位为 0)。
- 计算物理值:加速度(g)= 数字输出(LSB)/ 灵敏度(LSB/g)
若需转换为国际单位(m/s²),可进一步计算:加速度(m/s²)= 加速度(g)x 9.80665
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. 转换公式:
温度(°C)=((温度输出(LSB)− 25°C时的输出(550 LSB))/ 灵敏度(10.2 LSB/°C))+ 25
总结
- 加速度转换:依赖 “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.
