PWMV2触发和中断功能
概述
当PWM需要更复杂的控制逻辑或者需要对某些事件作出即时响应时,中断管理器就显得尤为重要。此外,一些高级特性,如相位同步、故障保护模式等,也可能依赖于事件触发功能来实现。触发输出可以使PWM的触发更加灵活和智能化,提高系统的响应性和稳定。
中断
支持的中断
- 比较值匹配中断
比较值匹配中断是指计数器计数到比较值时,生成比较值匹配事件,状态标志位会显示产生比较事件的CMP号 - 计数器重载中断
计数器重载中断是指,计数器计数到重载值时,生成计数器重载事件,标志位会显示发生计数器重载的计数器的编号 - 输入捕获中断
输入捕获中断是指,PWMv2 的输入捕获模块,在捕捉到输入信号的上升沿或者下降沿,生成输入捕获事件 - 故障保护中断
故障保护中断是指,故障发生时,生成故障保护事件 - Burst 发波完成中断
Burst 发波完成中断是指,计数器生成完指定数目的 PWM 周期,也就是发生过指定次数的重载后后,生成 Burst 发波完成事件
中断配置代码
打开比较器17的比较器匹配中断,使能PWM1的中断
pwmv2_enable_cmp_irq(PWM, PWMV2_CMP_INDEX(17));
intc_m_enable_irq_with_priority(IRQn_PWM1, 1);
中断代码,中断函数中需要清除响应的中断标志位
SDK_DECLARE_EXT_ISR_M(IRQn_PWM1, isr_pwm1)
void isr_pwm1(void)
{
}
触发
PWMv2 设计中集成了 8 个通用触发输入信号(TRIG_IN),这些输入信号可以源自 PWMv2 模块外部的其他组件或外设。此特性使得 PWMv2 能够与其他系统模块无缝协作,确保了不同功能单元之间的精确同步和协调工作。例如,在复杂的控制系统中,一个信号的状态变化可以通过触发输入信号直接影响 PWM 输出的行为,从而实现即时响应。
此外,PWMv2 还提供了 8 个触发输出通道,进一步增强了其作为控制中心的功能,这不仅增加了系统的灵活性,还为开发人员提供了一个强大的工具,用于构建高度集成且响应迅速的嵌入式解决方案。
通过精心设计的触发输入与输出机制,PWMv2 成为了连接和协调各个硬件组件的关键桥梁,支持了更加复杂和精细的控制逻辑,同时简化了系统集成过程。
触发输入
PWMv2 的通用触发输入信号(TRIG_IN)可以用于多种控制和同步功能,使系统更加灵活和响应迅速。以下是这些触发输入的主要用途
-
故障恢复 :
- 当系统在故障状态时,此触发信号可以帮助系统快速恢复到正常工作状态。
-
同步故障输入:
- 触发输入 0 至 3 分别为特定的 PWM 对提供同步触发信号:
- 输入 0:PWM0 和 PWM1
- 输入 1:PWM2 和 PWM3
- 输入 2:PWM4 和 PWM5
- 输入 3:PWM6 和 PWM7
- 这些触发信号用于确保相关 PWM 进入故障状态,但不支持用户自定义配对。
- 触发输入 0 至 3 分别为特定的 PWM 对提供同步触发信号:
-
强制输出模式控制:
- 此触发信号允许硬件强制设置 PWM 输出模式,而不依赖于软件指令。
-
强制输出模式更新:
- 触发信号用于将强制输出模式的配置从影子寄存器同步到实际工作的寄存器中,确保即时生效。
-
强制输出启用/禁用时机:
- 定义何时启用或禁用强制输出模式,通过硬件触发来精确控制这一过程。
-
计数器重载值更新:
- 该触发信号用于指定何时更新计数器的重载值,从而影响 PWM 波形。
-
计数器更新:
- 通过触发信号,可以从通用计算单元更新计数器值,实现动态调整。
-
计数器复位同步:
- 用于同步地复位计数器,确保所有相关操作在同一个时间点开始。
-
比较值更新:
- 指定何时更新比较值,这直接影响到 PWM 波形的生成逻辑。
触发输出
PWMv2 支持 8 个触发输出通道,用户可以通过 TRIGGER_CFG 寄存器 进行配置。这一特性允许用户选择多达 24 个比较值,当对应的计数器值与这些比较值匹配时,会生成比较事件,并以脉冲形式发送到其他模块或 I/O 引脚上。
具体来说,TRIGGER_CFG 寄存器中的 [TRIGGER_CFG_SEL] 位域 用于指定哪个比较值将被用作触发输出的源。每当计数器达到选定的比较值时,就会触发一个脉冲信号,该信号可以被路由到外部模块或系统中的其他部分,从而实现精确的时间控制和事件同步。
以下是更详细的解释:
- 触发输出通道:PWMv2 提供了 8 个独立的触发输出通道,每个通道都可以根据需要单独配置。
- 比较值选择:用户可以从 24 个预设的比较值中选择,当计数器达到所选比较值时,会触发相应的事件。
- 触发事件生成:一旦发生匹配的比较事件,系统将以脉冲形式生成触发信号,确保即时响应。
- 配置灵活性:通过 TRIGGER_CFG 寄存器中的 [TRIGGER_CFG_SEL] 位域,用户可以轻松指定哪一个比较值作为触发输出的依据,提供了高度的定制化能力。使用如下接口配置,比较器CMP4配置给通道0作为触发输出的源。
pwmv2_set_trigout_cmp_index(PWM, pwm_channel_0, 4);