Files
stc32g128k/Docs/docs/implementation_plan.md

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