AURIX系列GTM模块中的PWM部分

在AURIX中的GTM 模块是一种普遍时钟模块,它是作为一种可以随意配置的时钟模块。时钟基于AURIX中的CCU(时钟和时钟控制单元)提供时钟源,实际上所有的外设都是通过这个来提供时钟呢。
同时在GTM中也包含一个CMU(时钟管理单元)。
所以你会发现这里不管是使用GTM中哪些模块,比如TBU TIM TOM,实际上都离不开上面两个时钟管理单元的配置。、
这里主要写一下PWM相关的部分,也就是用TOM模块的内容。
1. CCU(Infrastructural components)
2. CMU(Infrastructural components)
3. TOM (for PWM)
首先是CCU部分,有各类接口获取对应的时钟
CCU 不同的外设时钟源放置来自同一个时钟源,通过对应CCUCONx寄存器来配置不同外设,由图可以看到CGU的总来源可以是osc或backup。
AURIX系列GTM模块中的PWM部分_第1张图片
而给GTM提供的源,通过查看PLLSTAT寄存器,看分频的情况。
AURIX系列GTM模块中的PWM部分_第2张图片
现在各个频率分频的默认值:
AURIX系列GTM模块中的PWM部分_第3张图片
而GTM 的时钟源就是来自SPB 频率
CMU provides several timers source.
AURIX系列GTM模块中的PWM部分_第4张图片
根据系统时钟TSYS_CLK得到GTM时钟频率:
TCMU_GCLK_EN=( CMU_GCLK_NUM/CMU_GCLK_DEN)*TSYS_CLK
然后设定生成时钟信号源,有0~7总共8个源可以设置不同的频率,最后要开启PWM,直接使能CMU即可,CLK_EN。
AURIX系列GTM模块中的PWM部分_第5张图片
每个CMU_CLK[x]设置的频率对应寄存器为GTM_CMU_CLK_x_CTRL (x=0-5)
6和7用的单独的两个
其中PWM的产生使用TOM这个模块
TOM提供单独的16个通道,每一个出单独的PWM,输出引脚TOM[i]_CH[x]_OUT,其中i={0,1},x={0~15}
AURIX系列GTM模块中的PWM部分_第6张图片
实际配置也是按上图从左至右的设置。
1、首先设置TGCx
关于TGC作为TOM的总控制器,主要有三个操作:
1、enable/disable channel
2、Output Enable
3、Force update
而这三个操作有三个触发源:
1、the host CPU (bit HOST_TRIG of register TOMi_TGCy_GLB_CTRL)
2、the TBU time stamp (signal TBU_TS0, TBU_TS1, TBU_TS2)
3、the internal trigger signal TRIG (bunch of trigger signals
TRIG_[x]) (内部触发信号包括每个通道的触发TRIG_CCU0,TIM外部触发TIM_EXT_CAPTURE)

所以对于开启或停止PWM,可以通过TGCx模块直接配置enable/disable channel,来控制开启/停止。
AURIX系列GTM模块中的PWM部分_第7张图片
2、Tom 通道
使用TOM之前,配置通道控制寄存器TOMi_CHx_CTRL
设置通道的时钟源——需要设置对应通道的CLK_SRC_SR位,
通过TRIGOUT位,设置那种触发源来更新pwm
AURIX系列GTM模块中的PWM部分_第8张图片
TOM有两种模式:
TOM continuous mode
CN0自动+1,到M0清零
AURIX系列GTM模块中的PWM部分_第9张图片
TOM One shot mode
一旦channel使能,CN0不+1
只有对CN0的写访问操作能触发CN0 加1
AURIX系列GTM模块中的PWM部分_第10张图片
更新PWM的值分两种:
1)同步更新PWM 占空比值的过程:
1、disable 执行寄存器更新,操作寄存器UPEN_CTRL
2、在SR0、SR1、CLK_SRC写入新值
3、enable 执行寄存器的更新
AURIX系列GTM模块中的PWM部分_第11张图片
可以看到每次SR的值改变,是在下一个周期体现。
2)异步更新PWM 占空比值
直接修改CM1的值,这样占空比的改变直接从当前周期开始
注意:在这种情况下使用时,需要完全disable同步更新机制。
AURIX系列GTM模块中的PWM部分_第12张图片
需要获取通道源时钟频率,调用如下函数:
IfxGtm_Tom_Ch_getClockFrequency(driver->gtm,driver->tom,driver->timerChannel);
GTM作为主的时间模块,可以触发包括AD在内的各个其他模块。类似下面的列表设置
AURIX系列GTM模块中的PWM部分_第13张图片
所以在要设定PWM什么时刻触发AD时,需要设置GTM中的ADCTRIG0OUT0寄存器,感觉类似上表制定用那个通道触发哪路AD。、
映射关系:
AD Groupx <————-> TOMx + channel x
就这样设置,就可以随意设置多路PWM,同时还有用TOM进行AD触发,从而满足电机等控制应用需求

你可能感兴趣的:(aurix,tom,tim,单片机,32位,c)