ADXL314 的加速度数据格式和丢弃位问题解答如下:
? 1. 数据格式:
- 输出分辨率: 13 位(实际有效数据精度)。
- 物理存储: 每个轴(X、Y、Z)占用 2字节(16位) 的存储空间。
- 格式: 16位二进制补码(Two's Complement) 整数,数据采用左对齐(Left-Justified) 格式。
⚠️ 2. 丢弃的3位:
? 3. 数据转换方法:
- 步骤:
- 读取2字节原始数据(16位有符号整数,范围:
-32768 ~ +32767)。
- 右移3位:丢弃低3位(D2~D0),保留高13位(D15~D3)。
int16_t raw_value = (msb << 8) | lsb; // 合并为16位有符号整数
int16_t actual_value = raw_value >> 3; // 右移3位,保留符号位
- 示例:
- 原始值:
0b1101101101100000(16位,负数)
- 右移3位:
0b1101101101100(13位有效数据,值不变)
- 标度转换:
? 4. 为什么这样设计?
- 简化计算: 左对齐格式使得高13位直接对齐到符号位,避免了额外的掩码操作(仅需移位即可)。
- 兼容性: 16位存储兼容标准I2C/SPI接口,硬件可直接读取2字节。
? 5. 重要提醒:
- 符号位保护: 右移时确保编译器正确处理算术右移(保留符号位),避免逻辑右移错误。
- 数据手册参考: 详见ADXL314数据手册的 "Data Format" 和 "Register Map" 章节,通常寄存器地址为
0x32~0x37(X/Y/Z轴数据)。
总结:ADXL314的16位输出中,丢弃的是最低3位(Bit 2~Bit 0),有效数据通过右移3位快速提取为13位有符号整数,再根据量程转换为物理加速度值。 ✅
ADXL314 的加速度数据格式和丢弃位问题解答如下:
? 1. 数据格式:
- 输出分辨率: 13 位(实际有效数据精度)。
- 物理存储: 每个轴(X、Y、Z)占用 2字节(16位) 的存储空间。
- 格式: 16位二进制补码(Two's Complement) 整数,数据采用左对齐(Left-Justified) 格式。
⚠️ 2. 丢弃的3位:
? 3. 数据转换方法:
- 步骤:
- 读取2字节原始数据(16位有符号整数,范围:
-32768 ~ +32767)。
- 右移3位:丢弃低3位(D2~D0),保留高13位(D15~D3)。
int16_t raw_value = (msb << 8) | lsb; // 合并为16位有符号整数
int16_t actual_value = raw_value >> 3; // 右移3位,保留符号位
- 示例:
- 原始值:
0b1101101101100000(16位,负数)
- 右移3位:
0b1101101101100(13位有效数据,值不变)
- 标度转换:
? 4. 为什么这样设计?
- 简化计算: 左对齐格式使得高13位直接对齐到符号位,避免了额外的掩码操作(仅需移位即可)。
- 兼容性: 16位存储兼容标准I2C/SPI接口,硬件可直接读取2字节。
? 5. 重要提醒:
- 符号位保护: 右移时确保编译器正确处理算术右移(保留符号位),避免逻辑右移错误。
- 数据手册参考: 详见ADXL314数据手册的 "Data Format" 和 "Register Map" 章节,通常寄存器地址为
0x32~0x37(X/Y/Z轴数据)。
总结:ADXL314的16位输出中,丢弃的是最低3位(Bit 2~Bit 0),有效数据通过右移3位快速提取为13位有符号整数,再根据量程转换为物理加速度值。 ✅
举报