test_led_strip/doc/UID编码规则.md
zhangyisong 27ae21bbea Add UID management, LED strip debug, and MCUboot signing updates
- Add UID encoding/decoding with flash storage and CRC16 validation
- Add write UID (0x07) and LED strip color (0x08) protocol commands
- Add debug LED strip configuration option
- Switch MCUboot signing from RSA-2048 to ECDSA-P256
- Add SMP serial client for firmware upload over UART
- Add firmware version output on boot
- Update upgrade documentation with ECDSA key generation steps
2026-08-20 21:16:30 +08:00

157 lines
5.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 按摩头 UID 编码规则
## 1. 设备分类
| 类别 | 设备类型 | 说明 |
|---|---|---|
| 内置式 | 冲击波、光磁 | 由主板直接驱动,按摩头内无独立控制模块 |
| 外置式 | DMS、负压、捶打、揉捏、热敷、EMS 等 | 按摩头自带驱动模块,通过数据线与主板通信 |
> 通用设计所有按摩头均可插入设备的任意端口Port 0 或 Port 1端口号不影响 UID 编码。
---
## 2. UID 基本规则
每个按摩头拥有一个唯一的身份标识码UID用于识别设备类型和追溯生产信息。
### UID 组成(共 10 字节)
```
┌──────────┬──────────┬────────────┬─────────────────────┐
│ 设备类型 │ 产品代次 │ 生产年月 │ 唯一序列号 │
│ (1字节) │ (1字节) │ (4字节) │ (4字节) │
└──────────┴──────────┴────────────┴─────────────────────┘
字节: [0] [1] [2..6) [6..10)
```
### 字段说明
| 字段 | 说明 | 示例 |
|---|---|---|
| 设备类型 | 区分按摩头的产品系列 | 冲击波、光磁、外置按摩头等 |
| 产品代次 | 同一系列内的产品迭代版本(硬件版本号) | 第一代、第二代、第三代 |
| 生产年月 | 同一代次的不同批次修订版本 | 第一批、第二批 |
| 唯一序列号 | 生产时分配的唯一编号 | 用于追溯具体产品 |
---
## 3. 设备类型编码
### 冲击波系列(类型 0x01
| 代次 | 设备名称 | UID 示例 |
|---|---|---|
| 第一代 | 标准冲击波手柄 | 01-01-XXXX-1234 |
| 第二代 | 高能型冲击波手柄 | 01-02-XXXX-1235 |
### 光磁/热疗系列(类型 0x02
| 代次 | 设备名称 | UID 示例 |
|---|---|---|
| 第一代 | 光磁手柄 | 02-01-XXXX-XXXX |
| 第二代 | 热疗手柄 | 02-02-XXXX-XXXX |
| 第三代 | 增强型光磁手柄 | 02-03-XXXX-XXXX |
### 外置按摩头系列(类型 0x03
| 代次 | 设备名称 | UID 示例 |
|---|---|---|
| 第一代 | 捶打按摩头 | 03-01-XXXX-XXXX |
| 第一代 | 揉捏按摩头 | 03-02-XXXX-XXXX |
| 第一代 | 热敷按摩头 | 03-03-XXXX-XXXX |
| 第一代 | 电磁按摩头EMS | 03-04-XXXX-XXXX |
| 第一代 | DMS 深层肌肉刺激仪 | 03-05-XXXX-XXXX |
| 第一代 | 负压吸力按摩头 | 03-06-XXXX-XXXX |
| — | 通用型(未分类) | 03-F0-XXXX-XXXX |
| — | 未知设备(自动探测) | 03-FF-XXXX-XXXX |
---
## 4. 编码示例
### 示例 1冲击波第一代
- 设备类型冲击波系列0x01
- 产品代次第一代0x01
- 生产年月26082026 年 8 月BCD 风格)
- 序列号00001234
```
设备类型 │ 产品代次 │ 生产年月 │ 唯一序列号
─────────┼─────────┼──────────────┼────────────────────────
0x01 │ 0x01 │ 26 08 00 00 │ 0x00 0x00 0x12 0x34
```
UIDhex10 字节):`01 01 26 08 00 00 00 00 12 34`
### 示例 2光磁第三代
- 设备类型:光磁/热疗系列0x02
- 产品代次第三代0x03
- 生产年月2608
- 序列号00005678
```
设备类型 │ 产品代次 │ 生产年月 │ 唯一序列号
─────────┼─────────┼──────────────┼────────────────────────
0x02 │ 0x03 │ 26 08 00 00 │ 0x00 0x00 0x56 0x78
```
UIDhex10 字节):`02 03 26 08 00 00 00 00 56 78`
### 示例 3DMS 第一代
- 设备类型外置按摩头系列0x03
- 产品代次第一代0x01
- 生产年月2608
- 序列号AABBCCDD
```
设备类型 │ 产品代次 │ 生产年月 │ 唯一序列号
─────────┼─────────┼──────────────┼────────────────────────
0x03 │ 0x01 │ 26 08 00 00 │ 0xAA 0xBB 0xCC 0xDD
```
UIDhex10 字节):`03 01 26 08 00 00 AA BB CC DD`
> 注:生产年月 4 字节的具体子字段分配BCD/扩展信息)由生产系统定义,本工具按原始字节透传、透读。
---
## 5. 数据存储方式
UID 信息存储在设备 storage 分区0x7000064KB起始处记录格式
```
[magic "UID1" 4B][ver 1B][uid 10B][crc16 2B][pad 7B] = 24 字节
```
- 含 CRC16-Modbus 校验;记录损坏/未写入时自动回退 MCU 芯片 UID12 字节)。
- 写入命令:`0x07` 指令,见《通讯协议.md》。
---
## 6. 端口识别说明
按摩头插入端口后,设备通过以下方式识别:
- **UID**:识别按摩头的类型和追溯信息
- **端口号**:决定控制电路的分配(与 UID 无关)
按摩头可自由插入任意端口UID 不会因端口切换而改变。
---
## 7. 扩展预留
| 类型范围 | 用途 |
|---|---|
| 0x01 | 冲击波系列(已定义) |
| 0x02 | 光磁/热疗系列(已定义) |
| 0x03 | 外置按摩头系列(已定义) |
| 0x04 - 0x0F | 未来新增设备系列 |
| 0x10 - 0xEF | 客户定制设备 |
| 0xF0 - 0xFE | 工厂测试工具 |
| 0xFF | 无效/未编程(保留) |