dsPIC33AKxxxMPSxxx的多个PWM之间触发输出关系简介
扫描二维码
随时随地手机看文章
每个PWM 发生器必须接收一个周期起始(SOC) 触发信号才能开始一个PWM 周期。触发信号可以由PWM 发生器本身(自触发)或其他外部触发源提供。SOC 触发信号可由以下三个来源产生:
•内部触发源,其时钟源由SOCS[3:0] 位选择(PGxCON[19:16])
•外部触发源,由PWM 控制输入(PCI) 同步模块选择
•软件触发请求,写入TRSET (PGxSTAT[7]) ,
任何PWM 发生器都可以充当“主机”,为其他PWM 发生器提供触发信号。可以实现多种触发配置,包括:
•多个具有独立周期的PWM 输出(PWM 发生器之间无需同步)
•多个具有同步周期的PWM 输出(同步操作)
•多个具有偏移相位关系的PWM 输出(触发操作)
通过将一个从PWM 发生器的SOCSx 位设置为另一个主PWM 发生器,并将主机的PGTRGSEL[2:0] 位(PGxEVT1[18:16]) 设置为000,即可实现同步操作。
这将选择主PWM的EOC 作为从PWM的SOC 触发器。当使用PGxTRIGy 对PWM 发生器进行相位偏移时,会出现最多5 个pwm_master_clk 的同步延迟。如果TRIG 值为0,仍会存在偏移。TRIGy 值可能需要根据应用进行补偿。
触发操作的实现方式类似,但需要设置主PWM的PGTRGSEL[2:0] 位(PGxEVT1[18:16]) 来选择其中一个PGxTRIGy 计数器(y = A 至F)。主PWM的TRIGy 寄存器中指定的值定义了从机与主机SOC 的触发偏移量。
SOCS[3:0] 控制位有两个特殊选择。当SOCS[3:0] = 0000 时,PWM 发生器由内部触发。
当SOSC[3:0] = 1111 时,未选择触发源。当PWM 发生器仅由软件触发(使用TRSET 位)或连接到PCI 同步模块的源触发时,此选项非常有用。在此模式下,下一个PWM 周期直到收到另一个触发信号才会启动。
PCI 同步模块可用的信号源包括外部信号,例如比较器事件和设备I/O 引脚等。PCI 同步模块的重要功能之一是将外部输入信号同步到PWM 发生器的时钟域。有关PCI 模块的更多信息,请参阅PWM 控制输入(PCI) 逻辑模块。只要模块处于启用状态,PCI 同步模块就可以与任何其他周期起始输入(SOCS[3:0])进行“或”运算。另一个PWM 发生器的触发输出也可用作SOC 事件。有关配置选项,请参阅事件选择模块。
针对上述的规格书中的触发关系,简单测试了PWM1触发PWM2,同时用PWM1触发PWM5进行验证,PWM1的触发信号为EOC信号,自身为自触发。
CH1-PWM1H-CH2-PWM2H-CH3-PWM5H
从上述波形可知,PWM1H和PWM2H之间的相位基本一致,PWM1H和PWM5H之间有一定延时,但不超过5nS,相对较小,可以忽略。
从上述波形可知,PWM1H和PWM2H之间的相位基本一致,PWM1H和PWM5H之间有一定延时,但不超过5nS,相对较小,可以忽略。
这里和dsPIC33AKxxxMPSxxx规格书中描述,会出现最多5 个pwm_master_clk 的同步延迟的说法也较为一致,这里PWM的分辨率为78pS,而pwm_master_clk设置为了800MHz,5个周期即为5.25nS左右。





