当前位置: 首页 > news >正文

RT1052的EPWM

文章目录

  • 1 EPWM介绍
    • 1.1 引脚
    • 1.2 时钟
    • 1.3 比较寄存器
  • 2 函数

1 EPWM介绍

RT1052 具有 4 个 eFlexPWM(eFlexWM1~eFlex_PWM4)。

  • 每个 eFlexPWM 可以产生四路互补 PWM即产生 8 个 PWM,也可以产生相互独立的 PWM 波。四路分别是模块0-3
  • 每个 eFlexPWM 具有各自的故障检电路,当故障发生时根据程序锁定 PWM 输出引脚的电平状态。

1.1 引脚

PWM_A 与 PWM_B 可以独立输出也可以作为互补对输出。

  • PWM_X 比较特殊,只有 eFlex PWM1 拥有 PWM_X 对应的外部输出引脚可直接输出 PWM。
  • eFlexPWM(eFlexWMM2~eFlex_PWM4) 只能通过 XBAR 映射到外部输出引脚才能输出 PWM。

1.2 时钟

在这里插入图片描述 - FLEXPWM 子模块可选的时钟源有 IPBus clock、EXT_CLK。

  • FLEXPWM 子模块 0 还可以选择 AUX_CLK_input 作为时钟源。

1.3 比较寄存器

比较寄存器用于产生 PWM 波,每个 FLEXPWM 拥有 6 个比较寄存器
在这里插入图片描述

  • 第一,只有eFlexPWM1拥有与PWMX直接对应的外部引脚,而其他FLEXPWM
    需要使用 XBAR 映射到相应的外部引脚才能输出 PWM。
  • 第二,比较寄存 0 和 1 可以输出 HalfComp 信号和 Mod Comp 信号,这两个信号可用作 eFlexPWM1 寄存器加载信号。
  • 比较寄存器 2 和 3 用于产生 PWM23
  • 比较寄存器 4 和 5 用于产生 PWM45
    • 根据寄存器配置不同,PWM23 和 PWM45 可以独立输出,也可以组成一对互补的 PWM 波

2 函数

CLOCK_SetDiv(kCLOCK_AhbDiv, 0x2); /* Set AHB PODF to 2, divide by 3 */CLOCK_SetDiv(kCLOCK_IpgDiv, 0x3); /* Set IPG PODF to 3, divede by 4 */

CLOCK_SetDiv

/* Set the PWM Fault inputs to a low value */XBARA_Init(XBARA1);XBARA_SetSignalsConnection(XBARA1, kXBARA1_InputLogicHigh, kXBARA1_OutputFlexpwm1Fault0);XBARA_SetSignalsConnection(XBARA1, kXBARA1_InputLogicHigh, kXBARA1_OutputFlexpwm1Fault1);XBARA_SetSignalsConnection(XBARA1, kXBARA1_InputLogicHigh, kXBARA1_OutputFlexpwm1234Fault2);XBARA_SetSignalsConnection(XBARA1, kXBARA1_InputLogicHigh, kXBARA1_OutputFlexpwm1234Fault3);

XBAR函数

typedef enum _pwm_chnl_pair_operation
{kPWM_Independent = 0U,  /*!< PWM A & PWM B operate as 2 independent channels */kPWM_ComplementaryPwmA, /*!< PWM A & PWM B are complementary channels, PWM A generates the signal */kPWM_ComplementaryPwmB  /*!< PWM A & PWM B are complementary channels, PWM B generates the signal */
} pwm_chnl_pair_operation_t;

模式配置。 A产生信号,B互补等。

 PWM_Init(PWM2,kPWM_Module_3,&pwm2sm3_config);       //初始化PWM2模块3

模块初始化

 /* Call the init function with demo configuration */PWM_DRV_Init3PhPwm();

初始化PWM波的配置

//设置PWM2,中央对齐模式
PWM_SetupPwm(PWM2,kPWM_Module_3,&pwm_ignal,2,kPWM_CenterAligned,fre,sourceclock);//使用了两个通道PWM_SetPwmLdok(PWM2,kPWM_Control_Module_3,true);    //设置PWM的load ok位
PWM_StartTimer(PWM2,kPWM_Control_Module_3);         //开启定时器

kPWM_CenterAligned 中央对齐模式


/* Update duty cycles for all 3 PWM signals */PWM_UpdatePwmDutycycle(BOARD_PWM_BASEADDR, kPWM_Module_0, kPWM_PwmA, kPWM_SignedCenterAligned, pwmVal);PWM_UpdatePwmDutycycle(BOARD_PWM_BASEADDR, kPWM_Module_1, kPWM_PwmA, kPWM_SignedCenterAligned, (pwmVal >> 1));PWM_UpdatePwmDutycycle(BOARD_PWM_BASEADDR, kPWM_Module_2, kPWM_PwmA, kPWM_SignedCenterAligned, (pwmVal >> 2));/* Set the load okay bit for all submodules to load registers from their buffer */PWM_SetPwmLdok(BOARD_PWM_BASEADDR, kPWM_Control_Module_0 | kPWM_Control_Module_1 | kPWM_Control_Module_2, true);

占空比更新。

http://www.lryc.cn/news/136562.html

相关文章:

  • k8s 安装istio (一)
  • vue 项目在编译时,总是出现系统崩的状态,报错信息中有v7 或者 v8 的样式-项目太大内存溢出
  • 低功耗蓝牙射频指纹识别
  • 怎么检测UI卡顿?(线上及线下)
  • Git 常用操作
  • 前端修改新增操作导致数据删除——js精度丢失
  • winform使用usercontrol 构建了一个复杂的列表,列表速度慢该如何优化?
  • Lnton羚通算法算力云平台如何在OpenCV-Python中使用cvui库创建复选框
  • 中项系统集成项目管理知识点汇总
  • Docker容器:docker基础及网络
  • Django实现音乐网站 ⑿
  • ORB-SLAM2学习笔记10之图像关键帧KeyFrame
  • 【ownCloud】添加信任域
  • C++--类型转换
  • 在服务器上部署 Nginx 并设置图片服务器
  • 使用NXP GUI GUIDER生成的GUI移植到雅特力MCU平台过程详解(ST/GD/国民/极海通用)
  • JVM——配置常用参数,GC调优策略
  • 使用IDEA把Java程序打包成jar
  • 元宇宙和数字孪生的异同探究
  • 初识微服务
  • 数据库锁的分类 各种锁
  • MySQL数据库软件
  • 无涯教程-PHP - preg_match_all()函数
  • Docker 练习2 安装MySQL
  • AndroidStudio 编译报错Unable to make field private final
  • linux 上安装es
  • 自然语言处理从入门到应用——LangChain:索引(Indexes)-[文本分割器(Text Splitters)]
  • Chrome如何安装插件(文件夹)
  • MySql 环境搭建
  • mysql 表的约束