打印
[通用 MCU]

英飞凌TC3xx_IOM_深度分析

[复制链接]
522|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
tpgf|  楼主 | 2024-5-24 08:13 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
     在英飞凌TC3xx_IOM介绍中,对IOM做了概要介绍,下面对IOM FPC PIN脚的输入信号处理、LAM比较原理、ECM event输出原理做一个详细介绍。

1. FPC 操作模式
        每个FPC都可以被单独配置为如下操作模式:



        滞后的滤波模式,字面意思上理解,就是输出LAM的SOL信号不是理解输入的,是有一定滞后性的,而这个滞后时间要依据去抖滤波时间。我们来看FPC内部原理图:



        PIN脚传输的信号通常是需要去毛刺和滤波的,因此它作为输入送到Edge Detect检测电路中(注意SIN还可以直接送到控制逻辑,这个我们稍后讲)进行处理。既然是滤波,那么肯定就是可以分为时间窗口滤波和次数滤波,而在汽车MCU中,最终都是以时钟频率来驱动采样,因此还是按照次数滤波,但是最后以时间实现。

        以模式000为例,



在初始阶段,SIN和SOL均为低电平,根据硬件本身设计,此时FPCTIM.TIM不会有所动作;
当SIN首次出现高电平之后,为保证该信号的稳定,硬件需要对其进行滤波;此时硬件判断SIN和SOL方向相反,因此TIM自动+1;而当出现低电平时,SIN和SOL方向相同,硬件自动将TIM-1;如此反复,直到SIN电平稳定,TIM累加到超过FPCCTR.CMP所配置的阈值,说明该信号已经稳定了,此时TIM重置为0;SOL copy SIN的信号输出到LAM;
当SIN由稳定的高电平转为低电平时,此时也要用相同的滤波方式去低电平进行滤波,方式如2;
需要注意的是,在滤波期间,IOM本身还提供了寄存器FPCESR用于记录在滤波过程中出现的信号毛刺,例如在SIN出现高电平之后,首次出现了低电平,此时认为在信号整理过程中出现了毛刺,硬件自动将该状态记录在FPCESR.FEG;用户可以去轮询这个状态来查看信号的质量,所以这个状态必须由软件来清除。
        除了上述滤除毛刺的方法,还有一种当出现毛刺就需要重新滤波的方式,这种方式所需要的时间比上述方法更长,具体细节如下:



        需要 注意,当CMP配置为0时,SOL就直接等于SIN进行输出,表示使用者认为这个信号不需要滤波,直接可以通过bypass,如下红线所示:





1.2 Immediate Debounce Filter
                与delayed模式相反,immediate滤波方式是指当SIN和SOL方向不一致时,SOL立即将方向反转与SIN一致。如下是immediate debounce filter on Both Edges示意图:



         当SIN首次从低电平跳至高电平时,SOL立即Copy SOL作为输出;TIM随即根据高电平进行自增,可以发现,此种模式下,在滤波的阈值时间内对于毛刺TIM没有做减法,只会把状态记录在FPCESR中。当TIM超过CMP定义阈值后,如果此时SIN没有变化,SOL保持稳定,一旦有变化,SOL会输出相反方向信号。这种处理方式就很灵敏。

1.3 Mixed Filter
        英飞凌还将上述两种方式混合到一起,例如在上升沿采用delayed方式、下降沿采用immediate,如下:



1.4 Prescaler Mode
        除了上述方式,还有记录方波的方式,例如当方波触发几次后,SOL输出一个脉冲,如下:



2.LAM处理逻辑分析



LAM从FPC接收到的信号有MON、REF,首先通过MCS选择某一具体BIT的输入,然后经过IVM决定是否要反转,最终输入到MUX 1中;
通过设置EWS位,来选择使用MON还是REF作为事件窗口产生的输入源,选择后输入到MUX 2;在MUX 2使用RMSbit选择事件窗口是从上电就开始运行(free-running)还是从MON有MUX 1的输入来门控。
MUX 1还作为事件窗口的清除脉冲的输入源;EDS有两个功能,首先第一个功能就是通过选择上升沿还是下降沿来生成清除事件窗口cnt;
MON和REF还会用于生成事件输入给ECM;有两种方式,首先是MON直接输入到MUX4,还有一种就是MON和REF异或输入到MUX4,具体选用方式依赖于MOS的配置;同时MUX4输出到5,生成的脉冲是上升沿还是下降沿,依赖于EDS的第二功能:控制Event的生成。
事件窗口的激活最后会与 OR 5的脉冲相与,从而确认event生成。而事件窗口由三个要素定义,首先是RUN信号的产生(表示探测到错误事件),会导致内部LAMEWC开始计数,当数值超过LAMEWS.THR的值时,说明该错误事件已经确认。
        举个实例吧,现在想比较两个PWM的占空比(容忍度占空比5%),初始阶段P0为50%,P1为44%。我们把P0作为Ref、P1作为MON;MUX 1选择MON、MUX 2选择free-running,3both,4选择XOR,5选择both;初始P1为44%,理应产生event;我们来看如何生成的;当MON信号产生第一个高电平时,生成CLR脉冲,此时LAMEWS.THR清0,且由于是free-running,RUN信号一直拉高,LAMEWC.CNT开始计数;由于4是异或,因为初始阶段,二者相同,所以该信号一直是低电平;当PWM高电平来到了45%时,MON和REF不一样了,此时输入高电平,5产生一个脉冲,同时P1切到下降沿,CLR信号清除CNT,重新开始计数;由于之前设计得THR为5%,所以当CNT超过阈值时,说明MON信号还没有高电平来清这个CNT,且已经超过了REF所容忍的限度,因此产生了事件窗口Active,5和6与得到event的发生。
————————————————

                            版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/djkeyzx/article/details/132066491

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2028

主题

15904

帖子

14

粉丝