Files
stc32g128k/Docs/docs/implementation_plan.md

52 lines
3.0 KiB
Markdown
Raw Permalink Normal View History

# 法语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 灯条是否正常亮起相应颜色(红、绿、蓝、黄、紫、青、白)。
* 确认在发送控制数据时马达没有产生误动作或噪鸣。