forked from EmbeddedTeam/app_photomagnetic
- 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
5.4 KiB
5.4 KiB
按摩头 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)
- 生产年月:2608(2026 年 8 月,BCD 风格)
- 序列号:00001234
设备类型 │ 产品代次 │ 生产年月 │ 唯一序列号
─────────┼─────────┼──────────────┼────────────────────────
0x01 │ 0x01 │ 26 08 00 00 │ 0x00 0x00 0x12 0x34
UID(hex,10 字节):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
UID(hex,10 字节):02 03 26 08 00 00 00 00 56 78
示例 3:DMS 第一代
- 设备类型:外置按摩头系列(0x03)
- 产品代次:第一代(0x01)
- 生产年月:2608
- 序列号:AABBCCDD
设备类型 │ 产品代次 │ 生产年月 │ 唯一序列号
─────────┼─────────┼──────────────┼────────────────────────
0x03 │ 0x01 │ 26 08 00 00 │ 0xAA 0xBB 0xCC 0xDD
UID(hex,10 字节):03 01 26 08 00 00 AA BB CC DD
注:生产年月 4 字节的具体子字段分配(BCD/扩展信息)由生产系统定义,本工具按原始字节透传、透读。
5. 数据存储方式
UID 信息存储在设备 storage 分区(0x70000,64KB)起始处,记录格式:
[magic "UID1" 4B][ver 1B][uid 10B][crc16 2B][pad 7B] = 24 字节
- 含 CRC16-Modbus 校验;记录损坏/未写入时自动回退 MCU 芯片 UID(12 字节)。
- 写入命令:
0x07指令,见《通讯协议.md》。
6. 端口识别说明
按摩头插入端口后,设备通过以下方式识别:
- UID:识别按摩头的类型和追溯信息
- 端口号:决定控制电路的分配(与 UID 无关)
按摩头可自由插入任意端口,UID 不会因端口切换而改变。
7. 扩展预留
| 类型范围 | 用途 |
|---|---|
| 0x01 | 冲击波系列(已定义) |
| 0x02 | 光磁/热疗系列(已定义) |
| 0x03 | 外置按摩头系列(已定义) |
| 0x04 - 0x0F | 未来新增设备系列 |
| 0x10 - 0xEF | 客户定制设备 |
| 0xF0 - 0xFE | 工厂测试工具 |
| 0xFF | 无效/未编程(保留) |