LKS32mc081_083_088系统板+低中功率板学习之通用定时器(utimer)
本次主要学习的内容是针对南京凌鸥推出的LKS32MC08系列的学习记录,后面慢慢上手搭建foc控制框架,调试一款电机。
通用定时器功能概述
1.1 功能框图
LKSMC08x系列主要集成有4组独立的timer,可以分别配置计数时钟和滤波常数,每个定时器有两个通道,触发计数的事件源可配置,可以输出指定占空比的pwm以及可以捕获一定的输入频率波形,具体详见官网参考手册通用定时器部分。
Utimer功能框图
通用计时器的4个Timer中,Timer0/1是16bit的位宽,Timer3/4是32bit的位宽,其中Timer2和Timer3的通道0和通道1可以做编码器接口(这个还是比较方便的,但是缺憾是编码器接口功能比较单一,不能实现方向标志位)
计数模式
LKs08系列集成8路4对通用计时器通道,计数值从0到TH进行锯齿波计数,每到计时器归0时会产生回零的中断事件,实际的计数周期=1/clk *(TH+1),那么在设置输出一定频率的pwm频率f时的TH设定值为TH=clk/f-1
如果要实现某个通道输出全0
那么需要配置通道输出极性UTIMER_UINTx_CGF.CH0_PoL为0,然后UTIMER_UINTX_cmp0为TH+1或者为0
如果要实现某个通道输出全1
那么需要配置通道输出极性UTIMER_UINTx_CGF.CH0_PoL为1,然后UTIMER_UINTX_cmp0为TH+1或者为0
(这里存在的疑问是,如果我设置好对应的通道输出极性,那么按理说就不应在变了,那么我没有办法再极性一定的时候,同事输出100%和0%的占空比?)
捕获模式/编码器模式
这里的捕获模式主要是讲输入的方波信号进行上升沿或者下降沿的捕获,包括编码器接口也是对边沿的捕获计数模块,因为呼吸灯的实现主要依靠Timer的输出,所以不再过多阐述,具体的功能原理如图所示,关于编码器的接口怎么利用脉冲的计数进行正反转,速度、电角度的获取,请关注后续学习记录内容
捕获模式
Timer2/3内部挂了一个独立的编码器计数
3.硬件设计
LKS08x低中压功率板上有三个LED灯,而且最小MCU板子上也有LED灯的电气标识,原理图查看起来非常方便。而且LED1和LED2通过datasheet发现与其相连的P0.6和P0.7,可以复用成timer1的通道0和1
我们只需要将MCU最小系统板插在功率板的MCU底座上面,默认情况下P0.6、P0.7和P0.3和LED1,LED2,LED3连在一起了,后续只需要复用成对应的Timer1的通道,刷新改变占空比即可
4.软件设计
针对实现LED流水灯的源码和硬件电路已经和帖子一起上传,实现流水灯用到的外设比较简单,首先对GPIO引脚的输入输出模式,是否上拉进行了基本的初始化
将对应的LED灯的引脚复用成AF7即定时器1的两通道输出
3,定时器配置
主函数里不断更新比较值
5.验证效果
6.问题总结
1.定时器计数值匹配比较值时会发送比较中断事件,计数值回零时会发送回零中断,在锯齿波的计数模式下,这两者中断事件请求发生的周期时一致的,也就是当TH一定时,比较值cmp0设置多少,也是固定周期触发中断事件,所以比较中断事件存在的意义作用在哪?
2.编码器接口的计数器是独立的,但是没有方向标志位,这样需要在软件中判断转子方向。#申请原创# #每日话题# #技术资源#
|
下次可以在帖子中@21小跑堂哦
您好,这篇文章是要申请原创吗