查看: 5464|回复: 9

图解FlexTimer模块配置 助您电机控制开发

[复制链接]
  • TA的每日心情
    开心
    2025-7-11 08:53
  • 签到天数: 301 天

    连续签到: 2 天

    [LV.8]以坛为家I

    3877

    主题

    7482

    帖子

    0

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    39315
    最后登录
    2025-7-23
    发表于 2021-6-17 09:59:56 | 显示全部楼层 |阅读模式
    在电机控制相关项目开发中,经常会碰到这样的问题,客户工程师是电机控制专家,他们对驱动电机的PWM波形时序有严格的要求,但对芯片配置不熟悉,很难快速配置FlexTimer(FTM) 等PWM相关模块产生想要的PWM波形。在经历一次暴风骤雨式的客户支持之后,小编决定化身灵魂手画师,从电机控制开发者角度出发,讲解FlexTimer的配置过程。


    好了,一切起源于客户工程师说:
    我想要 ----


    六路中心对齐的PWM,其中每两路PWM互补, 8kHz频率,死区1.5us,负逻辑驱动,硬件fault故障保护。
    如果把抽象的客户需求描绘成形象的图像,就会是这样的画面:
    11.png


    看起来挺复杂,但是别慌,通过下面的五个步骤,按图索骥就可以快速实现客户的要求。
    12.png
    步骤一:PWM初始原型
    PWM Initialization


    万事开头难,第一步PWM初始原型的配置就可以完成整个配置工作的一半,步骤一就是配置出第一个通道的PWM原型,针对客户的需求,这里我们使用FlexTimer Center-aligned模式,即通过配置,FlexTimer模块可以直接产生中心对齐的PWM信号,其基本原理如下图所示。
    13.png
    具体配置如下图所示。
    8kHz的PWM频率由FTM0_MOD寄存器控制。中心对齐的PWM频率计算公式如下:
    FTM0_MOD = FTM functional clock frequency / expected PWM frequency / 2
    本例中,FlexTimer模块的输入时钟频率 等于MCU的core clock 75MHz,由此FTM0_MOD配置为4688数值,即可产生8KHz PWM频率。
    中心对齐的PWM波形由FTM channel (n)产生。如上图所示,FTM channel (n) CnV寄存器控制高电平的时间。按照如下配置公式即可产生中心对其的PWM波形。公式的输入参数就是客户要求的占空比 (即PWM高电平的长度)。
    FTM channel (n) CnV = FTM0_MOD * 占空比
    举个例子:
    要求产生占空比为60%的中心对齐PWM波形,频率为8kHz,则:
    由前面计算 FTM0_MOD = 4688对应8KHz频率;
    FTM channel (n) CnV = FTM0_MOD *60%= 2813
    小结一下,步骤一 PWM初始原型关键配置包括:
    FTM0_SC[CPWMS] = 1
    FTM0_C0SC[ELSB:ELSA] = 1:0 //clear PWM on match CnV
    FTM0_C0V = 2813

    步骤二:产生互补波形


    通过步骤一,产生了PWM第一个通道的中心对齐的波形,顺利完成了整个配置工作的一半,接下来的步骤二,就是产生PWM第二个通道的PWM,配置相对简单,通过使能FTM互补功能实现,其关键配置如下


    FTM0_COMBINE[COMP0] = 1
    FTM0_C1SC[ELSB:ELSA] = 1:0 //允许FTM channel1 输出互补PWM


    具体图形如下图所示。
    14.png

    步骤三:死区插入


    死区就是在电机控制上半桥的开关管关断后,延迟一段时间再打开下半桥,反之亦然,再下半桥关断后,延迟一段时间再打开上半桥,从而避免上下半桥同时导通短路,造成开关管功率器件的烧毁。这段延迟时间就是死区,一般是微秒级别,典型客户要求1.5微秒的死区时间。实现1.5微秒的死区计算公式如下,


    FTM0_DEADTIME[DTVAL] = FTM functional clock frequency * 死区时间 / 死区时间分频
    = 75MHz * 1.5us/4 = 26 = 0x1A
    FTM支持自动死区插入功能,其关键配置如下
    FTM0_COMBINE[DTEN0] = 1 //使能死区插入功能
    FTM0_DEADTIME[DTPS] = 2 //死区时间分频系数为/4
    FTM0_DEADTIME[DTVAL] = 0x1A //死区时间数值


    完成步骤三 死区插入之后,两路互补PWM的波形变化如下:
    15.png

    步骤四:极性控制


    客户要求的是负逻辑驱动,意味着电机驱动开关管是低电平导通,高电平关断。正好跟之前步骤产生的PWM信号极性相反,可以通过步骤三 极性控制,非常简单控制PWM的极性,其关键配置如下:


    FTM0_POL[POL0] = 1 //本通道PWM极性为active low
    FTM0_POL[POL1] = 1 //本通道PWM极性为active low


    完成步骤三 极性控制后的PWM波形如下,值得注意的是死区控制也自动符合负逻辑驱动的极性,即下半桥 PWM信号变1关断后,上半桥的PWM信号延迟一段时间再变0导通,反之亦然,上半桥 PWM信号变1关断后,下半桥的PWM信号延迟一段时间再变0导通。
    16.png
    步骤五:故障保护


    电机控制需要硬件支持故障保护,在出现任何过流过压等故障后,硬件立即关断上下桥臂,并进入故障保护中断中,进行应用软件处理。在故障消失后,一般客户要求是手动清除故障标志来恢复PWM输出。步骤五 故障保护的关键配置如下


    Fault input select PTA4 -> FTM0 Fault3 input //使能故障输入引脚的pin mux


    FTM0_FLTCTRL[FAULT3EN] = 1 //故障信号的输入引脚编号
    FTM0_FLTPOL[FTL3POL] = 1 //故障的极性,信号低电平表明有故障
    //Fault control enable
    FTM0_MODE[FAULTM] = 0x2 //配置故障消失后手动恢复PWM
    FTM0_COMBINE[FAULTEN0] = 1 //使能故障保护功能


    故障保护的示意图如下
    17.png

    通过以上五个步骤,我们迅速配置好了FTM模块,成功生成了符合客户要求的两路互补的中心对齐PWM波形,并实现了相应的故障保护功能。在典型电机应用中,需要六路PWM,每两路PWM组成一对,控制电机驱动电路中的上下开关管,在生成一组两路PWM信号之后,依葫芦画瓢,按照上述五个步骤,即可实现所有六路的PWM波形。

    qiandao qiandao
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2025-6-10 23:03
  • 签到天数: 1502 天

    连续签到: 1 天

    [LV.Master]伴坛终老

    97

    主题

    4688

    帖子

    12

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    10080
    最后登录
    2025-7-2
    发表于 2021-6-17 10:24:47 | 显示全部楼层
    虽然是自动化专业的学生,但对于电机控制一直没有染指。现在还觉得有些遗憾了。
    看着电机或快或慢、或刚烈或轻柔,也挺有成就感的。
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    擦汗
    2016-12-2 08:40
  • 签到天数: 3 天

    连续签到: 1 天

    [LV.2]偶尔看看I

    103

    主题

    868

    帖子

    7

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    4336
    最后登录
    2025-6-13
    发表于 2021-6-17 10:38:35 | 显示全部楼层
    jobszheng5 发表于 2021-6-17 10:24
    虽然是自动化专业的学生,但对于电机控制一直没有染指。现在还觉得有些遗憾了。
    看着电机或快或慢、或刚烈 ...

    那是按摩椅吧
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2025-7-11 08:53
  • 签到天数: 301 天

    连续签到: 2 天

    [LV.8]以坛为家I

    3877

    主题

    7482

    帖子

    0

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    39315
    最后登录
    2025-7-23
     楼主| 发表于 2021-6-17 10:41:46 | 显示全部楼层

    哈哈,真实
    qiandao qiandao
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2025-6-10 23:03
  • 签到天数: 1502 天

    连续签到: 1 天

    [LV.Master]伴坛终老

    97

    主题

    4688

    帖子

    12

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    10080
    最后登录
    2025-7-2
    发表于 2021-6-17 14:48:06 | 显示全部楼层


    算你们狠~~
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2025-6-10 23:03
  • 签到天数: 1502 天

    连续签到: 1 天

    [LV.Master]伴坛终老

    97

    主题

    4688

    帖子

    12

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    10080
    最后登录
    2025-7-2
    发表于 2021-6-17 14:48:39 | 显示全部楼层

    我那是感叹一下。
    学术,学术~~
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    2025-5-29 09:38
  • 签到天数: 632 天

    连续签到: 1 天

    [LV.9]以坛为家II

    94

    主题

    1639

    帖子

    2

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    4470

    热心会员

    最后登录
    2025-6-10
    发表于 2021-6-17 15:21:39 | 显示全部楼层
    不错啊 这篇文章 多发些应用的例子啊 我对电机很感兴趣~有没有完整的例子?
    哎...今天够累的,签到来了~
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2025-7-11 08:53
  • 签到天数: 301 天

    连续签到: 2 天

    [LV.8]以坛为家I

    3877

    主题

    7482

    帖子

    0

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    39315
    最后登录
    2025-7-23
     楼主| 发表于 2021-6-17 16:12:30 | 显示全部楼层
    胤幻1988 发表于 2021-6-17 15:21
    不错啊 这篇文章 多发些应用的例子啊 我对电机很感兴趣~有没有完整的例子? ...

    我给你问问
    qiandao qiandao
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    0

    主题

    1

    帖子

    0

    新手上路

    Rank: 1

    积分
    40
    最后登录
    2025-5-26
    发表于 2024-7-23 09:17:11 | 显示全部楼层
    不错,nice
    回复

    使用道具 举报

  • TA的每日心情
    开心
    4 小时前
  • 签到天数: 338 天

    连续签到: 3 天

    [LV.8]以坛为家I

    12

    主题

    1102

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    2530
    最后登录
    2025-7-23
    发表于 2024-10-16 16:19:13 | 显示全部楼层
    非常好的文章,点赞了。
    哎...今天够累的,签到来了~
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-7-23 14:19 , Processed in 0.109772 second(s), 31 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表