# 法语UI语言包与硬件SPI控制FCOB-2.7双模/单线幻彩RGB灯条实施计划书 ## 目标说明 修改手环固件,以支持**纯法语UI显示**,并将原本的单线Bit-bang驱动方式升级为通过**硬件SPI (引脚P2.3)** 控制 **FCOB-2.7(800kHz-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 灯条是否正常亮起相应颜色(红、绿、蓝、黄、紫、青、白)。 * 确认在发送控制数据时马达没有产生误动作或噪鸣。