本帖最后由 AutochipsMCU 于 2019-7-24 18:31 编辑
本帖介绍PWDT模块的使用,希望对您有所帮助
PWDT模块简介
PWDT是Pulse Width Detect Timer(脉冲宽度检测定时器)缩写。可作为测量脉冲宽度的工具或作为16位定时器。 PWDT模块可支持2个功能: 脉冲宽度测量功能 1) 可编程起始测量触发沿 2) 4个可编程测量模式 3) 支持3个霍尔传感器的信号输入测量 4) 支持来自模拟比较器的三个输入 定时功能 在禁用定时器或在正常操作时,修改定时器加载值。
PWDT功能介绍
脉冲宽度测量功能 Pwdtclk是由PSC[2:0]从总线时钟分频得到。对于可测量脉冲宽度的范围,可通过设置pwdtclk进行调节。在配置时钟分频时,有如下几点需注意: 1.需要注意输入信号脉宽是否在可捕获范围内。 可测量的脉冲宽度如下表所示。 项 | 时钟(bclk = 48M) | 时间 | 可测量脉冲宽度范围 | 4 bclk ~ 128*65535 bclk | 0.08us ~ 0.168s |
2.应了解脉冲宽度测量的测量精度,配置PSC[2:0]以适当的值,以达到更准确的测量值。一个基本原则是,使用较小的PSC[2:0]可以获得更准确的测量值。显然,输入脉冲越窄,相对测量误差越大。 PWDT模块中具有滤波器功能可配置,模块中的滤波器设计用于滤除高或低电平小于本段中描述的特定宽度的噪声信号。FILT_PSC[7:4]和FILTVAL [3:0]设置确定最大和最小噪声脉冲宽度。图2-1介绍了噪声宽度设置,判断和滤波器。当用户配置FILTVAL = 15及FILT_PSC = 2时,滤波器脉冲宽度为60 bclk,小于60 bclk的脉冲被判断为噪声脉冲并将被过滤掉。可滤波的脉冲宽度如下表。 项 | 时钟 | 时间 | 可滤波脉冲宽度范围 | 4 bcllk ~ 16*4096 bclk | 0.08us ~ 1.311ms |
脉冲宽度测量的应用场景: 单通道输入测量对于基本测量,可以通过设置PINSEL[1:0]来选择测量特定的通道输入,并可以根据实际应用通过设置EDGE[1:0]来选择4种测量模式中的一种。 输入边沿触发类型见下表 EDGE[1:0] | 输入边沿触发类型 | 2'b00 | 第一个下降沿开始,在所有之后的下降沿触发要捕获的脉宽 | 2'b01 | 第一个上升沿开始,在所有之后的上升沿和下降沿触发要捕获的脉宽 | 2'b10 | 第一个下降沿开始,在所有之后的上升沿和下降沿触发要捕获的脉宽 | 2'b11 | 第一个上升沿开始,在所有之后的上升沿触发要捕获的脉宽 |
三通道输入测量(用于霍尔测量)对于霍尔测量,模块测量从3个通道输入的异或(XOR)得到的脉冲输入,设置EDGE[1:0]= 2'b01。此外,内部3个通道比较器输入的配置类似于霍尔测量,只需把CMPEN同时配置为1'b1。 对于霍尔测量或 3个内部比较器输入,只需选择一种模式用于电机速度计算或换向,如下图所示。 备注: 从图1-1 PWDT功能框图可知,ACMP模块的输出可作为PWDT模块输入。该功能主要用于电机控制,无传感方案应用。 大致原理如下:由于电机自身特性,BLDC/PMSM电机在运行时会产生反电动势(BLDC为梯形波,PMSM为正弦波)。通过反电动势采集电路,把采集到的电压输入给ACMP模块,ACMP模块比较后输入给PWDT,PWDT根据三个输入值进行异或运算得到HALL状态。 在电动机中,霍尔装置的安装用于检测转子的位置以适当地换向。通常有两个安装,如下图所示。一个是120电度间隔,另一个是60电度间隔。 定时器功能对于定时器功能,只有OVF状态有效,并在PWDTC计数器溢出时发生。计数器负载值TIMCNTVAL[15:0]可以一直修改。但是,在不同的时间点修改计数器负载值会导致MCU执行不同的操作。 例程介绍
pwdt_sample例程通过设置PWDT_SAMPLE_SELECT宏定义参数来编译对应例程。详情参考代码。 #define ONE_CHANNEL_PWM_CAPTURE 1 // 例程1:单通道脉冲宽度测量 #define THREE_CHANNEL_INPUT_HALLSTATUS 2 // 例程2:三通道输入检测HALL状态 #define PWDT_SAMPLE_SELECT ONE_CHANNEL_PWM_CAPTURE
pwdt_sample.rar
(654.08 KB)
|