Files
qianbian/docs/architecture.md
T

49 lines
2.8 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.
# 软硬件架构总述(4.2寸墨水屏设备)
> 证据:docs/protocol.md、analysis/web/protocol-raw.md、analysis/apk/apk-analysis.md、docs/firmware-analysis.md(固件部分)
## 1. 系统全景
```
┌──────────────┐ BLE GATT ┌──────────────────────┐ SPI ┌─────────────┐
│ 上位机 │ ◄──────────► │ DA14585 (Cortex-M0) │ ──────► │ 4.2" 墨水屏 │
│ Web/App/CLI │ │ 固件 PP_da14585_4.2 │ │ 400x300 BWR │
└──────────────┘ └──────────────────────┘ └─────────────┘
```
- **SoC**:Dialog DA14585(ARM Cortex-M0,96KB SysRAM @0x07FC0000,外置 SPI Flash 存固件与图片)
- **屏**:4.2" 400×300 黑/白/红三色电子纸(1bpp 双平面:bw + red)
- **广播名**:`NRF-XXXXXX`(固件内模板字符串,地址后缀填充)
## 2. 软件生态(厂商)
| 组件 | 技术 | 云依赖 |
|---|---|---|
| Web 上位机 mspppclock.tech | Web Bluetooth JS | 激活 key_generator.php、固件 file_down.php(qicp.vip:8889) |
| Android App client-qbsg | Kotlin Compose Multiplatform + Rust native | qbsg.top 全家桶(激活/固件/字体/图库/社区/账号) |
| 固件 PP_da14585_4.2 | Dialog SDK(ble_app_profile 衍生) | 无(WiFi 天气功能经手机中继) |
两代协议并存:本设备固件属"平平"家族(Web 协议);APK 另支持"扫地/轻舞/时光"家族(帧格式分叉,见 apk-analysis §g)。
## 3. BLE 协议架构(本设备)
双通道:
- **EPD 通道**(service 13187b10…/char 4b646063…):图像块(`03|04`+`ff|00`+2B偏移+240B)、刷屏 `00xx/01`、小图结束 `AA`
- **RXTX 通道**(service 00001f10/char 00001f1f):全部控制命令(dd 时间、e1xx 模式、EF 族、FB/e901/EA0x、倒计时族、E2 提交)+ notify(设备 ID 应答)
- **SUOTA**(service 0000fef5 + 5 自定义 UUID):固件升级(protocol.md §9)
## 4. 图像数据流
图片 → 调整(亮度/对比度/饱和度)→ 抖动量化(6 算法 × 黑白/三色)→
1bpp MSB-first 行主序双平面(各 15000B)→ 240B 块 ×63×2 → `01` 刷新上屏。
## 5. 本项目交付物在架构中的位置
| 交付物 | 替代的厂商组件 | 去云效果 |
|---|---|---|
| `src/ppclock` CLI | Web 上位机 + App 全部设备功能 | 零网络(仅 BLE) |
| `tools/fw*.py` | file_down.php 固件分发 | 本地解析/修改/重打包 |
| `ppclock ota` | App 的 SUOTA 客户端 | 本地固件升级 |
详见 docs/protocol.md(协议规范)与 docs/firmware-analysis.md(固件 internals)。