0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

AT32讲堂011 | 如何使用雅特力AT32 MCU定时器进行PWM输入测试

雅特力 AT32 MCU 2022-07-02 15:03 次阅读

AT32定时器说明

定时器框架介绍

定时器由一个16位的自动装载计数器组成(TMR2和TMR5较为特殊,其自动装载计数器为32位),它由一个可编程的预分频器驱动。它适合多种用途,包含测量输入信号的脉冲宽度(输入捕获),或者产生输出波形(输出比较、PWM、嵌入死区时间的互补PWM等)。

使用定时器预分频器和CRM时钟控制预分频器,可以实现脉冲宽度和波形周期从几个微秒到几个毫秒的调节。

图1. 通用定时器的框图7fd2059c-f8a2-11ec-a2f4-dac502259ad0.png

定时器由四个主要部分组成(见图1)。第一部分时钟单元。此单元提供定时器的时钟驱动。第二部分时钟基单元,此单元提供定时器计数功能。第三部分输入捕获,此单元允许输入信号进入定时器模块。第四部分输出比较,此单元将定时器整合后的PWM输出。

定时器一般配置步骤

1) 时钟使能。crm_periph_clock_enable(CRM_TMR2_PERIPH_CLOCK, TRUE);

2) 初始化定时器参数,设置自动重装值,分频系数,计数方式等。

在库函数中,定时器的初始化参数是通过初始化函数tmr_base_init()及tmr_cnt_dir_set()实现的:

void tmr_base_init(tmr_type* tmr_x, uint32_t tmr_pr, uint32_t tmr_div);

其中,第一个参数是确定是哪个定时器,这个比较容易理解。第二个参数tmr_pr是定时器计数的周期值。第二个参数tmr_div是定时器的分频系数。

void tmr_cnt_dir_set(tmr_type *tmr_x, tmr_count_mode_type tmr_cnt_dir);

其中,第一个参数是确定是哪个定时器,第二个参数tmr_cnt_dir为定时器的计数模式(向上,向下,中央对齐)。特别地,增强模式是TMR2和TMR5独有的功能。tmr_32_bit_function_enable()为增强模式使能(Plus Mode Enable)函数。开启TMRx增强模式,该模式下TMRx_CVAL,TMRx_PR,TMRx_CxDT由16位扩展为32位。void tmr_32_bit_function_enable(tmr_type *tmr_x, confirm_state new_state);

当需要配置时钟除频参数时(注意和 TMR_DIV 的区别,配置滤波、死区时间时需配置该参数),会使用到tmr_clock_source_div_set()函数;当需要配置重复周期寄存器时(高级定时器TMR1/TMR8/TMR15才有),会使用到tmr_repetition_counter_set()函数。本例程不使用这两个函数,仅做简要介绍。

void tmr_clock_source_div_set(tmr_type *tmr_x, tmr_clock_division_type tmr_clock_div);void tmr_repetition_counter_set(tmr_type *tmr_x, uint8_t tmr_rpr_value);

3) 设置TMRx_ IDEN允许更新中断。

void tmr_interrupt_enable(tmr_type *tmr_x, uint32_t tmr_interrupt, confirm_state new_state);这里着重描述参数tmr_interrupt,它是用来指明我们使能的定时器中断的类型,定时器中断的类型有很多种,包括更新中断,触发中断,以及输入捕获中断等等。

4) TMRx中断优先级设置。

调用nvic_irq_enable()函数即可。

5)允许TMRx工作,也就是使能TMRx。

void tmr_counter_enable(tmr_type *tmr_x, confirm_state new_state);

6)编写中断服务函数。

规格说明

AT32 PWM高频测试说明

图2. 高频测试原理框图7fe9e8f6-f8a2-11ec-a2f4-dac502259ad0.png

测试高频信号时,将高频信号输入作为定时器TMR2的时钟源(如上图所示),驱动定时器TMR2的 Counter计数,使用另一个定时器做时钟基准,例如每隔1s,获取TMR2的Counter变化值,则TMR2的变化值即为高频信号的频率值。

使用两个定时器,其中一个定时器为TMR2(这里选取TMR2的原因在于其可以通过设置TMRx_CTRL1中的PMEN位,开启TMRx增强模式,该模式下TMRx_CVAL,TMRx_PR,TMRx_CxDT由16位扩展为32位),测试高频时,有利于Counter计数,不容易产生溢出。这样做的好处在于,既可以测试高频信号:最高50MHz(受限于I/O口的最高频率),且没有频繁产生中断,代码也有冗余,去处理客户任务。

使用此方法测试的频率范围在:50MHz到1Hz(TMR2的工作频率为240MHz)。

注意:增强模式是TMR2和TMR5独有的功能,使用不支持增强模式的其他TMR,或使用不含有增强模式TMR的AT32时,测试频率会受限。

AT32 PWM低频测试说明

图3. 低频测试原理框图800862ae-f8a2-11ec-a2f4-dac502259ad0.png

测试低频信号时,将低频信号输入作为定时器TMR2的捕获输入(如上图所示),触发TMR2的输入捕获中断,利用TMR2工作时钟除以两次输入捕获之间Counter变化值,即可得到低频信号频率值。

这里定时器为TMR2(这里选取TMR2的原因在于其可以通过设置TMRx_CTRL1中的PMEN位,开启TMRx增强模式,该模式下TMRx_CVAL,TMRx_PR,TMRx_CxDT由16位扩展为32位),有利于低频测试。

使用此方法测试的最低频率为:56mHz。(TMR2的工作频率在240MHz)。

注意:增强模式是TMR2和TMR5独有的功能,使用不支持增强模式的其他TMR,或使用不含有增强模式TMR的AT32时,测试频率会受限。

AT32 PWM占空比测试说明

图4. 占空比测试原理框图80214698-f8a2-11ec-a2f4-dac502259ad0.png

测试PWM占空比时,利用门控模式(Hang Mode)方式来测量(如上图所示),将输入信号同时作为两个定时器的输入信号,利用输入信号来控制定时器的Counter计数。一个定时器在输入信号的高电平阶段计数,另一个定时器在输入信号的低电平阶段计数,使用第三个定时器作为时间基准,例如产生1s的中断,在中断内,获取这段时间内,两定时器Counter计数值,将两值做比值即可获取当前的PWM占空比。

这里定时器为TMR2和TMR5(这里选取TMR2、TMR5的原因在于其可以通过设置TMRx_CTRL1中的PMEN位,开启TMRx增强模式,该模式下TMRx_CVAL,TMRx_PR,TMRx_CxDT由16位扩展为32位),有利于测试。

这样做的好处在于,可以测量较高频率的占空比值,例如10MHz内,误差在1%以内。且没有频繁产生中断,代码也有冗余,去处理客户任务。

注意:增强模式是TMR2和TMR5独有的功能,使用不支持增强模式的其他TMR,或使用不含有增强模式TMR的AT32时,测试频率会受限。

PWM Test快速使用方法

硬件资源

1) AT-START-F403A实验板图5. AT-START-F403A实验板804ea930-f8a2-11ec-a2f4-dac502259ad0.png

注意:该Demo是基于AT32F403A的硬件条件,若使用者需要在AT32其他型号上使用,请修改相应配置即可。

pwm input test demo使用

  • 打开pwm input test project源程序,其中,在at32f403a_407_clock.h里面有三个宏定义:

80a99cfa-f8a2-11ec-a2f4-dac502259ad0.png

分别用于测试高频信号,低频信号,PWM占空比,打开需要测试的宏【注意:每次只开一个宏】。

打开pwm output源程序,其中,在at32f403a_407_clock.h中有三个宏定义:

80cac254-f8a2-11ec-a2f4-dac502259ad0.png

分别产生高频信号,低频信号,PWM占空比用于测试。

AT-START板载的AT-LINK-EZ自带串口输出功能,它可以将USART1_TX口PA9输出至PC。也可使用其他串口工具进行测试结果的输出。

若测试高频信号时:

1)打开pwm output源程序宏定义:#define Output_High_Frequency,PA8产生60MHz PWM

(I/O口已超频工作,可适当降低主频)。编译下载到实验板1。

2) 打开pwm input test程序宏定义:#define high_frequency_test,编译下载到实验板2。

3) 将实验板1的PA8接入到实验板2的PA0,USART1通过PA9输出当前的PWM频率信息

串口打印信息如下:

图6. 测试高频信号,串口打印信息

80e901ce-f8a2-11ec-a2f4-dac502259ad0.png

若测试低频信号时:

1) 打开pwm output源程序宏定义:#define Output_Low_Frequency,PA8产生500mHz PWM。编译下载到实验板1。

2) 打开pwm input test程序宏定义:#define low_frequency_test,编译下载到实验板2。

3) 将实验板1的PA8接入到实验板2的PA0,USART1通过PA9输出当前的PWM频率信息。

串口打印信息如下(应将第一个数据舍弃):

图7. 测试低频信号,串口打印信息

80f53e12-f8a2-11ec-a2f4-dac502259ad0.png

若测试PWM占空比时,

1) 打开pwm output源程序宏定义:#define Output_PWM_Duty_Ration_10,PA8产生6MHzPWM,占空比为10%。编译下载到实验板1。

2) 打开pwm input test程序宏定义:#define duty_ration_test,编译下载到实验板2。

3) 将实验板1的PA8接入到实验板2的PA0,USART1通过PA9输出当前的PWM占空比信息。

串口打印信息如下:图8. 测试 PWM 占空比,串口打印信息8118e56a-f8a2-11ec-a2f4-dac502259ad0.png关于雅特力雅特力科技于2016年成立,是一家致力于推动全球市场32位微控制器(MCU)创新趋势的芯片设计公司,专注于ARM Cortex-M4/M0+的32位微控制器研发与创新,全系列采用55nm先进工艺及ARM Cortex-M4高效能或M0+低功耗内核,缔造M4业界最高主频288MHz运算效能,并支持工业级别芯片工作温度范围(-40°~105°)。雅特力目前已累积相当多元的终端产品成功案例:如微型打印机、扫地机、光流无人机、热成像仪、激光雷达、工业缝纫机、伺服驱控、电竞周边市场、断路器、ADAS、T-BOX、数字电源、电动工具等终端设备应用,广泛地覆盖5G、物联网、消费、商务及工控等领域。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • mcu
    mcu
    +关注

    关注

    146

    文章

    16977

    浏览量

    350215
收藏 人收藏

    评论

    相关推荐

    高级定时器PWM输入模式的配置方法

    我们将向大家介绍高级定时器的另一个常见应用——PWM输入模式。在本节课中,我们将先围绕输入捕获模式展开,并重点描述PWM
    的头像 发表于 11-08 16:48 1504次阅读
    高级<b class='flag-5'>定时器</b><b class='flag-5'>PWM</b><b class='flag-5'>输入</b>模式的配置方法

    发布高性能电机控制专用MCU

    近日,科技正式推出了其首款高性能电机控制专用MCU——AT32M412/M416。这款MCU专为出行工具、家电及工业控制等应用而设计,
    的头像 发表于 11-01 18:11 800次阅读

    AT32讲堂088 | AT32F402/F405时钟配置

    介绍如何结合提供的V2.x.x的板级支持包(BSP)来配置时钟。以下介绍时钟配置的方法主要分两种:1、以手动编写代码调用BSP中提供的驱动函数接口来进行时钟配
    的头像 发表于 09-15 08:08 393次阅读
    <b class='flag-5'>AT32</b><b class='flag-5'>讲堂</b>088 | <b class='flag-5'>雅</b><b class='flag-5'>特</b><b class='flag-5'>力</b>AT32F402/F405时钟配置

    AT32讲堂087 | AT32 IDE快速入门指南

    新建项目新项目向导AT32ID提供支持MCU的C语言项目模板,方便用户快速创建项目。菜单栏【File】>【New】>【CProject】。新建项目向导的对话框将出现。在对
    的头像 发表于 09-15 08:08 349次阅读
    <b class='flag-5'>AT32</b><b class='flag-5'>讲堂</b>087 | <b class='flag-5'>雅</b><b class='flag-5'>特</b><b class='flag-5'>力</b><b class='flag-5'>AT32</b> IDE快速入门指南

    AT32 MCU的随机数生成

    概述产品和生态系统安全性的需求比以往任何时候都更加重要。真随机数是所有安全系统的核心,其质量会影响设计的安全性。因此在没有内置硬件TRNG的AT32的微控制系列中,如何提高随机数的有效,来符合
    的头像 发表于 08-30 12:26 446次阅读
    <b class='flag-5'>雅</b><b class='flag-5'>特</b><b class='flag-5'>力</b><b class='flag-5'>AT32</b> <b class='flag-5'>MCU</b>的随机数生成

    AT32讲堂085 | AT32 MCU HICK时钟校准

    简介AT32系列MCU内部都有提供适合运行的内部高速时钟(HICK),其本质就是内置于芯片的RC振荡。在25℃下,其典型值频率8MHz的精度由工厂校准到±1%,在-40到105℃,该内部高速时钟
    的头像 发表于 08-30 12:26 494次阅读
    <b class='flag-5'>AT32</b><b class='flag-5'>讲堂</b>085 | <b class='flag-5'>雅</b><b class='flag-5'>特</b><b class='flag-5'>力</b><b class='flag-5'>AT32</b> <b class='flag-5'>MCU</b> HICK时钟校准

    携多款AT32 MCU新品与应用方案亮相2024慕尼黑上海电子展

    7月8日,2024慕尼黑上海电子展electronicaChina在上海新国际博览中心拉开序幕,作为全球电子行业的盛会,汇聚了国内外众多优质电子企业,为业界呈现一场前所未有的科技盛宴。携高性能
    的头像 发表于 07-09 08:15 614次阅读
    <b class='flag-5'>雅</b><b class='flag-5'>特</b><b class='flag-5'>力</b>携多款<b class='flag-5'>AT32</b> <b class='flag-5'>MCU</b>新品与应用方案亮相2024慕尼黑上海电子展

    AT32 MCU通过IEC 60730功能安全认证,为家电产品提供安全保障

    ‍‍近日,AT32MCU安全库顺利通过IEC60730功能安全认证,为家电产品提供安全质量保证。国际公认的测试、检验和认证机构SGS为
    的头像 发表于 05-20 08:15 514次阅读
    <b class='flag-5'>雅</b><b class='flag-5'>特</b><b class='flag-5'>力</b><b class='flag-5'>AT32</b> <b class='flag-5'>MCU</b>通过IEC 60730功能安全认证,为家电产品提供安全保障

    发布全新车载型AT32A423系列MCU

    近日发布了全新车载型AT32A423系列MCU,该产品基于ARM®Cortex®-M4内核设计,集成了丰富的外设资源,展现了高效能与多尺寸封装的双重优势。
    的头像 发表于 05-17 10:38 593次阅读

    AT32F423入门使用指南

    初步环境准备开发环境下载地址:
    的头像 发表于 05-14 08:15 1314次阅读
    <b class='flag-5'>雅</b><b class='flag-5'>特</b><b class='flag-5'>力</b>AT32F423入门使用指南

    AT32 MCU与SEGGER携手合作,开发量产事半功倍

    近日,与SEGGER共同宣布J-Link仿真调试与Flasher在线烧录全面支持AT32
    的头像 发表于 02-23 10:27 356次阅读

    AT32 MCU与SEGGER携手合作,开发量产事半功倍

    近日,与SEGGER共同宣布J-Link仿真调试与Flasher在线烧录全面支持AT32MCU
    的头像 发表于 02-22 08:13 447次阅读
    <b class='flag-5'>雅</b><b class='flag-5'>特</b><b class='flag-5'>力</b><b class='flag-5'>AT32</b> <b class='flag-5'>MCU</b>与SEGGER携手合作,开发量产事半功倍

    AT32F423时钟配置

    介绍如何结合提供的V2.x.x的板级支持包(BSP)来配置时钟。以下介绍时钟配置的方法主要分两种:1、以手动编写代码调用BSP中提供的驱动函数接口来进行时钟配
    的头像 发表于 02-19 13:26 550次阅读
    <b class='flag-5'>雅</b><b class='flag-5'>特</b><b class='flag-5'>力</b>AT32F423时钟配置

    AT32 定时器配置中pr和div的作用

    AT32定时器是51系列单片机中的一种定时器,可以实现多种定时功能。在AT32定时器中,pr和d
    的头像 发表于 01-08 10:12 1222次阅读

    AT32WB415时钟配置

    介绍如何结合提供的V2.x.x的板级支持包(BSP)来配置时钟。以下介绍时钟配置的方法主要分两种:1、以手动编写代码调用BSP中提供的驱动函数接口来进行时钟配
    的头像 发表于 12-20 08:14 452次阅读
    <b class='flag-5'>雅</b><b class='flag-5'>特</b><b class='flag-5'>力</b>AT32WB415时钟配置