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