3181|8

2640

帖子

6

TA的资源

五彩晶圆(初级)

楼主
 

RT1052 (5) PWM [复制链接]

本帖最后由 xutong 于 2022-12-4 08:40 编辑

 

在mcuXpresso中,可以对PWM的时钟进行配置,从黄色框中可以看出来PWM1的时钟来源来自IPG。

图1:设置IPG时钟

CLOCK_SetDiv(kCLOCK_IpgDiv, 0x00); // Set IPG

设置时钟分频的函数

图2:PWM内部框图

图3:PWM 子模块框图

PWM的特性:

• 16 bits of resolution for center, edge-aligned, and asymmetrical PWMs

//16bit 中心值计数,沿对齐模式,不对称模式 适用各种复杂工况

• Fractional PWM clock generation for enhanced resolution of the PWM period and

duty cycle

• PWM outputs that can operate as complementary pairs or independent channels

// 可以使用PWM 做互补对称,或者独立通道

• Ability to accept signed numbers for PWM generation

• Independent control of both edges of each PWM output

• Support for synchronization to external hardware or other PWM

//支持外部信号对内部的PWM做同步

• Double buffered PWM registers

• Integral reload rates from 1 to 16

• Half cycle reload capability

• Multiple output trigger events can be generated per PWM cycle via hardware

// PWM可以触发各种事件

• Support for double switching PWM outputs

• Fault inputs can be assigned to control multiple PWM outputs

• Programmable filters for fault inputs

• Independently programmable PWM output polarity

• Independent top and bottom deadtime insertion

• Each complementary pair can operate with its own PWM frequency and deadtime

values

• Individual software control for each PWM output

• All outputs can be programmed to change simultaneously via a FORCE_OUT event

• PWM_X pin can optionally output a third PWM signal from each submodule

• Channels not used for PWM generation can be used for buffered output compare

functions

• Channels not used for PWM generation can be used for input capture functions

• Enhanced dual edge capture functionality

图4:PWM0模块时钟来源框图

/* pwm default config

* config->enableDebugMode = false;

* config->enableWait = false;

* config->reloadSelect = kPWM_LocalReload;

* config->clockSource = kPWM_BusClock;

* config->prescale = kPWM_Prescale_Divide_1;

* config->initializationControl = kPWM_Initialize_LocalSync;

* config->forceTrigger = kPWM_Force_Local;

* config->reloadFrequency = kPWM_LoadEveryOportunity;

* config->reloadLogic = kPWM_ReloadImmediate;

* config->pairOperation = kPWM_Independent;

*

*/

PWM default config 中配置时钟来源

typedef enum _pwm_clock_source

{

kPWM_BusClock = 0U, /*!< The IPBus clock is used as the clock */

kPWM_ExternalClock, /*!< EXT_CLK is used as the clock */

kPWM_Submodule0Clock /*!< Clock of the submodule 0 (AUX_CLK) is used as the source clock */

} pwm_clock_source_t;

PWM 可选的时钟来源

图5:PWM submodule 123的时钟来源

在PWM的demo程序里面有这么一段

图6:XBARA 片段

看的很迷茫,于是打开SDK API Refrence看看

图7:XBARA 相关函数描述

大概意思就是把pwm的fault(x)连接到高电平。程序如下所示

// 步骤2:新建PWM初始化函数

void RT1052_PWM_Init(void)

{

 

 

pwm_signal_param_t pwmSignal[2];

 

//步骤3:设置pwm的时钟,pwm的时钟来自ipg

//在这里设置ipg的分频 ,设置为0时候

CLOCK_SetDiv(kCLOCK_IpgDiv, 0x03); // Set IPG

 

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);

/* pwm default config

* config->enableDebugMode = false;

* config->enableWait = false;

* config->reloadSelect = kPWM_LocalReload;

* config->clockSource = kPWM_BusClock;

* config->prescale = kPWM_Prescale_Divide_1;

* config->initializationControl = kPWM_Initialize_LocalSync;

* config->forceTrigger = kPWM_Force_Local;

* config->reloadFrequency = kPWM_LoadEveryOportunity;

* config->reloadLogic = kPWM_ReloadImmediate;

* config->pairOperation = kPWM_Independent;

*

*/

pwm_config_t config;

//使用default的配置

PWM_GetDefaultConfig(&config);

 

/* 修改默认配置参数 */

/*新值在上一个pwm周期输出结束之后加载到缓冲寄存器中*/

config.reloadLogic = kPWM_ReloadPwmFullCycle;

/*PwmA 和 PwmB 作为互补通道,PwmA 作为主通道*/

config.pairOperation = kPWM_ComplementaryPwmA;

config.prescale = kPWM_Prescale_Divide_128;

config.enableDebugMode = true; // 使能DebugMode

 

//配置PWM1

PWM_Init(PWM1,kPWM_Module_0,&config);

 

/*配置pwm 参数*/

pwmSignal[0].pwmChannel = kPWM_PwmA; //指定pwm 通道

pwmSignal[0].level = kPWM_HighTrue; //设置输出极性

pwmSignal[0].dutyCyclePercent=20;//设置 pwm的占空比

pwmSignal[0].deadtimeValue = 0; //设定死区值

pwmSignal[1].pwmChannel = kPWM_PwmB;

pwmSignal[1].level = kPWM_HighTrue;

pwmSignal[1].dutyCyclePercent = 20;

pwmSignal[1].deadtimeValue = 0;

 

/*设置pwm 参数,包括pwm 的频率 占空比,死区时间等*/

PWM_SetupPwm(PWM1, kPWM_Module_0, pwmSignal, 2,\

kPWM_SignedEdgeAligned, PWM_frequency_Hz,PWM_SRC_CLK_FREQ);

 

/*设置Set LDOK 位,将初始化参数加载到相应的寄存器*/

PWM_SetPwmLdok(PWM1, kPWM_Control_Module_0 , true);

//开始发波

PWM_StartTimer(PWM1, kPWM_Control_Module_0 );

 

}

 

 

参考文档

野火RT1025 demo程序

NXP1052 RM2

NXP1052 SDK API Refrence

此帖出自NXP MCU论坛

最新回复

现在NXP的RT做的挺好的   详情 回复 发表于 2022-12-5 10:42
点赞 关注
个人签名

希望做一些大家觉得好用的东西!

 

回复
举报

6960

帖子

11

TA的资源

版主

沙发
 
NXP的功低还是非常好。
此帖出自NXP MCU论坛

点评

这颗是老freescale的人做的  详情 回复 发表于 2022-12-5 09:37
 
 
 

回复

2640

帖子

6

TA的资源

五彩晶圆(初级)

板凳
 
lugl4313820 发表于 2022-12-5 09:16 NXP的功低还是非常好。

这颗是老freescale的人做的

此帖出自NXP MCU论坛
 
个人签名

希望做一些大家觉得好用的东西!

 
 

回复

26

帖子

2

TA的资源

一粒金砂(中级)

4
 

现在NXP的RT做的挺好的

此帖出自NXP MCU论坛

点评

用起来  详情 回复 发表于 2022-12-5 13:31
 
 
 

回复

2640

帖子

6

TA的资源

五彩晶圆(初级)

5
 
hunter4051 发表于 2022-12-5 10:42 现在NXP的RT做的挺好的

用起来


此帖出自NXP MCU论坛
 
 
 

回复

2640

帖子

6

TA的资源

五彩晶圆(初级)

6
 
PWM.7z (18.21 MB, 下载次数: 5)
此帖出自NXP MCU论坛
 
个人签名

希望做一些大家觉得好用的东西!

 
 

回复

2640

帖子

6

TA的资源

五彩晶圆(初级)

7
 

上面是工程文件

此帖出自NXP MCU论坛
 
个人签名

希望做一些大家觉得好用的东西!

 
 

回复

2640

帖子

6

TA的资源

五彩晶圆(初级)

8
 

要发更精确的的PWM波形  可以调用这个函数

/*!
 * brief Updates the PWM signal's dutycycle with 16-bit accuracy.
 *
 * The function updates the PWM dutycyle to the new value that is passed in.
 * If the dead time insertion logic is enabled then the pulse period is reduced by the
 * dead time period specified by the user.
 *
 * param base              PWM peripheral base address
 * param subModule         PWM submodule to configure
 * param pwmSignal         Signal (PWM A or PWM B) to update
 * param currPwmMode       The current PWM mode set during PWM setup
 * param dutyCycle         New PWM pulse width, value should be between 0 to 65535
 *                          0=inactive signal(0% duty cycle)...
 *                          65535=active signal (100% duty cycle)
 */
void PWM_UpdatePwmDutycycleHighAccuracy(
    PWM_Type *base, pwm_submodule_t subModule, pwm_channels_t pwmSignal, pwm_mode_t currPwmMode, uint16_t dutyCycle)

 

此帖出自NXP MCU论坛
 
个人签名

希望做一些大家觉得好用的东西!

 
 

回复

2640

帖子

6

TA的资源

五彩晶圆(初级)

9
 

更新一下驱动子程序:

https://github.com/xutong-analog/fantasy/tree/main/RT1052/flexpwm

此帖出自NXP MCU论坛
 
个人签名

希望做一些大家觉得好用的东西!

 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
推荐帖子
触摸屏种类与工作原理

触摸屏的基本原理是,用手指或其他物体触摸安装在显示器前端的触控屏时,所触摸的位置(以坐标形式)由触摸屏控制器检测,并通过接 ...

不才小小分析下今年的题目~【2009年电子设计大赛题目分析一】

先声明一下,已经远离比赛多年,分析的有不是的地方请您包涵,并指正。 觉得有可取的地方,您就看看。谢绝板砖。 ============== ...

把小弟这两天DIY的过程分享一下,顺便晒一晒第二块板子O(∩_∩)O~

前两天做了个小板子,算是练了练手,承蒙大家夸奖 正好要开始做第二块板子,看到有朋友问了,就把过程也写一下吧,谈不上经验, ...

MDK STM32启动文件的详细分析(_main,map详细分析)

启动文件是用汇编写的,所以先花了点时间去看汇编指令,然后 根据cortex—M3等的手册去看这个启动文件,彻底了解了在main 函数 ...

最全的电路测试流程

当一个电路板焊接完后,在检查电路板是否可以正常工作时,通常不直接给电路板供电,而是要按下面的步骤进行,确保 ...

【树莓派Pico测评】-制作红外体温计( I2C接口测试+MLX90614)

本帖最后由 fxyc87 于 2021-2-7 16:46 编辑 我上个贴子发布了如何利用USB进行串口通信, 【树莓派Pico测评】- USB CDC串口 ...

【雅特力开发板 AT32F421 测评】+养了一只看门狗

养只狗玩玩呗。 AT32F421有2只狗,这次我们来用用独立看门狗。 538626 在绝大多少单片机中,独立看门狗模 ...

和Vicor工程师一起聊聊高效供电,了解无人机的模块化电源解决方案!

553971 商业无人机公司在有效载荷能力和飞行时间上展开竞争,这与无人机的尺寸、重量和功率(SWaP)成正比。影响无人机尺寸 ...

IPC-4552B-中文版-CN TOC印制板化学镀镍 浸金(ENIG)镀覆性能规范

IPC-4552B-中文版-CN TOC印制板化学镀镍 浸金(ENIG)镀覆性能规范 https://share.weiyun.com/aigOt6Uz

基于LP-MSPM0C1104的温度计

本帖最后由 lugl4313820 于 2024-8-7 15:37 编辑 【前言】 我在论坛参与了以旧换新!100套TI MSPM0整装待发,升级你的装备 ...

关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表