目录
18.1 结构框图
18.3 功能说明
18.3.4 PWM 信号发生器
18.3.5 死区发生器
18.3.6 中断/ADC 触发选择器
18.3.7 同步方法
18.3.8 故障条件
18.3.9 输出控制块
LES 硬件介绍(12)正交编码接口QEI
19.1 结构框图
19.2 信号描述
19.3 功能说明
18.1 结构框图
18.2 信号描述
18.3 功能说明
18.3.1 时钟配置
18.3.2 PWM 定时器
•
18.3.3 PWM 比较器
18.3.4 PWM 信号发生器
•
18.3.5 死区发生器
18.3.6 中断/ADC 触发选择器
•
18.3.7 同步方法
18.3.8 故障条件
•
18.3.9 输出控制块
脉宽调制 (PWM) 是一项功能强大的技术,它是一种对模拟信号电平进行数字化编码的方法。在脉宽中使用高分辨率计数器来产生方波,并且可以通过调整方波的占空比来对模拟信号电平进行编码。PWM 通常使用在开关电源和运动控制中。
微控制器微控制器包含两个 PWM 模块,每个模块有四个PWM 发生器和一个控制模块,总共 16 个 PWM 输出。控制模块决定了PWM信号的极性,以及将哪个信号传递到管脚。
每个 PWM 发生器模块产生两个 PWM 信号,这两个信号基于同一个定时器和频率,也可以是编程产生独立的信号,如插入了死区延时互补信号。PWM 发生器模块的输出信号是 pwmA' 和 pwmB'。在发送到 MnPWM0和 MnPWM1或MnPWM2 和 MnPWM3 等器件管脚之前,这两个输出信号由输出控制模块管理。
每个 微控制器PWM 模块都具有极大的灵活性,它可以产生简单的 PWM 信号,如简易充电泵需要的信号;也可以产生带死区延迟的成对 PWM 信号,如供半 H 桥驱动电路使用的信号。3个发生器模块也可产生3相反相器桥所需的6通道门控。
每个 PWM 发生模块具有以下特性:
3 个故障条件处理输入,能快速实现低延迟关闭,避免马达在被可控之前产生破坏,共计 6 个输入。
1 个 16 位的计数器
运行在递减或递增/递减模式
输出频率由一个 16 位的加载值控制
可同步更新加载值
当计数器的值到达零或者加载值的时候生成输出信号
2 个 PWM 比较器
比较器值的更新可以同步
在匹配的时候产生输出信号
PWM 信号发生器
根据计数器和 PWM 比较器的输出信号来产生 PWM 输出信号
可产生两个独立的 PWM 信号
死区发生器
产生 2 个带有可编程死区延时的 PWM 信号,适合驱动半 H 桥(half-H bridge)
可以被旁路,不修改输入的 PWM 信号
可启动一个 ADC 采样序列
控制模块决定了 PWM 信号的极性,以及将哪个信号传递到管脚。PWM发生器模块的输出在传递到器件管脚之前由输出控制模块管理,PWM 控制模块具有以下特性:
每个 PWM 信号都具有 PWM 输出启用
每个 PWM 信号都可以选择将输出反相(极性控制)
每个 PWM 信号都可以选择进行故障处理
PWM 发生器模块的定时器同步
PWM 发生器模块的定时器/比较器更新同步
• ■ PWM 发生器模块的定时器/比较器更新的扩展 PWM 同步
• ■ PWM 发生器模块中断状态汇总
• ■ 多路故障信号,可编程极性和过滤的扩展故障处理
• ■ PWM 发生器可独立操作或者与其它发生器同步操作
18.1 结构框图
图18-1 提供了 微控制器PWM 模块的结构图,图18-2 提供了一个更加详细的 微控制器PWM 发生器结构图。该 微控制器控制器包含两个 PWM 模块,每个模块有四个发生器模块,可以产生 8 个独立的 PWM 信号或 4 对插入了死区延时的 PWM 信号每个模块有四个发生器模块,可以产生 8个独立的 PWM 信号或 4 对插入了死区延时的 PWM 信号对。
18.2 信号描述
下表列出了 PWM 模块的外部信号,并描述了每个信号的功能。一些GPIO信号的PWM控制信号是可选功能并且复位后默认的是GPIO信号。在“引脚复用/分配”栏下列出了这些PWM信号的GPIO引脚复用。将GPIO备用功能选择(GPIOAFSEL) 寄存器中的 AFSEL 位置位,以便选择 PWM功
能。必须将括号中的数字写入 GPIO 端口控制 (GPIOPCTL)寄存器中的 PMCn 域,以便将 PWM 信号分配给指定的GPIO 端口管脚。有关如何配置 GPIO 的更多信息,请参阅“通用输入/输入端口(GPIOs)”。
表 18-1. PWM 信号 (64LQFP)
18.3 功能说明
18.3.1 时钟配置
PWM 具有两种时钟源选项:
系统时钟
• ■ 预分频的系统时钟
时钟源的选择通过在 0x060 的系统控制偏移量下编制运行模式时钟配置 (RCC) 寄存器的 USPWMDIV位实现。PWMDIV位域规定用于创建 PMW 时钟的系统时钟分频值。
18.3.2 PWM 定时器
每个 PWM 发送器中的定时器都有两种运行模式:递减模式和递增/递减模式。在递减模式中,定时器从装载值计数到零,再返回到装载值,继续递减。在先递增后递减模式中,
定时器从零开始计数到装载值 ,然后减到零 ,在再增到装载值,然后如此反复。
一般的,递减模式用来产生左对齐或右对齐的PWM信号,先递增后递减模式用来产生中间对齐的PWM信号。
定时器产生三个信号并被用在PWM产生过程中:方向信号(在递减模式中一直是低电平,在递增/递减模式中,则是在高低电平之间切换);当计时值为零时的一个宽度等于时钟周期的高电平脉冲;
当计时值等于装载值时,一个宽度等于时钟周期的高电平脉冲。注:在递减模式中,零脉冲之后紧接着一个装载脉冲。在本章的图片中,这些信号标记为“dir”,“zero”和“load”。
每个 PWM 发生器有两个比较器,用来监控计数器的值;当任何一个比较器与计数器的值相等时,这两个比较器输出一个宽度等于单个时钟周期的高电平脉冲,在本章图片中标记为“cmpA”和“cmpB”。在递增/递减计数模式中,比较器在递增和递减计数时都要进行比较,因此必须通过计
数器的方向信号来限定。这些限定脉冲在 PWM 信号的生成过程中使用。如果任一比较器的值大于计时器的装载值,则该比较器永远不会输出高脉冲。
图18-3显示了计数器处于递减计数模式时的行为以及这些脉冲之间的关系。图18-4显示了计数器处于递增/递减计数模式时的行为以及这些脉冲之间的关系。在这些图中使用了如下的定义:
LOAD 是 PWMnLOAD 里的寄存器的值
COMPA 是 PWMnCMPA 里的寄存器的值
COMPB 是 PWMnCMPB 里的寄存器里的值
0 就是数值 0
load 表示当计数器的值等于装载值时的宽度为单时钟周期的内部信号
zero 表示当计数器的值是零时的宽度为单时钟周期的内部信号
cmpA 表示宽度为单时钟周期的内部信号,此时计数器的值等于COMPA
cmpA 表示宽度为单时钟周期的内部信号,此时计数器的值等于COMPB
dir 是表示计数方向的内部信号
图 18-3. PWM递减计数模式
图 18-4. PWM先递增后递减计数模式
18.3.4 PWM 信号发生器
每个 PWM 发生器捕获 load、zero、cmpA 和 cmpB 脉冲(由方向信号来限定),并产生两个内部PWM 信号:pwmA 和 pwmB。在递减计数模式中,能够影响这些信号的事件有四个:零、装载、匹配 A 递减以及匹配 B 递减。在递增/递减模式中,能够影响这些信号的事件有六个:零、装值、匹配 A 递增、匹配 B 递增、匹配 A 递减以及匹配 B 递减。
当匹配A或匹配B事件与零或者装载事件重合时,它们可以被忽略。如果匹配A和匹配B时间重合,则第一个信号PWMA只根据匹配A事件生成,第二个信号PWMB只根据匹配B事件生成。
各个事件在 PWM 输出信号的影响上都是可编程的:可以保留(忽略该事件),可以翻转,可以驱动为低电平、或驱动为高电平。这些动作可用来产生一对不同位置和不同占空比的PWM信号,这对信号量可以重叠或不重叠。
图18-5显示了递增/递减计数模式产生的一对中心对齐、含不同占空比的重叠 PWM 信号。改图显示在pwmA和pwmB信号传递到死去发生器之前的信号。
第一个PWM发生器设置为在出现匹配A递增事件时驱动为高电平,出现匹配A递减事件时驱动为低电平,并忽略其它4个事件。
第二个发生器设置为在出现匹配B递增事件时驱动为高电平,出现匹配B递减事件时驱动为低电平,并忽略其它4个事件。
改变比较器 A 的值可改变 pwmA信号的占空比,改变比较器 B 的值可改变 pwmB 信号的占空比。
18.3.5 死区发生器
每个 PWM 发生器产生的 pwmA 和 pwmB 信号会传递给死区发生器。如果死区发生器禁能,则PWM信号只简单地通过该模块得到pwmA’和pwmB’,而不会发生改变。如果死区发生器使能,则丢弃pwmB信号,并在pwmA信号的基础上产生两个PWM信号。第一个输出PWM信号,pwmA’是pwmA上升沿延迟可编程的信号。
第二个输出PWM信号,pwmB’是在pwmA信号反相信号,并在pwmA信号的下降沿和pwmB’信号的上升沿之间增加了可编程的延迟时间。最后的信号是一对高电平有效的信号,并且其中一个信号总是为高电平,但在跳变处的那段可编程延时时间时都为低电平。这样两个信号便可用来驱动半-H
桥,又由于他们带有死区延迟,因而还可以避免击穿电流破坏电力电子器件。图18-6显示了死区发生器对 pwmA 信
• 号的影响,以及将被发送到输出控制模块的结果信号 pwmA’和pwmB’。
18.3.6 中断/ADC 触发选择器
每个PWM 发生器还捕获四个(或六个)计数器事件,并使用它们来产生中断 或者 ADC 触发事件。用户可以选择这些事件中的任一个或一组作为中断源;只要其中一个所选事件发生就会产生中断。
此外,你也可以选择相同的事件,不同事件,同组事件,不同组事件作为ADC的触发源;只要其中一个所选事件发生就会产生ADC脉冲。事件的选择允许在 pwmA 或者 pwmB 信号的特殊位置时发生中断或触发 ADC。注:中断和 ADC 触发是基于原始事件,而不考虑死区发生器在 PWM 信号边沿上产生的延迟。
18.3.7 同步方法
每个 PWM 模块提供四个 PWM 发生器,每个发生器提供两个 PWM 输出,应用范围广泛。一般来说,PWM使用两种操作类别之一:
异步. PWM 发生器和它的两个输出信号独自使用,与其他 PWM 发生器独立。
同步. PWM 发生器和它的两个输出信号通过共用的统一的时间基准与其它 PWM 发生器保持联系。如果多个PWM发生器配置使用相同的计时器装载值,同步可以保证它们有相同的计数值(在同步之前必须配置PWM发生器)。通过这个功能,可产生两个以上的 MnPWMn 信号。而且因为计数器总是具有相同的值,这些信号的边沿之间将存在已知关系。
通过向 PWM 时间基准同步 (PWMSYNC) 寄存器中写入数值,将与发生器相关的 SYNCn 位置位,PWM 发生器中的计数器会被复位为零。可以在一次访问中置位所有需要的 SYNCn位来同步多个PWM 发生器。比如,向 PWMSYNC 寄存器中的SYNC0 和 SYNC1 位写 1 就可用同时使 PWM 发送器 0 和PWM 发生器 1 中的计时器复位。
另外,同步也可发生在多个PWM发生器之间,通过以下三种方式中的一种:
立即. 写入值立即生效,硬件立即动作。
局部同步. 写入的值不会影响到逻辑,直到计数器在PWM 周期结束时减为零。这样写入的值的作用延期了,避免出现过短或过长的脉冲。
全局同步. 写入的值并不影响逻辑,直到有两个连续的事件发生:(1) 在 PWMnCTL 寄存器中启用全局同步的发生器更新模式。(2) 计数器的值在 PWM 周期结束时到达零。在这种情况下,写入的作用会延迟直到PWM周期的结束伴随着所有的更新结束才发生作用。这种模式可以同时对多个PWM发生器中的多项进行更新,而不会在更新过程中出现意外的情况。所有逻辑在根据新值运行之前都先在原来的值上运行。装载和比较器匹配的更新方法可以在各个PWM发生器模块中单独配置。当那些模块中的定时器同步时,通常可以在PMW发生器模块中使用同步更新机制。
下面的寄存器基于 PWMnCTL 寄存器中各种更新模式位域的状态,提供局部或全局同步:
发生器寄存器:PWMnLOAD、PWMnCMPA 和 PWMnCMPB下面的寄存器默认立即更新模式,提供同步更新的可选功能,而不使更新立即生效:
模块级寄存器:PWMENABLE(基于 PWMENUPD 寄存器中 ENUPDn 位的状态)。
发生器寄存器:PWMnGENA、PWMnGENB、PWMnDBCTL、PWMnDBRISE 和PWMnDBFALL(基于 PWMnCTL 寄存器中各种更新模式位域 [GENAUPD、GENBUPD、DBCTLUPD、DBRISEUPD、DBFALLUPD] 的状态)。
所有其它的寄存器为一个应用提供静态的配置或者与维持同步不相关的动态配置,因此不需要同步更新的功能。
18.3.8 故障条件
故障条件时必须向控制器发出信号,以停止正常 PWM 功能并置位 MnPWMn 信号到安全状态。两种基本的情况导致故障条件:
控制器中止并且在运动控制中所必需的计数也不能工作。
检测到一个外部错误或事件。
每个 PWM 发生器可以使用下列的输入来产生故障条件:
MnFAULTn 管脚有效
调试器引发的控制器中止
ADC 数字比较器的触发
故障条件的产生以每一个PWM发生器为基础。每个 PWM 发生器都要配置必要的条件,以便显示出故障条件。用该方法可以开发具有相关控制或者独立控制的应用程序。
提供六个故障输入管脚 (MnFAULTn)。这些输入 可能和产生高电平有效或低电平有效的电路一起指示一个错误状态。MnFAULTn 管脚可以通过 PWMnFLTSEN 寄存器单独编程,以获得相应的逻辑意义。
PWM发生器的模式控制,包括故障条件处理,都通过PWMnCTL 寄存器指定。PWMnCTL 寄存器同样用于选择是将故障条件持续到和外部条件一样长,还是锁存起来直到软件清除故障条件。最后,这个寄存器使能一个计数器,用来扩展外部事件的故障条件事件,以确保持续时间达到一个最小值。最小故障周期计数在 PWMnMINFLTPER 寄存器中指定。
PWMnFLTSTAT0 和 PWMnFLTSTAT1 寄存器中提供了与具体故障原因相关的状态。
PWMnFLTSTAT0 和 PWMnFLTSTAT1 反映所有故障源的状态,而不论该特定发生器启用了哪些故障源。
通过配置 PWMINTEN 寄存器可将 PWM 发生器故障条件提升到控制器中断。
18.3.9 输出控制块
输出控制块在 pwmA’ 和 pwmB’ 信号作为 MnPWMn 信号发送到引脚之前负责对这两个信号做最后的调整。通过一个寄存器,PWM 输出使能 (PWNENABLE) 寄存器,可以对实际送到引脚的那组PWM 信号进行修改。例如,这个功能可被用来通过对单个寄存器执行写操作来与无刷直流电机通信(不需要修改单个的PWM发生器,而只需要通过反馈控制回路的修改即可)。另外,通过 PWM更新使能 (PWMENUPD)寄存器,可以对 PWMENABLE 寄存器中位更新进行配置,以便能够立即,或局部、全局同步至下一个同步更新。
在故障条件下,PWM 输出信号 MnPWMn 通常要求驱动为安全的值,这样也可安全控制外部的设备。PWMFAULT 寄存器指定故障条件下是继续驱动已生成的信号,还是驱动在PWMFAULTVAL寄存器中编码指定的信号。
用 PWM 输出反相 (PWMINVERT) 寄存器可以将任何 MnPWMn信号最终反相,把他们从默认的高电平有效变成低电平有效。就算是一个值在 PWMFAULT 寄存器中使能并在PWMFAULTVAL 寄存器中指定,照样可以反相。换句话说,
如果 PWMFAULT、PWMFAULTVAL 和PWMINVER寄存器中的某位已置位,MnPWMn 信号的输出将是 0,并不是 PWMFAULTVAL寄存器所指定的 1。
LES 硬件介绍(12)正交编码接口QEI
19 正交编码接口(QEI)
19.1 结构框图
• 19.2 信号描述
• 19.3 功能说明
19 正交编码接口(QEI)
正交编码器(又名双通道增量式编码器),用于将线性位移转换成脉冲信号。通过监控脉冲的数目和两个信号的相对相位,用户可以跟踪旋转的位置、方向和速度。此外还有第三个通道,称为索引信号,可用来对位置计数器进行复位,以确定绝对位置。
微控制器包括两个正交编码器接口 (QEI) 模块。每个 QEI模块对正交编码器轮产生的代码进行解码,将它们解释成位置对时间的积分,并确定旋转的方向。另外,该接口还能捕获编码器转轮的运行速率。
微控制器包含两个 QEI 模块,可同时控制两个电机,并具有以下特性:
使用位置积分器来跟踪编码器的位置
输入可编程噪音过滤
使用内置的定时器进行速率捕获
QEI 输入的频率高达 1/4 处理器频率(例如,50 MHz系统可达 12.5 MHz)。
以下情况下产生中断:
检测到索引脉冲
• – 速度定时器发生计满返回事件
• – 旋转方向发生改变
• – 检测到正交错误
19.1 结构框图
图19-1显示了 微控制器QEI 模块的内部结构图。该框图中的 PhA 和 PhB 输入是在外部信号 PhAn 和 PhBn 经过图19-2 所示反相和相位交换逻辑后,进入正交编码器的内部信号。QEI 模块具有反转和/或交换输入信号的功能。
注意: 本章所提及 PhA 和 PhB 均指内部 PhA 和 PhB 输入,它们在外部信号 PhAn 和 PhBn 经过反相和相位交换逻辑后进入正交编码器,而这些逻辑通过 QEI 控制(QEICTL) 寄存器使能。
19.2 信号描述
下面的表格列出了 QEI 模块的外部信号,并描述了每个信号的功能。对某些GPIO引脚是QEI引脚是可选的并且复位的时候默认是GPIO引脚。在标题"管脚复用 / 分配"栏下列出了可用的配置成QEI的GPIO引脚。将 GPIO 备用功能选择(GPIOAFSEL) 寄存器中的 AFSEL 位置位,以便选择QEI 功能。必须将括号中的数字写入 GPIO 端口控制 (GPIOPCTL)寄存器(590页)的 PMCn 域中,以便把 QEI 信号分配给指定 GPIO 端口管脚。有关如何配置 GPIO 的更多信息,请参阅“通用输入/输入端口(GPIOs)”(553页)。
19.3 功能说明
QEI模块对正交编码器轮产生的两位格雷码(gray code)进行解码,将它们解释成位置对时间的积分并确定旋转的方向。另外,该接口还能捕获编码器转轮的运行速率。
虽然必须在使能速度捕获前使能位置积分器,但仍然可以单独使能位置积分器和速度捕获。PhAn和 PhBn 这两个相位信号在被 QEI 模块解码前可以进行交换,以改变正向和反向的意义和纠正系统的错误接线 (miswiring)。另外,相位信号也可以解释为时钟和方向信号,将它们作为某些编码器的输出。
QEI模块输入引脚上有数字噪音过滤器使能它可以避免伪动作。噪音过滤要求在更新边沿探测器之前输入稳定的连续时钟指定数字。将 QEI 控制 (QEICTL) 寄存器中的 FILTEN 位置位可以启用该滤波器。输入信号更新的频率可以用QEICTL 寄存器中的 FILTCNT 位域编程确定。
QEI 模块支持两种信号操作模式:正交相位模式和时钟/方向模式。在正交相位模式中,编码器产生两个相位差为90度的时钟信号;它们的边沿关系被用来确定旋转方向。在时钟/方向模式中,编码器产生一个时钟信号和一个方向信号,分别表示步长和旋转方向。这两种模式的选择由 QEICTL 寄存器中的 SIGMODE 位确定。
在将 QEI 模块设置为使用正交相位模式(SigMode 位为 0)时,位置积分器的捕获模式可设置成在PhA 信号的上升和下降沿或是在 PhA 和 PhB 的上升和下降沿对位置积分器进行更新。在 PhAPhB 的上升和下降沿上更新位置计数器可获得更高精度的数据(更多位置计数),但位置计数器的计数范围却相对变少。
当 PhA 的边沿超前于 PhB 的边沿时,位置计数器加 1。当PhB 的边沿超前于 PhA 的边沿时,位置计数器减 1。当一对上升沿和下降沿出现在其中一个相位上,而在其它相位上没有任何边沿时,这表示旋转方向已经发生了改变。
位置计数器在下列其中一种情况时将自动复位:1、检测到索引脉冲;2、位置计数器的值达到最大值。复位模式由QEI 控制 (QEICTL) 寄存器的 ResMode 位确定。
当 RESMODE 位为 1 时,位置计数器在检测到索引脉冲时复位。在该模式下,位置计数器的值限制在[0:N-1]内,N为编码器轮旋转一圈得到的相位边沿数。QEI 最大位置(QEIMAXPOS) 寄存器必须设置为 N-1,这样,从位置 0 反向就可以使位置计数器移到 N-1。在该模式中,一旦出现索引脉冲,位置寄存器就包含了编码器相对于索引(或发起)位置的绝对位置。
当 RESMODE 位为 0 时,位置计数器的范围限制在 [0:M]内,M 为可编程的最大值。在该模式中,位置计数器将忽略索引脉冲。
速度捕获包含一个可配置的定时器和一个计数寄存器。定时器在给定时间周期内对相位边沿进行计数(使用与位置积分器相同的配置)。控制器通过 QEI 速度 (QEISPEED)寄存器来获得上一个时间周期内的边沿计数值,而当前时间周期的边沿计数在 QEI 速度计数器 (QEICOUNT) 寄存器中进行累加。当前时间周期一结束,在该段时间内计得的边沿总数便可以从 QEISPEED 寄存器中获得(上一个值丢失)。这时 QEICOUNT 寄存器清零,并在一个新的时间周期开始计数。在给定时间周期内所计得的边沿数目与编码器的速度成正比例。
图19-3 显示了 微控制器正交编码器如何将相位输入信号转换为时钟脉冲、方向信号,以及速度预分频器方式(在4 分频模式中)。
定时器的周期可通过指定 QEILOAD 寄存器中定时器的装载值来确定。定时器到达 0 时可触发一次中断,硬件将 QEILOAD的值重新装载到定时器中,并继续递减计数。在编码器的速度较低的情况下,需要一个较长的定时器周期,以便捕获足够多的边沿,从而使得结果有意义。在编码器速度较高的情况下,可以使用较短的定时器周期也可以使用速度预分频器。
可以使用下面的等式将速率计数器的值转换为rpm(每分钟的转数):
rpm = (clock * (2 ^ VELDIV) * SPEED * 60) ?(LOAD * ppres)
此处,clock 表示控制器的时钟速率,ppr 表示实际编码器循环一次的脉冲数edges 等于 2 或 4,根据 QEICTL 寄存器中设置的捕获模式来决定(CAPMODE 设为 0 时,edges值为 2,
资料仅供学习使用
如有错误欢迎留言交流
上理考研周导师的其他专栏:
光电融合集成电路技术 电路原理
C语言 复变函数与积分变换
单片机原理
模式识别原理
数字电子技术
自动控制原理 传感器技术
模拟电子技术
数据结构
概率论与数理统计
高等数学
传感器检测技术
智能控制
嵌入式系统
图像处理与机器视觉
热工与工程流体力学
数字信号处理
线性代数
工程测试技术
大学物理
上理考研周导师了解更多