1、需求分析
目标是在s32k342的板子实现10k~20k的pwm输出,任意占空比
2、功能介绍
pwm输出的实现是依靠s32k3的emios模块功能,下面看下emios的硬件资源
2.1硬件资源
上图介绍了s32k342具有两个emios实体,每个实体有对应的属性
每个emios实体有4种不同的通道,分别为X,Y,G,H
每个emios具体的通道对应的通道类型
2.2 clock
由上图可以看出,emios的clock由system clokc提供,经过全局分频器后提供给所有channel,其中channel0/8/16/22/23为其他channel提供counter。所有通道配置请看下图。
2.3 pwm介绍
EMIOS模块可以配置成多种模式,普通PWM常用的Output PWM Buffered (OPWMB) mode模式
此模式下,必须选择一个MCB Up模式下驱动的外部计数器,AS1和BS1决定占空比。
3、EB配置
3.1 port配置
1.选择PTA2为emios输出引脚,通道为EMIOS1_CH19_Y
3.2 Mcl配置
使能emios支持
1、选择EIOS_1
2、时钟分频
1、选择EMIOS_CH_16为PTA2 pwm输出提供counter,此时pwm频率=160M/1/4000/1/1 = 40K
2、使能允许debuge模式,如果是PWM模式,需要使能PWM exclusive access
3.3 pwm配置
1.此页为配置使能pwm相关模式和一些api,按需配置
通道选择emios1_ch19,pwm模式选择OPWMB mode
引用mcl模块配置的masterbus
1、默认分频,配置必须和mcl模块中配置一致
2、占空比
3、时钟源选择系统时钟
4、代码调试
void Pwm_Init(const Pwm_ConfigType * ConfigPtr)
//pwm初始化
void Mcl_Emios_SetCounterBusPeriod(uint16 logicChannel, uint32 period, boolean syncUpdate)
//设置pwm频率
void Pwm_SetDutyCycle(Pwm_ChannelType ChannelNumber,
uint16 DutyCycle)
//设置pwm占空比
最后,看硬件输出效果