Files
stc32g128k/Docs/docs/implementation_plan.md

52 lines
3.0 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.

# 法语UI语言包与硬件SPI控制FCOB-2.7双模/单线幻彩RGB灯条实施计划书
## 目标说明
修改手环固件,以支持**纯法语UI显示**并将原本的单线Bit-bang驱动方式升级为通过**硬件SPI (引脚P2.3)** 控制 **FCOB-2.7800kHz-1100kHz** 单线自适应幻彩RGB灯条。
## 关键技术点
### 1. 硬件SPI引脚映射与冲突规避
* **引脚映射**:配置 `P_SW1 = 0x04` 将SPI引脚切换至第二组
* `P2.2` -> SS (不使用)
* `P2.3` -> MOSI (连接到 FCOB 灯条的 DIN 引脚)
* `P2.4` -> MISO (不使用)
* `P2.5` -> SCLK (原本连接到振动马达 MOTOR)
* **马达引脚防抖/防噪处理**
由于 `P2.5` 是 SCLK 且物理上连接了马达为避免发送SPI信号时 SCLK 高频信号导致马达异常颤动或常亮:
* 在每次通过SPI写入24位RGB数据时**临时将 P2.5 配置为高阻输入模式**(关闭引脚输出驱动能力),使 SCLK 信号无法物理输出到引脚。
* 数据发送完成后,**立即将 P2.5 恢复为推挽输出模式**,以确保正常的马达振动控制。
* 发送数据期间关闭总中断 `EA = 0`,以防时序被中断打断,发送完成后立即恢复 `EA = 1`
### 2. SPI传输速率计算与比特编码 (针对 FCOB-2.7 规格)
根据 FCOB-2.7 规格书:
* **T0H** (0码高电平): `0.295μs`
* **T0L** (0码低电平): `0.595μs`
* **T1H** (1码高电平): `0.595μs`
* **T1L** (1码低电平): `0.295μs`
* **Trst** (复位低电平): `> 80μs`
* 单码元周期: `0.295μs + 0.595μs = 0.89μs` (即 `1.12 MHz` 传输速率)。
**设计方案**
* **SPI时钟频率**:配置为 `SYSCLK / 8 = 3.0 MHz` (当系统时钟为24MHz时),对应的 SPI 每 bit 时间为 `333.3ns`
* **码元表示**:使用 **3位 SPI bit** 表示一个 FCOB 码元24位 RGB 数据对应 72位 SPI 数据,高阶位在前,正好等于 9个 字节):
* **0码**SPI 编码为二进制 `100`
* 高电平时间 = 1 bit * 333.3ns = `333ns` (与规格书 295ns 偏差仅 38ns)
* 低电平时间 = 2 bits * 333.3ns = `667ns` (与规格书 595ns 偏差仅 72ns)
* **1码**SPI 编码为二进制 `110`
* 高电平时间 = 2 bits * 333.3ns = `667ns` (与规格书 595ns 偏差仅 72ns)
* 低电平时间 = 1 bit * 333.3ns = `333ns` (与规格书 295ns 偏差仅 38ns)
* **复位信号**:禁用 SPI 模块,将 `P2.3` 强制拉低保持 `100μs`
### 3. 法语界面翻译
* 已完成所有界面显示内容的法语汉化工作,在 120x240 OLED 屏幕上自适应排版。
## 验证方案
### 自动化编译测试
* 使用 Keil C251 重新编译项目验证代码无报错0 Errors
### 硬件测试
* 烧录最新的 Hex 固件,利用串口命令进行 RGB 灯控制测试。
* 观察 FCOB-2.7 灯条是否正常亮起相应颜色(红、绿、蓝、黄、紫、青、白)。
* 确认在发送控制数据时马达没有产生误动作或噪鸣。