refactor(protocol): 板面几何与 CoP 计算统一为 cm 单位,force 改 int16

compute_cop 直接输出 int16_t (cm/kg),消除打包时的浮点转换;
BOARD_HALF_WIDTH/LENGTH 从 mm 改 cm,传感器坐标表同步更新。
This commit is contained in:
2026-05-12 16:20:47 +08:00
parent f0072c3bd0
commit ffafbc4c6a
3 changed files with 36 additions and 36 deletions
+8 -8
View File
@@ -51,7 +51,7 @@ CoP 帧固定 11 字节,结构如下:
| `3` | `flags` | `uint8` | 见下表 | 状态标志位 |
| `4-5` | `cop_x` | `int16 LE` | - | 压力中心 X 坐标 (cm) |
| `6-7` | `cop_y` | `int16 LE` | - | 压力中心 Y 坐标 (cm) |
| `8-9` | `force` | `uint16 LE` | - | 总重量 (kg) |
| `8-9` | `force` | `int16 LE` | - | 总重量 (kg) |
| `10` | `crc` | `uint8` | - | CRC-8/MAXIM 校验 |
#### flags 位定义
@@ -71,14 +71,14 @@ CoP 帧固定 11 字节,结构如下:
S3 (BL) -------- S2 (BR)
```
传感器坐标(单位:mm,板面中心为原点):
传感器坐标(单位:cm,板面中心为原点):
| 传感器 | 位置 | X | Y |
|--------|------|---|---|
| S1 | 右前 (FR) | `+200` | `+200` |
| S2 | 右后 (BR) | `+200` | `-200` |
| S3 | 左后 (BL) | `-200` | `-200` |
| S4 | 左前 (FL) | `-200` | `+200` |
| S1 | 右前 (FR) | `+10` | `+10` |
| S2 | 右后 (BR) | `+10` | `-10` |
| S3 | 左后 (BL) | `-10` | `-10` |
| S4 | 左前 (FL) | `-10` | `+10` |
计算公式:
@@ -89,7 +89,7 @@ CoP_X = (F0 * x0 + F1 * x1 + F2 * x2 + F3 * x3) / F_total
CoP_Y = (F0 * y0 + F1 * y1 + F2 * y2 + F3 * y3) / F_total
```
`F_total < COP_MIN_FORCE_THRESHOLD` 时,CoP 坐标无意义,`flags.bit0 = 0``cop_x``cop_y``0.0f`
`F_total < COP_MIN_FORCE_THRESHOLD` 时,CoP 坐标无意义,`flags.bit0 = 0``cop_x``cop_y``0`
#### 示例
@@ -199,6 +199,6 @@ AA 55 20 05 XX
- CoP 帧固定 11 字节,可在最小 ATT MTU 23(NUS 有效负载 20 字节)下传输。
- 50 Hz CoP 上行流隐式充当平衡板到基站的活性检测,因此心跳仅为下行。
- 传感器通道到物理位置的映射:MUX `{0x01, 0x23, 0x45, 0x67}` → FL/FR/BR/BL。
- `BOARD_HALF_WIDTH_MM = 200``BOARD_HALF_LENGTH_MM = 200`(后续可能调整)。
- `BOARD_HALF_WIDTH_CM = 10``BOARD_HALF_LENGTH_CM = 10`(后续可能调整)。
- `ADC_TO_FORCE_SCALE` 当前为占位值 `1.0f`,待 10 kg 砝码标定后修正。
- ARM Cortex-M33 为小端架构,`float32` 在 packed struct 中天然符合 Little Endian 要求。