目录

  • 10.S32K11X FTM-PWM输出实验
    • 1、芯片特定的FTM信息
      • 1.1、不同型号芯片对应的FTM参数
      • 1.2、FTM中断
      • 1.3、FTM简介
      • 1.4、FTM特征
      • 1.5、FTM模式选择
      • 1.6、寄存器
        • 1.6.1、模式寄存器-MODE
        • 1.6.2、状态控制寄存器—SC
        • 1.6.3、链接通道的功能-COMBINE
        • 16.4、通道极性-POL
        • 1.6.6、模块-MOD
        • 1.6.7、设置通道初始占空比-CONTROLS[0]
    • 2、实验流程
    • 3、实验程序编写
    • 4、实验结果
    • 5、资源获取

10.S32K11X FTM-PWM输出实验

1、芯片特定的FTM信息

1.1、不同型号芯片对应的FTM参数


所有FTM都具有以下功能:

全局时间基础;

过滤器在输入通道上;

故障通道上的过滤器;

半循环重载;

通道对上的单独截止时间。

1.2、FTM中断

flexTimer有多个中断源。可以看参考手册中随附的DMA_Interrupt_mapping.xlsm。当一个FTM中断发生时,读取FTM状态寄存器(FMS、SC和状态),以确定确切的中断源。

1.3、FTM简介

FlexTimer模块(FTM)是一个2到8通道定时器,支持输入捕获、输出比较和生成PWM信号,以控制电机和电源管理应用程序。FTM时间引用是一个16位计数器,可用作无签名或有签名计数器。

1.4、FTM特征

FTM源时钟是可选择的;

可除以1、2、4、8、16、32、64或128;

拥有16位计数器;

是一个自由运行的计数器或一个带有初始值和最终值的计数器;

计数可以向上也可以向下;

每个通道都可以配置为输入捕获、输出比较或边缘对齐的PWM模式;

在输出比较模式下,输出信号可以设置、清除或切换匹配;

所有的通道都可以被配置为中心对齐的PWM模式;

每对信道可以组合产生一个PWM信号,并独立控制PWM信号的两边;

FTM信道可以作为等输出对、互补输出对或独立输出的独立信道运行;

每个互补对都有死时间插入;

生成匹配触发器;

PWM输出的软件控制;

全局故障控制最多有4个故障输入;

1.5、FTM模式选择

当芯片处于活动调试模式时,FTM会暂时暂停所有计数,直到芯片恢复到正常的用户操作模式。在停止模式下,所有FTM输入时钟都被停止,因此FTM被有效地禁用,直到时钟恢复。在等待模式下,FTM继续正常运行。如果FTM不需要产生实时参考或提供从等待模式中唤醒芯片所需的中断源,则可以在进入等待模式之前通过禁用FTM功能来节省电源。

1.6、寄存器

1.6.1、模式寄存器-MODE

这个寄存器包含了特定于ftm的特性的全局启用位和用于配置的控制位:

①、故障控制模式和中断;

②、捕获测试模式

③、PWM同步

④、写入保护

⑤、通道输出初始化


1.6.2、状态控制寄存器—SC

作用:

SC包含溢出状态标志和用于配置中断启用、FTM配置、时钟源、过滤器预调节器和预调节器因子的溢出状态标志和控制位。

该寄存器还包含输出启用控制位和重新加载机会标志控制。


1.6.3、链接通道的功能-COMBINE

作用:此寄存器包含每对通道的配置位。

默认全为0。

16.4、通道极性-POL

作用:这个寄存器定义了FTM通道的输出极性。

7-0 POLn:通道 n 极性;0b-通道极性为活性高、1b-通道极性活性较低。

1.6.6、模块-MOD

作用:模块寄存器包含FTM计数器的模值。在FTM计数器达到模值后,溢出标志(TOF)在下一个时钟周期中被设置,并且FTM计数器的下一个值取决于所选的计数方法;

15-0 MOD : 模块值。

1.6.7、设置通道初始占空比-CONTROLS[0]

2、实验流程

①、设置PWM GPIO模式;使能GPIO时钟,开启GPIO复用 为FTMX_CHX;

②、使能FTMX时钟;

③、FTMX初始化:配置写入保护、使能PWM通道、分频系数

④、配置FTMX模式;

⑤、配置FTM极性;

⑥、配置FTM计数值;

⑦、配置中断。

3、实验程序编写

FTM.c

#include "FTM.h"
#include <stdio.h>
#include "device_registers.h" /* include peripheral declarations */void PWM_GPIO_init(void)
{/*PWM0--FTM0_CH1*/PCC->PCCn[PCC_PORTD_INDEX ]|=PCC_PCCn_CGC_MASK; //使能PTD端口时钟PORTD->PCR[16]|=PORT_PCR_MUX(2); // Port D16: MUX = ALT2 PTD16端口复用 FTM0_CH1
}//FTM0初始化
void FTM0_init(void)
{/*** FTM0 Clocking:* ==================================================*/PCC->PCCn[PCC_FTM0_INDEX] &= ~PCC_PCCn_CGC_MASK;    /* Ensure clk disabled for config   *///使能FTM0时钟PCC->PCCn[PCC_FTM0_INDEX] |= PCC_PCCn_PCS(1)    /* Clock Src=1, 8 MHz SIRCDIV1_CLK */|  PCC_PCCn_CGC_MASK;     /* Enable clock for FTM regs        *//*!* FTM0 Initialization:* ===================================================*/FTM0->MODE |= FTM_MODE_WPDIS_MASK;  /* Write protect to registers disabled (default)               */FTM0->SC   =  FTM_SC_PWMEN0_MASK  /* Enable PWM channel 0 output                                  */|FTM_SC_PWMEN1_MASK /* Enable PWM channel 1 output                                    */|FTM_SC_PS(3)|FTM_SC_TOIE(1);         /* TOIE (Timer Overflow Interrupt Ena) = 0 (default)           *//* CPWMS (Center aligned PWM Select) = 0 (default, up count)     *//* CLKS (Clock source) = 0 (default, no clock; FTM disabled)     *//* PS (Prescaler factor) = 7. Prescaler = 128                   */FTM0->COMBINE = 0x00000000;   /* FTM mode settings used: DECAPENx, MCOMBINEx, COMBINEx=0 */FTM0->POL = 0x00000000;       /* Polarity for all channels is active high (default)       */FTM0->MOD = 100 -1 ;      /* FTM1 counter final value (used for PWM mode)             *///10ms/* FTM1 Period = MOD-CNTIN+0x0001 ~= 62500 ctr clks          *//* 8MHz /128 = 62.5kHz ->  ticks -> 1Hz                    */S32_NVIC->ISER[(uint32_t)(FTM0_Ovf_Reload_IRQn) >> 5U] = (uint32_t)(1U << ((uint32_t)(FTM0_Ovf_Reload_IRQn) & (uint32_t)0x1FU));S32_NVIC->ICPR[(uint32_t)(FTM0_Ovf_Reload_IRQn) >> 5U] = (uint32_t)(1U << ((uint32_t)(FTM0_Ovf_Reload_IRQn) & (uint32_t)0x1FU));
}//关闭FTM0中断
void dis_FTM0IRQ()
{S32_NVIC->ICER[(uint32_t)(FTM0_Ovf_Reload_IRQn) >> 5U] = (uint32_t)(1U << ((uint32_t)(FTM0_Ovf_Reload_IRQn) & (uint32_t)0x1FU));FTM0->SC = FTM_SC_TOIE(1);
}//FTM0通道 1 PWM初始化
void FTM0_CH1_PWM_init(int duty)
{/*** FTM0, Channel 1 in PWM Mode:* ==================================================*/FTM0->CONTROLS[1].CnSC = FTM_CnSC_MSB_MASK|FTM_CnSC_ELSB_MASK;    /* FTM0 ch1: edge-aligned PWM, low true pulses      *//* CHIE (Chan Interrupt Ena) = 0 (default)           *//* MSB:MSA (chan Mode Select)=0b10, Edge Align PWM       *//* ELSB:ELSA (chan Edge/Level Select)=0b10, low true     */FTM0->CONTROLS[1].CnV =  duty;    /* 0~100 FTM0 ch1 compare value (0~100%:duty cycle) */
}void start_FTM0_counter (void)
{FTM0->SC |= FTM_SC_CLKS(1);
//  FTM0->SC |= FTM_SC_CLKS(3);/* Start FTM0 counter with clk source = external clock (SOSCDIV1_CLK)*/
}

FTM.h

#ifndef FTM_H_
#define FTM_H_void PWM_GPIO_init(void);
void FTM0_init(void);
void FTM0_CH1_PWM_init(void);
void start_FTM0_counter (void);#endif

main.c

#include <stdlib.h>
#include <limits.h>
#include <string.h>
#include "S32K116.h"  /* include peripheral declarations S32K116 */
#include "clocks_and_modes_S32K11x.h"
#include "FTM.h"void WDOG_disable (void)
{WDOG->CNT=0xD928C520;     /* Unlock watchdog       */WDOG->TOVAL=0x0000FFFF;   /* Maximum timeout value    */WDOG->CS = 0x00002100;    /* Disable watchdog         */
}int main(void)
{/*!* Initialization:* =======================*/WDOG_disable();        /* Disable WDOG */SOSC_init_40MHz();  /* Initialize system oscillator for 40 MHz xtal */RUN_mode_48MHz();     /* Init clocks: 48 MHz sys, core and bus,                                       24 MHz flash. */PWM_GPIO_init();         //PWM GPIO 初始哈FTM0_init();             //FTM0初始化FTM0_CH1_PWM_init(70);     //FTM0_CH1初始化start_FTM0_counter();    //开启FTM0计数while(1){}  }

4、实验结果

将程序烧写入单片机中,用示波器测量PTD16银角波形,得到如下结果,符合预设70%占空比。

5、资源获取

项目的程序工程已经放在下面公众号里面,可以关注公众号:Kevin的学习站,输入关键字:“054”,就可以获取啦!创作不易,但您的点赞、关注、收藏就是对我最大的鼓励!

10.恩智浦-车规级-MCU:S32K11X FTM-PWM输出实验相关推荐

  1. Ameya360代理 | 兆易创新发布GD32A503系列首款车规级MCU

    兆易创新今日宣布,发布首款基于Cortex®-M33内核的GD32A503系列车规级微控制器,正式进入车规级MCU市场. 全新MCU采用先进的车规级工艺平台,遵循车规级设计理念和生产标准,符合车用高可 ...

  2. 国内车规级MCU厂商知多少?

    今天痞子衡给大家介绍的是国内车规级MCU厂商及其产品. 在汽车电子领域,MCU的应用非常广泛,大到车身控制与动力总成,小到雨刷车窗等控制单元,都离不开MCU的身影.但汽车领域产品必须要是高可靠.高安全 ...

  3. 痞子衡嵌入式:盘点国内车规级MCU厂商

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是国内车规级MCU厂商及其产品. 在汽车电子领域,MCU的应用非常广泛,大到车身控制与动力总成,小到雨刷车窗等控制单元,都离不开MCU的身 ...

  4. 极海推出APM32A系列车规级MCU

    极海宣布推出具有高效CPU处理性能.增强型存储空间.以及丰富连接功能的APM32A系列车规级MCU,以有效满足汽车电子多样化通信与车身控制应用开发需求,可广泛应用于车身控制.安全系统.信息娱乐系统.动 ...

  5. 简介NXP的车规级MCU之KEA系列

    概述 Kinetis® EA系列32位Arm® Cortex®MCU广泛适用于质量要求和长期供货保证要求都很高的汽车和工业应用.Kinetis EA系列是广泛的Arm生态合作体系的入门级产品,并具有以 ...

  6. 国产车规级MCU芯片又添一重量级成员,这次竟是国家队?稳了

    汽车产业是一个国家制造业的引擎,作为国民经济重要的支柱产业,汽车产业的兴衰程度,很大程度上就是一个国家制造业经济是否景气的风向标.汽车行业保持稳定发展,对宏观经济稳中向好的发展态势起到重要的支撑作用. ...

  7. 汽车电子之NXP车规级芯片

    汽车电子之NXP车规级芯片 针对一些车机系统或者车身电控系统,目前市场上份额主要还是被国外的几家半导体厂商所把控,例如恩智浦.瑞萨.英飞凌.Elmos.TI.ST以及Microchip.而国内的具有车 ...

  8. 国产替代STM32芯片MCU降本保供,数算我知道的国产车规级单片机AEC-Q100车规级汽车级认证芯片

    前言: 随着汽车行业进入智能化和新能源时代,过去由瑞萨.英飞凌.恩智浦.ST等芯片巨头所垄断的汽车级芯片市场竞争格局被打破,国产MCU中科芯.先楫.中微爱芯,GD.复旦微电子.航顺.中微.芯海科技等相 ...

  9. 芯驰科技四款车规级处理器芯片亮相上海车展

    4月24日消息,在本届上海车展上,芯驰科技发布了四款全新升级车规级处理器芯片:X9U.V9T.G9Q/G9V. X9U 未来,汽车不仅仅是通行工具,更是人们重要的生活空间,X9U高性能智能座舱芯片,就 ...

  10. 车规级芯片、手机芯片、电脑芯片比较

    在汽车新四化(电动化.智能化.网联化.共享化)的当下,尤其是对于智能化和网联化,车规迹芯片,无疑是最基础的硬件底座 (座舱操作系统,无疑是最基础的软件底座) .本文对车规级芯片进行的梳理,让大家对此有 ...

最新文章

  1. 对ARM异常(Exceptions)的理解
  2. go开源项目influxdb-relay源码分析(一)
  3. mysql常用命令,mysql语法,mysql登陆、创建数据库、创建用户、更改密码、为用户授权...
  4. TensorFlow全新的数据读取方式:Dataset API入门教程
  5. 美团点评资深产品专家刘远飞:了解业务要弄清楚这三个问题
  6. jQuery实现图片延迟加载
  7. salt-api配置
  8. 亚马逊Rekognition发布针对人脸检测、分析和识别功能的多项更新
  9. matlab 替换指定的元素
  10. 基于知识图谱的小微企业贷款申请反欺诈方案
  11. hadoop ubantu环境搭建_Ubuntu16.04 下 hadoop的安装与配置(伪分布式环境)
  12. Linux建立信任主机
  13. 扎克伯格5小时听证鏖战:五大焦点,四处尴尬,一次耿直CEO笑翻全场
  14. python pytest setupclass_python – Pytest – 如何将参数传递给setup_class?
  15. 外包开发app系统软件价格表:价格一般多少呢
  16. 抖音高贵气质的签名_最新抖音气质个性签名 简短唯美幸福个性签名
  17. PS如何修改gif动图 播放速度 - 本地方法篇
  18. 2016年9月下旬校园招聘面经(美团、百度、58同城、华为、微店 11月10号更新)
  19. 如何在opensolaris2008.05清除root密码
  20. Unity3D 背景动态模糊(blur)和截屏方法

热门文章

  1. 第2次作业——时事点评
  2. UNITY3D MMO开发指南(Lua)
  3. 写c语言win7还是win10好,做设计系统用WIN7还是WIN10?
  4. ZJ-笔记本风扇异响
  5. 【EMC专题】共模和差模
  6. 101107 ~101113
  7. 计算机专业和机械自动化哪个好,自动化和机械设计制造及其自动化有哪些区别?选哪个好呢?...
  8. 在阿里云主机上部署Mysql数据库详细教程
  9. 用例图、功能模块图和数据库的区别
  10. Drupal7导入语言包