ZHCAF90 April 2025 ISO1228
ISO1228 支持 INx 和 WBx 数据路径上的内置数字低通滤波器。每个 OUTx 通道的滤波值可以通过写入 SPI 可编程 REGMAP 中指示的地址单独设置。或者,可以使用 F0/F1 器件引脚(引脚 23和 24)设置所有通道的通用滤波器。但是,寄存器中的滤波器设置具有更高的优先级。
滤波可应用于 OUTx 数据以及断线数据,但是 OUTx 的滤波器是可编程的,而断线滤波器值是固定的且始终开启。
如果在 SPI 寄存器中的任何一个或多个通道上启用了滤波 (MSB = 1),则寄存器滤波器设置优先。如果所有通道在寄存器中禁用了滤波器 (MSB=0),则 F0/F1 优先。如果 F0/F1 = 0/0,则全局禁用滤波器。
数字低通滤波器平均时间 (FILT) 决定输入的平均窗口。ISO1228 中的滤波器是低通滤波器,可以设置为九个允许的级别。
| F1 状态 | F0 状态 | 滤波器寄存器设置 | TFILT | 单位 |
|---|---|---|---|---|
| F1 = 低电平 | F0 = 低电平 | 0xxx | 0 | ns |
| F1 = 低电平 | F0 = 悬空 | 1000 | 1 | µs |
| F1 = 低电平 | F0 = 高电平 | 1001 | 8 | µs |
| F1 = 悬空 | F0 = 低电平 | 1010 | 200 | µs |
| F1 = 悬空 | F0 = 悬空 | 1011 | 1 | ms |
| F1 = 悬空 | F0 = 高电平 | 1100 | 2.5 | ms |
| F1 = 高电平 | F0 = 低电平 | 1101 | 10 | ms |
| F1 = 高电平 | F0 = 悬空 | 1110 | 30 | ms |
| F1 = 高电平 | F0 = 高电平 | 1111 | 100 | ms |
每个滤波器都是一个饱和的 3 位计数器,在内部时钟上运行时不会进行复位/清零。任何滤波器的时钟周期均为滤波器延迟值除以 8。
计数器可以对 OUTx 中跨数据包的每个位的导通持续时间(值= 1)或关断持续时间(值= 0)进行计数,并评估该持续时间是否超过相应的滤波器值。如果超过,则只能将新值存储到 REGMAP 中并传达给 MCU。但是,与典型的干扰滤波器不同,短于滤波器值的脉冲不会完全被抑制。相反,毛刺脉冲会衰减并汇总到信号中,产生一个低通响应。
运行滤波器的时钟周期可推导为 FILTER_TIME/8,例如,在上图中,FILTER_VALUE = 8us;例如,OUTx 的每个脉冲持续时间必须超过 8us 的最小持续时间才能传输到 MCU,因此 FILTER_CLK = 1MHz。
图 6-1 低通滤波器平均该 3 位计数器可以在每次计数器在滤波器输入处检测到值= 1 时递增,并在计数器检测到值= 0 时递减。如图所示,计数器已计数到 6,因为未滤波的 OUT1 在 6us 内为 1,接下来在 OUT1 的下降沿,计数器递减到 4,因为输入在 2us 内保持低电平。在此期间,滤波器输出保持前一值。此后,当 OUT1 上升为 1 并再保持高电平 4 个周期时,计数器达到值 = 8,且滤波器输出更新为值 = 1。