at32定时器说明
定时器框架介绍
定时器由一个16位的自动装载计数器组成(tmr2和tmr5较为特殊,其自动装载计数器为32位),它由一个可编程的预分频器驱动。它适合多种用途,包含测量输入信号的脉冲宽度(输入捕获),或者产生输出波形(输出比较、pwm、嵌入死区时间的互补pwm等)。
使用定时器预分频器和crm时钟控制预分频器,可以实现脉冲宽度和波形周期从几个微秒到几个毫秒的调节。
图1. 通用定时器的框图
定时器由四个主要部分组成(见图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. 高频测试原理框图
测试高频信号时,将高频信号输入作为定时器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. 低频测试原理框图
测试低频信号时,将低频信号输入作为定时器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. 占空比测试原理框图
测试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实验板
注意:该demo是基于at32f403a的硬件条件,若使用者需要在at32其他型号上使用,请修改相应配置即可。
pwm input test demo使用
打开pwm input test project源程序,其中,在at32f403a_407_clock.h里面有三个宏定义:
分别用于测试高频信号,低频信号,pwm占空比,打开需要测试的宏【注意:每次只开一个宏】。
打开pwm output源程序,其中,在at32f403a_407_clock.h中有三个宏定义:
分别产生高频信号,低频信号,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. 测试高频信号,串口打印信息
若测试低频信号时:
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. 测试低频信号,串口打印信息
若测试pwm占空比时,
1) 打开pwm output源程序宏定义:#define output_pwm_duty_ration_10,pa8产生6mhz pwm,占空比为10%。编译下载到实验板1。
2) 打开pwm input test程序宏定义:#define duty_ration_test,编译下载到实验板2。
3) 将实验板1的pa8接入到实验板2的pa0,usart1通过pa9输出当前的pwm占空比信息。
串口打印信息如下:
图8. 测试 pwm 占空比,串口打印信息
来源:at32 mcu 雅特力科技
免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理
Flyback Transformer Driver
光点科技致力于打造专业飞行平台
电动汽车发展可能发生逆转
曝国行版Switch将于12月10日上市 售价2099人民币
贸泽电子开售Analog Devices ADuM7704 Sigma-Delta调制器
如何使用雅特力AT32 MCU定时器进行PWM输入测试
ROHM开发出高精度、超低功耗且支持40V电压的窗口型复位IC* “BD48HW0G-C”
华为软银苹果发力物联网创新 一周科技新闻点评
欧姆龙流量传感器:欧姆龙流量传感器在加压理疗仪上的应用
松散机车复古MPV搭比亚迪动力 续航1000km
霍金留下的最宝贵遗产:抵制人工智能武器,警惕AI
纯电动汽车的现有发展路线导致其频繁自燃
基于CAN总线的红绿灯动态调整系统
OLED渗透率将持续提升 面板行业将迎新一轮向上周期
2020年中国企业发明授权专利排行榜发布:华为第一
OpenHarmony技术大会 | OS安全分论坛圆满举办:构建系统安全“堡垒”
Silicon Labs荣获CES创新奖之嵌入式技术奖
异步电机和同步电机的区别
传统电视企业面临互联网电视挑战,海外市场出货量持续快速增长
冷却到150微开氏度_研究人员创造了世界上最冷的电子芯片