Alila

A.02.05—功能定义—滤波

0
阅读(1447)
  滤波,即debounce,主要为了避免误动作,确认输入信号确实是一个真正的信号而采用,这里的“输入信号”有可能是硬件输入信号也有可能是一个软件信号。
  对于滤波,在很多地方均要用到,但是整车厂不一定需在每处都定义详细,因为有时候一个笼统的系统性要求已经包含了对滤波的要求。比如“要求用户按下开关后,模块输出电压信号的时间延时不得大于100ms”,这个需求描述中虽然没提到具体的滤波要求,但它实际上已经包含了滤波的过程了。按一般情况来说,每个开关信号均需进行滤波,只是有些车厂要求的滤波策略是这样的,有的是那样的,如对于车窗开关有车厂要求采用10ms的周期进行3次滤波,有的要求采用5ms的周期进行5次,有可能存在这些细节上的差异。
  理论上而言滤波次数越多越可靠,但对于用户体验而言,在一定范围内滤波次数越多时间越长,同等条件下延时越久,有可能导致用户抱怨,所以选取一个合理的值是必要的。而一般情况下对常用开关的滤波次数3次或以上均可,时间不超过10ms/次,特殊情况下可以特殊定义,如对某些重要按钮采用2.5ms、4次的滤波策略。
  对这块的要求也分列3点。
  第一为输入软件滤波。即上面已经举过例,输入给模块的信号需要进行什么样的滤波,整车厂为了控制用户体验,往往会定义这块的滤波要求。
  第二为输入硬件滤波。即在某些情况下,输入端口会有一些干扰信号进来,为避免软件采到很短的干扰信号,一般均在前面加一层防干扰的硬件。好比这个定义:本端口为一个中断唤醒口,对于时间长度小于1ms的脉冲,要求模块不会被唤醒。因它是中断口,为避免误唤醒模块,就必要定义要求避开的干扰长度。

  第三为输出滤波。举例:1)在连续3次找不到钥匙时,记录##DTC。2)在连续3次收到“电池电量低时的总线信号时“,发送”##电池电量低“的信号给仪表。类似的这些应用范围十分广,什么时候需要使用到是做定义的人必须考虑的。

(2015-1-12 发表于本人QQ空间)