英飞凌TC3xx_IOM

一、IOM概述

        IOM:Input Output Monitor;顾名思义,就是根据输入信号,通过和给定条件下控制信号进行监测和比较,或与参考信号比较,来检查系统外设输出和外部硬件的是否正确运行。

        这么说比较抽象,举个例子。

 图片来源:TC397_IOM_Training

        可以看到,GTM生成了两路PWM信号,其中一路接到IOM的REF中,另一路接到MON中,二者进行比较,一旦比较出错,发生了某种时间,IOM就会通知SMU,SMU触发相应的behavior进行处理。

        上述是一个比较简单的IOM实际应用场景。实际上只要是输出的都可以对其进行监控(思考,输入的可以吗?如果可以REF标准从哪里得到)。

二、IOM系统架构

        IOM由LAM(Logic Analyzer Modules)、FPCx(Filter & Prescaler Channels)、ECM(Event Combiner Module)等子模块构成,如下:

        信号输入首先经过FPC交由LAM进行处理,如果发生错误事件,通过ECM输出给SMU进行处理。

2.1 FPC

        通过上图,我们可以看到,FPC在IOM中存在16个通道可以用于参考或者监控输出给LAM,具体细节如下:

        首先我们要搞懂,iom_mon/iom_ref/Pn_IN之间的关系。

         相关寄存器:

  • FPCESR : FPC 上升下降沿状态寄存器
  • FPCCTRx(x = 0-15):FPC控制寄存器
  • FPCTIMx(x = 0-15):FPC计时器寄存器      

        iom_mon由Mon Input Select Mux选择,由寄存器FPCCTRx.ISM位决定输出哪一路信号到LAM。 

        iom_ref同理,由寄存器FPCCTRx.ISR位决定。

        Pn_IN从GPIO PAD得到,其上升\下降沿由寄存器FPCESR.REG\FEG记录,输入给FPC控制逻辑电路中;同时Pn_IN信号也会直接输入到FPC控制逻辑电路,同时,FPCCTR.CMP(FPCTIM.TIM比较的16bit阈值)和FPCTIM.TIM(16bit:FPC timer的值;注意写入TIM会使其变为reset value,通常为0)会进行比较,将比较结果输入给FPC控制逻辑电路。

        除此之外,位域FPCCTR.RTG决定了发生故障时计数器行为,如下:

        FPCCTR.MOD决定了FPC的操作模式,如下:

        可以看到,Pn_IN最后经过一系列操作输出的是一个SOL(电平信号,表征被检测信号的方向),可以输出给LAM。

2.2. LAM

        同样的,既然有16个FPC实例,那必然有16个LAM(Logic Analyzer Modules)模块。每个Modules根据FPC/Input所选的内容接收目标边沿信号。其结构如下:

        相关寄存器有:

  • LAMCFGx(x=0-15):LAM配置寄存器
  • LACEWSx(x=0-15):LAM事件窗口设置寄存器
  • LAMEWCx(x=0-15):LAM事件窗口计数状态寄存器 

        从FPC承接的MON信号经过LAMCFG.MCS选择使用哪一路FPC的输出信号,然后经由IVM异或得到是否要反转MON信号;REF信号同理;二者同时输入到一个选择器里,由EWS选择使用MON还是REF信号生成事件窗口,输出信号RUN;二者通过寄存器LAMCFG.EDS选择使用哪种边沿触发方式,输出信号CLR。

         RUN和CLR以及LAMEWS作为输入开始进行比较。

2.3 ECM

        ECM仅有一个实例,处理16个LAM的输出。

        需要配置的寄存器有:ECMCCFG、ECMSELR。        

        这里就不多做介绍了。

        用一张图可以表述这三个模块的关系:

         FPC做接收的滤波、输入到LAM做逻辑处理,最后把处理结果给ECM,由ECM生成alarm上报给SMU。

三、IOM配置要点

         需要注意的EXOR,主要是用于配置与GTM相连的输入信号各种组合。

         在配置时,首先就是要选择监控什么对象,例如CAN的TX\RX监控。这个与IOM相连的PIN在对应芯片型号的user manual里可以找到,例如TC39x-B

         如果要对CAN0进行监控,那么在FPC配置时,FPCCTRx.ISM = 2,

 

         FPCCTRx.ISR == 0x11(具体查芯片手册寄存器说明)。

        总的来说,IOM的原理还是比较简单,从软件角度使用起来不难。难点在于理解FPC中的几种滤波模式。回头再好好看看手册回来更新

        

猜你喜欢

转载自blog.csdn.net/djkeyzx/article/details/132016756