0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

PWM模块在计数过程中可以根据哪三种配置trigger信号

恒美股份 来源:华芯微特32位MCU 作者:华芯微特32位MCU 2021-08-09 17:53 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

SWM201系列所有型号PWM操作均相同,不同型号PWM通道数可能不同。使用前需使能PWM模块时钟。PWM模块用于实现芯片输出特定的方波,控制外部元器件,如步进电机等。

计数器可以通过APB总线读写寄存器、和外部硬件同时控制,实现计数过程的控制。同时,CPU和外部硬件也可以共同实现对输出PWM信号的控制。

PWM模块提供了2组(PWM0、PMW1)、8路(PWM0A、PWM0B、PWM0AN、PWM0BN、PWM2A、PWM2B、PWM2AN、PWM2BN)独立通道,支持边沿模式、中心对称模式。

中心对称模式下,输出是互补输出。如PWM0A驱动PWM0A和PWM0AN两个输出信号,两个信号周期相等、电平值相反,且可设置死区。

程序中配置如下(SWM201内置PN预驱):

static void PWM_Init (void)

{

PWM_InitStructure PWM_initStruct;

PORT_Init(PORTA, PIN5, PORTA_PIN5_PWM1AN, 0);

PORT_Init(PORTA, PIN4, PORTA_PIN4_PWM1BN, 0);

PORT_Init(PORTA, PIN3, PORTA_PIN3_PWM0AN, 0);

PORT_Init(PORTA, PIN2, PORTA_PIN2_PWM1A, 0);

PORT_Init(PORTA, PIN1, PORTA_PIN1_PWM1B, 0);

PORT_Init(PORTA, PIN0, PORTA_PIN0_PWM0A, 0);

//PWM引脚初始化

PWM_initStruct.Mode = PWM_CENTER_ALIGNED;

//中心对齐模式

PWM_initStruct.Clkdiv = 1;

//分频F_PWM = 60M/1 = 60M

PWM_initStruct.Period =10000;

//周期:60M/6000 = 1KHz,中心对称模式下频率//降低到500Hz

PWM_initStruct.HdutyA = 2500; //占空比:2000/10000 = 25%

PWM_initStruct.DeadzoneA = 50; //死区时间:50/60M

PWM_initStruct.IdleLevelA = 0; //停止状态下PWMxA输出电平

PWM_initStruct.IdleLevelAN= 0; //停止状态下PWMxAN输出电平

PWM_initStruct.OutputInvA = 0; //PWMxA输出未取反

PWM_initStruct.OutputInvAN= 0; //PWMxAN输出未取反

PWM_initStruct.HdutyB = 1500;

PWM_initStruct.DeadzoneB = 50;

PWM_initStruct.IdleLevelB = 0;

PWM_initStruct.IdleLevelBN= 0;

PWM_initStruct.OutputInvB = 0;

PWM_initStruct.OutputInvBN= 0;

PWM_initStruct.UpOvfIE = 0;

PWM_initStruct.DownOvfIE = 0;

PWM_initStruct.UpCmpAIE = 1; //开启上升沿比较器PWM0A匹配中断使能

PWM_initStruct.DownCmpAIE = 0;

PWM_initStruct.UpCmpBIE = 0;

PWM_initStruct.DownCmpBIE = 0;

PWM_Init(PWM0, &PWM_initStruct);

PWM_initStruct.UpCmpAIE = 0; //屏蔽PWM1A中断

PWM_Init(PWM1, &PWM_initStruct);

PWM_Start(PWM0_MSK | PWM1_MSK);

//启动PWM,开始PWM输出

PWM_OutMask(PWM1, PWM_CH_B, PWM_EVT_1, 0, PWM_EVT_1, 1);

//挖坑功能设置:PWM1B和PWM1BN在event1为高时分别输出0和1

PWM_CmpTrigger(PWM0, 750, PWM_DIR_UP, 40, PWM_TRG_1, 1);

//设置ADC采样点(ADC采样设置请查看“SWM20x系列电机框架搭建:ADC篇”)

}

TRIGGER控制:

PWM模块在计数过程中,可以根据输出三种trigger信号:

01

PWM计数器比较匹配触发:PWM计数器在计数过程中,当计到TRIG_CNT中配置的参考值时,就会产生一个周期的trig信号。根据配置,可以将该trig信息映射到输出的trig[7:0]信号上,且输出宽度可以配置,以4个计数周期为单位进行设置,最小长度为0个(即不输出PWM_TRIG,只输出ADC_TRIG),最大长度为252个计数当重复计数功能有效时,trig信号会在最后一次重复计数时产生。

02

ADC触发:在PWM_TRIG输出宽度的正中间,会输出一个pclk的ADC_TRIG信号,用于触发ADC采样。

03

PWM计数器溢出触发:当计数器溢出TRIG使能,且计数器发生向上溢出或向下溢出时,会产生一个pclk周期的TRIG信号,与自定义TRIG一致,可以根据配置将该trig信息映射到输出的trig[7:0]信号上。TRIGGER控制波形如下图所示:

触发SARADC采样:

PWM在任意模式下可以触发ADC,每一路输出独立的ADC触发信号,且每个周期可以设置1个ADC触发点,每个PWM只输出一个触发信号,不区分A.B分别触发。将SARADC配置寄存器(CTRL)中TRIG方式设置为PWM触发。每路PWM对应1个ADTRG值,当PWM计数到指定值,可触发ADC进行采样。具体配置方式如下:

配置PWMx路触发ADC控制寄存器,设置触发点是否有效以及PWM触发ADC时间点。

配置ADC的触发方式为PWM触发

使能PWM模块EN位,当计数值到达MATCH设置值时,触发ADC配置寄存器(CTRL)中选中的通道(CHx)进行采样,采样完成后,将产生EOC标志位,并产生ADC中断。

编辑:jq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • cpu
    cpu
    +关注

    关注

    68

    文章

    11370

    浏览量

    226394
  • PWM
    PWM
    +关注

    关注

    116

    文章

    5904

    浏览量

    227098
  • ADC采样
    +关注

    关注

    0

    文章

    134

    浏览量

    13621

原文标题:SWM20x系列电机框架搭建:PWM(电机)篇

文章出处:【微信号:gh_737991c81b3d,微信公众号:恒美股份】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    S32K396 eFlexPWM如何配置PWM周期和占空比的刻度

    ,无需 CPU 干预 运行时职责更新: 占空比可能会在运行时发生变化。必须进行更新仅在重新加载事件以防止输出故障。 需要澄清: 如何配置PWM周期和占空比的刻度 VALx 事件是
    发表于 05-14 06:12

    【RA-Eco-RA6M4开发板评测】PWM输出

    使用。 FSP配置PWM 打开RA Smart Configurator,配置界面里面依次打开“Pins->Peripherals->Timers:GPT”
    发表于 11-09 21:30

    HbirdV2-SoC自带pwm配置介绍

    1 队伍介绍 本篇主要介绍蜂鸟HbirdV2-SoC自带外设PWM配置 2 PWM寄存器介绍 芯来的e203官方手册,外设部分对
    发表于 10-30 06:53

    利用Zone Trigger轻松捕捉复杂信号

    Zone Trigger(区域触发) 通过直观易用的图形化“区域”功能,解决复杂的触发难题。该功能可增强主触发器的功能,明确显示信号必须出现或禁止出现的位置,从而实现精确的采集触发。
    的头像 发表于 10-22 14:18 3037次阅读
    利用Zone <b class='flag-5'>Trigger</b>轻松捕捉复杂<b class='flag-5'>信号</b>

    UPS不间断电源放电过程中的注意事项

    UPS日常的使用过程中,只有定期对UPS放电才能延长UPS的使用寿命,UPS 电源电池需要每个月进行一次充放电,怎样对UPS进行放电才能让其保持最佳工作状态? 现在,由汇智天源工
    的头像 发表于 10-11 11:33 879次阅读
    UPS不间断电源<b class='flag-5'>在</b>放电<b class='flag-5'>过程中</b>的注意事项

    大电流起弧过程中电弧声压/超声波信号的特征提取与故障诊断

    大电流起弧过程中,电弧的燃烧会伴随声压与超声波信号的产生,这些信号并非杂乱无章,而是与电弧的燃烧状态、故障类型紧密相关。正常起弧时,电弧燃烧稳定,声压与超声波
    的头像 发表于 09-29 09:27 781次阅读
    大电流起弧<b class='flag-5'>过程中</b>电弧声压/超声波<b class='flag-5'>信号</b>的特征提取与故障诊断

    对于新唐的8051芯片,Keil Debug模式下的单步执行过程中定时器可以停止吗?

    对于新唐的8051芯片,Keil Debug模式下的单步执行过程中,定时器可以停止吗?
    发表于 08-26 06:33

    对于新唐的8051芯片,Keil Debug模式下的单步执行过程中,定时器可以停止吗?

    对于新唐的8051芯片,Keil Debug模式下的单步执行过程中,定时器可以停止吗?
    发表于 08-25 07:57

    静力水准仪测量过程中遇到误差如何处理?

    静力水准仪测量过程中遇到误差如何处理?静力水准仪工程沉降监测中出现数据偏差时,需采取系统性处理措施。根据实际工况,误差主要源于环境干扰、设备状态、安装缺陷及操作不当四类因素,需针对
    的头像 发表于 08-14 13:01 1127次阅读
    静力水准仪<b class='flag-5'>在</b>测量<b class='flag-5'>过程中</b>遇到误差如何处理?

    使用AURIX进行调试的过程中,如果进入某个函数的时候出现问题,是配置项的问题还是函数的变量的问题?

    使用AURIX进行调试的过程中,如果进入某个函数的时候出现问题,是配置项的问题还是函数的变量的问题?
    发表于 08-11 07:17

    TC377配置SMU FSP时,如何配置频率参数;三种模式有何区别,配置上有何区别?

    TC377配置SMU FSP时,如何配置频率参数;三种模式有何区别,配置上有何区别?
    发表于 08-08 07:48

    MEMS三种测温方式

    集成MEMS芯片的环境温度测量领域,热阻、热电堆和PN结原理是三种主流技术。热阻是利用热敏电阻,如金属铂或注入硅的温度电阻系数恒定,即电阻随温度线性变化的特性测温,电阻变化直接对应绝对温度,需恒流源供电。
    的头像 发表于 07-16 13:58 2032次阅读
    MEMS<b class='flag-5'>中</b>的<b class='flag-5'>三种</b>测温方式

    半导体硅片生产过程中的常用掺杂技术

    半导体硅片生产过程中,精确调控材料的电阻率是实现器件功能的关键,而原位掺杂、扩散和离子注入正是达成这一目标的核心技术手段。下面将从专业视角详细解析这三种技术的工艺过程与本质区别。
    的头像 发表于 07-02 10:17 2987次阅读
    半导体硅片生产<b class='flag-5'>过程中</b>的常用掺杂技术

    开关电源三种控制模式:PWM/PFM/PSM

    PWM/PFM/PSM 三种控制模式的定义通常来说,开关电源(DC-DC)有三种最常见的调制方式分别为: 脉冲宽度调制(PWM) 脉冲频率调制(PFM) 脉冲跨周期调制(PSM)
    发表于 06-09 16:11

    介绍三种常见的MySQL高可用方案

    方案——MHA(MySQL High Availability Manager)、PXC(Percona XtraDB Cluster) 和 Galera Cluster。我们将从原理、架构、优势和局限性等角度对比这三种方案,并探讨它们实际应用
    的头像 发表于 05-28 17:16 1521次阅读