基于EB_S32K3XX芯片的EMIOS_PWM的输出_1

发布于:2025-09-12 ⋅ 阅读:(17) ⋅ 点赞:(0)

由于初次学习EB,在这里同样是借助于官方的demo进行学习。导入官方基于EMIOS的PWM的EB工程和S32DS工程,先粗略的浏览一下相关配置。
这里使用的是S32K314芯片的开发板进行学习,首先打开EB的MCL模块,需要配置EMIOS的通道使用
在这里插入图片描述
这里可以看到有三路EMIOS通道可以使用,在此处点进去进行配置
在这里插入图片描述
此处对emios_1进行源通道配置,选用CH_23作为源时钟通道,采用向上计数法,初始化的频率周期值为32768,此处不需要重点关心,在之后的代码中还会重新配置。
再看看Port的配置,此处使用PTA29引脚配置为emios1_12作为一个PWM输出,
在这里插入图片描述
再看到PWM的eimos配置中,此处对emios1_CH12通道进行配置,选用OPWMB,官方解释为固定周期,我的理解即是在初始化完,进行配置时,便不能再控制其频率,但是通常不需要在控制过程中进行PWM的频率进行控制,这里选择OPWMB即可。分频系数为1,则代表使用的就是为源时钟,没有做任何分频
在这里插入图片描述
在这里插入图片描述
同时需要在PWM_CHANNEL中再对PWM进行配置,会生成一个对应的序列号,再代码配置中会用到,此处0为EIOMOS1_22。

此处再看一下,MCU的时钟配置,EMIOS模块使用的时钟为CORE_CLK,此处为48M,可能官方考虑到一些用户使用的板子没有外部晶振,所以此处选用的源时钟为内部FIRC时钟
在这里插入图片描述
在这里插入图片描述
再回到代码中,采用的也是常规的初始化方案,在PWM初始化完成后,需要配置EMIOS的计数周期(频率),如果需要产生一个10Khz的波形,此处EMIOS的满篇计数值应该如何配置呢?
emios1使用的源时钟为48M,代表每一个计数周期为1/48000000 S,而10khz的周期为1/10000,所以用1/10000除以1/48000000,可以得出计数值为4800,所以在Mcl_Emios_SetCounterBusPeriod函数中,初始化时,装填4800即可。
而关于PWM周期的控制,官方的给定使用的函数为Pwm_SetDutyCycle,第一个参数传递EB中PWM_CHANNEL的序号值,第二个参数代表占空比,但是100%占空比为0X8000 ,0%占空比为0X0000,所以为了实现占空比的传递,此处传入的值需要用0X8000*占空比。

/*==================================================================================================
*   Copyright 2020 - 2025 NXP
*
*   NXP Confidential and Proprietary. This software is owned or controlled by NXP and may only be used strictly
*   in accordance with the applicable license terms. By expressly accepting
*   such terms or by downloading, installing, activating and/or otherwise using
*   the software, you are agreeing that you have read, and that you agree to
*   comply with and are bound by, such license terms. If you do not agree to
*   be bound by the applicable license terms, then you may not retain,
*   install, activate or otherwise use the software.
*
*   This file contains sample code only. It is not part of the production code deliverables.
==================================================================================================*/

#ifdef __cplusplus
extern "C" {
   
   
#endif


网站公告

今日签到

点亮在社区的每一天
去签到