第1章:系统需求分析——功能需求与非功能需求

各位同学,咱们开始做车窗控制器。说实话,这个项目看着简单,但坑不少。我做了十几年嵌入式,见过太多人一上来就画原理图、写代码,结果做到一半发现需求没理清,推倒重来。嗯,今天咱们先把需求分析这块啃透。

1.1 功能需求:车窗到底要干什么?

车窗控制器,说白了就是让用户能控制玻璃升降。但你别小看这个功能,我当年在车厂做项目时,光升降逻辑就改了四版。咱们先拆解核心功能。

1.1.1 手动升降功能

这是最基础的功能。用户按住上升键,玻璃上升;松开,停止。下降同理。听起来简单?我在项目中遇到过一个问题:按键抖动导致玻璃一抖一抖的。后来加了20ms的消抖滤波才搞定。

  • 上升控制:按键按下→电机正转→玻璃上升
  • 下降控制:按键按下→电机反转→玻璃下降
  • 停止控制:按键松开或到达极限位置→电机停转
避坑指南:我曾经在量产前才发现,车窗在冬天结冰时阻力变大,电机堵转电流飙升。所以一定要加电流检测,超过阈值就停止,否则电机会烧。

1.1.2 一键升降功能

这个功能用户很喜欢。短按一下,玻璃自动升到底或降到底。你想想看,如果每次都要按住不放,多累啊。

实现逻辑其实不复杂:检测到按键按下时间超过300ms,就进入一键模式。但要注意,一键升降过程中,如果再次按下按键,要能立即停止。我习惯把这个叫「中断优先级」——用户操作永远最高。

// 伪代码示例:一键升降逻辑
if (key_press_time > 300ms) {
    auto_mode = TRUE;
    while (auto_mode) {
        motor_run(target_direction);
        if (key_press_again || position_limit || current_overload) {
            auto_mode = FALSE;
            motor_stop();
        }
    }
}

1.1.3 防夹功能

这是安全红线。国标GB 11552-2009规定,防夹力不能超过100N。我建议你设计时留余量,按80N做阈值。为什么?因为橡胶密封条老化后阻力会变大,你懂的。

防夹检测有两种主流方案:

  1. 电流检测法:电机电流与负载成正比。当电流超过阈值,判断为夹到物体。
  2. 霍尔传感器法:通过脉冲频率计算转速。转速骤降说明遇到阻力。
注意:电流检测法容易受温度影响。我曾在夏天测试时,电机温度升高导致电流基线漂移,防夹功能误触发。后来加了温度补偿算法才解决。

1.2 非功能需求:看不见但决定成败

功能需求是「做什么」,非功能需求是「做多好」。很多工程师只关注功能,结果产品出来要么反应慢半拍,要么几天就没电了。咱们一个个说。

1.2.1 实时性要求

车窗控制是实时系统。按键按下到电机响应,延迟不能超过50ms。为什么?人是有感知的,超过100ms就会觉得「卡」。我习惯用RTOS,任务优先级这样分配:

任务 优先级 最大响应时间
防夹检测 最高 10ms
按键扫描 20ms
电机控制 50ms
CAN通信 100ms

你看,防夹检测必须最快。因为夹到小孩手指,0.5秒就可能造成伤害。这不是开玩笑的。

1.2.2 可靠性要求

车窗控制器要能扛住10万次升降测试。我见过最离谱的案例:某供应商的继电器在第3万次就卡死了。后来我们全换成MOS管驱动,寿命直接翻倍。

可靠性设计要点:

  • 电源保护:加TVS管防浪涌,汽车电瓶电压波动范围是9V-16V
  • ESD防护:人体接触按键,静电可能达到15kV,接口必须加ESD二极管
  • 看门狗:MCU死机时,1秒内自动复位
核心原则:车窗控制器是安全件,失效模式分析(FMEA)必须做。我每次设计都会问自己:「如果这个电阻短路了,会怎样?」

1.2.3 功耗要求

汽车熄火后,车窗控制器进入休眠模式。静态电流不能超过100μA。为什么?因为车停一个月,电瓶不能亏电。我有个血的教训:某次设计忘了关掉LED指示灯,静态电流多了2mA,结果客户投诉「车停一周就打不着火」。

低功耗设计技巧:

  1. MCU进入Stop模式,用外部中断唤醒
  2. MOS管驱动电路,不工作时完全关断
  3. CAN收发器进入休眠模式,电流从30mA降到5μA

1.3 需求文档撰写:把话说清楚

需求文档是团队沟通的桥梁。我见过最烂的文档就一句话:「实现车窗升降功能」。这等于没说。好的需求文档要可测试、可验证。

我习惯用这个模板:

需求编号:REQ-WIN-001
需求名称:手动上升功能
描述:用户按下上升键时,车窗玻璃以100mm/s的速度匀速上升
验收标准:
  1. 按键按下后50ms内电机启动
  2. 玻璃上升速度误差不超过±10%
  3. 到达顶部后自动停止,堵转时间不超过200ms
优先级:P0(必须实现)

你看,每个需求都有明确的验收标准。测试工程师拿到文档就能写测试用例。我曾经因为需求模糊,导致开发和测试扯皮了两个月。从那以后,我要求所有需求必须带「验收标准」这一项。

个人习惯:我还会在文档里加一个「风险点」字段。比如「防夹功能在低温环境下可能灵敏度下降」,这样后续设计时大家心里有数。

1.4 本章小结

咱们这一章把车窗控制器的需求拆得很细了。功能上,升降、防夹、一键升降一个不能少。非功能上,实时性、可靠性、功耗是硬指标。最后,文档要写得像法律条文一样清晰。

下一章,咱们开始选型——MCU用什么?电机驱动芯片选哪家?到时候我会分享一些选型时的踩坑经历。嗯,今天就到这里,有问题随时问我。