一、TOM模块是什么?
TOM------ TIME OUT Module 时间输出模块,不了解GTM的话,详见上面的系列文章;
一个TOM有TOM_CH0—TOM_CH15 一共 16个独立的通道
一路通道产生一个PWM信号
采用16位的计时器服务每个通道
拥有五个FX_CLK(固定时钟的时钟源)–分频比固定为1:16、1:256等
TOM的16个通道分为了两个Group,每组八个通道
两个全局控制寄存器TGC0和TGC1,TGC0为TOM_CH0到TOM_CH7的控制寄存器,TGC1为TOM_CH8到TOM_CH15的控制寄存器
作用:TGC0和TGC1主要实现三个功能
同时控制八个通道的
使能和关闭
输出使能和关闭
寄存器的强制更新
二、TGC Sub-unit-Global Channel Control(全局控制寄存器)
1、触发源
前三个单独的机制(通道的启用/禁用、输出启用和强制更新)中的每一个都可以由三个不同的触发器源驱动。三个触发源是:
1 、主机CPU(寄存器TOM_TGC[y]_GLB_CTRL的HOST_TRIG位)
2 、TBU时间戳(信号TBU_TS0, TBU_TS1, TBU_TS2-如果可用)
3 、内部触发信号TRIG(一串触发信号TRIG_[x],既可以是通道x的触发器TRIG_CCU0,也可以是前面通道x-1的触发器(即信号TRIG_[x-1]),也可以是外部触发分配的TIM通道t的TIM_EXT_CAPTURE(t)。
2、触发方法
第一种方法是通过主机CPU(寄存器TOM_TGC[y]_GLB_CTRL的HOST_TRIG位)的直接寄存器写访问来触发控制机制。
第二种方式由一个比较匹配触发器提供,该触发器代表来自模块TBU(由TBU_SEL位选择)和寄存器TOM_TGC[y]_ACT_TB位字段ACT_TB中定义的时间戳比较值。注意,当x=0,1,2时,将执行ACT_TB与所选TBU_TS[x]的有符号比较。
第三种可能是输入TRIG(一串触发信号TRIG_[x])来自TOM通道0到7 / 8到15。
3、注意要点
来自通道[x]的相应触发信号TRIG_[x]可以被寄存器TOM_TGC[y]_INT_TRIG.屏蔽.
要启用或禁用每个单独的TOM通道,请使用寄存器TOM_TGC[y]_ENDIS_CTRL和/或必须使用TOM_TGC[y]_ENDIS_STAT
寄存器TOM_TGC[y]_ENDIS_STAT直接控制信号ENDIS。可以对这个寄存器进行写访问。
如果三个触发条件之一匹配。寄存器TOM_TGC[y]_ENDIS_CTRL是一个覆盖寄存器TOM_TGC[y]_ENDIS_STAT值的影子寄存器。
4、TGC具体结构
可以使用寄存器TOM_TGC[y]_OUTEN_CTRL和TOM_TGC[y]_OUTEN_STAT来控制单个TOM通道的输出。
寄存器TOM_TGC[y]_OUTEN_STAT直接控制信号OUTEN。可以对这个寄存器进行写访问。
如果三个触发条件之一匹配。寄存器TOM_TGC[y]_OUTEN_CTRL是一个覆盖寄存器TOM_TGC[y]_OUTEN_STAT值的影子寄存器。
如果TOM通道被寄存器TOM_TGC[y]_OUTEN_STAT禁用,那么TOM_CH[x]_OUT处通道输出的实际值由通道控制寄存器(TOM_CH[x]_CTRL)中定义的信号电平位(SL)定义;如果使能输出,TOM_CH[x]_OUT的输出取决于触发器的SOUR值
寄存器TOM_TGC[y]_FUPD_CTRL定义了 如果触发信号CTRL_TRIG被触发,哪个TOM通道会接收FORCE_UPDATE事件。
NOTE : 强制更新请求被存储并同步执行到所选的CMU_FXCLK。
寄存器位UPEN_CTRL[z]定义了TOM为其传送工作寄存器CM0、CM1和的更新CLK_SRC通过对应的影子寄存器SR0、SR1和CLK_SRC_SR启用。如果启用更新,寄存器CM0、CM1和CLK_SRC将在计数器寄存器CN0重置时更新
一个例外是SR0_TRIG=1的配置,它启用SR0定义的触发器生成。那么CM0就不会被SR0更新
————————————————
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/qq_44688936/article/details/128482029
|