【SemiDrive G9 系列软件开发】 PTG5.1.2 + MCAL_v1.3.0 PWM hands on

一、测试环境

        SemiDrive  支持系统 G9 系列目录中,PTG5.1.2 版本只适用于 G9H,其中 MCAL_v1.3.0 例程较为全面。最近进行了 PWM 模块的例程测试,操作过程 hands on 如下:

注:此版本使用 eMMC Only 的启动方式(拨码:0001),不使用 OSPI Flash。

硬件:SemiDrive G9H ref A02 图(1)

软件:PTG5.1.2 + MCAL_v1.3.0

       软件环境搭建以及 G9H Ref A02 操作方法参考:《SD_G9_Quick_Start_Rev2.4.pdf》

图(1)



2024/10/28~11/03 万圣节特别企划,点击此处参与有奖活动吧~ 


二、配置&Demo

  1. 模块介绍:

       PWM 驱动用于产生脉冲宽度调制 ( Pulse-Width Modulation ) 波形。共包含 8 个 PWM HW Module,8 个T imer 控制输出的 TIMER PWM HW module,其中每个 Module 支持 4 路 PWM 波形输出,总共最多支持 64 路 PWM 波形输出。本次实验使用 safety 域的 TIMER2。

PWM

domain

PWM1 ~ PWM2

safety

TIMER1 PWM ~ TIMER2 PWM

PWM3 ~ PWM8

ap

TIMER3 PWM ~ TIMER8 PWM


表一 PWM default 资源分布
 

        本次实验参考已引出排线的引脚,计划使用 TIMER PWM HW module 2 的 CH2 作为 PWM 的输出端。

图一 PWM 输出引脚

图一 PWM 输出引脚
 

  1. EB配置

参考硬件原理图,复用 GPIO_A0 功能为 TMR2_CH2,其余配置不动。如图二:

图二 引脚复用

图二 引脚复用

PwmChannelId: Pwm Id,注意该 Id 的值必须从 0 开始连续,最大值不超过 63

PwmHwModule: 芯片PWM Id 与 TIMER 实现的 PWM ID,PWM1~PWM8,TIMER PWM1~TIMER PWM8

       这里选用 TIMER_PWM_MODULE2

PwmDutyCycleDefault:Pwm 默认占空比设置,取值范围为 0~32768,对应占空比 0%~100%

PwmIdleState:Pwm Idle 状态时输出电平设置(PWM_LOW)

PwmPeriodDefault:Pwm 输出波形周期控制,其中最小 0,最大为 4.392,单位是秒

PwmPolarity:Pwm 输出波形极性控制(PWM_HIGH)

PwmHwOutPutChType:芯片 Pwm 输出通道选择,与 PwmHwModule 息息相关

       这里选用 PWM_OUTPUT_CH2

PwmMcuClockReferencePoint : Pwm 输入 clk 选择,无需配置

PwmChannelClass:Pwm 周期 PwmPeriodDefault 是否可 usr 设置

这里选用 PWM_VARIABLE_PERIOD:usr 可设置(否则调用设置周期和占空比接口时会有报错。)

PwmModuleFrequency:芯片PWM 时钟频率显示,不可配置(400:400Mhz)

PwmHwModulePrescaler:芯片PWM 时钟频率分频

注意:真实分频倍数为 PwmHwModulePrescaler+1,例如设置为 39,实则为 40 倍分频

图三 PwmChannel

图三 PwmChannel

PwmDeinitApi:是否开放 Pwm Deinit 功能。

PwmSetDutyCycle:是否开放 Pwm duty 设置接口。

PwmSetOutputToIdle:是否开放 Pwm Idle 状态设置接口。

PwmSetPeriodAndDuty:是否开放 Pwm 周期与占空比设置接口。

这里需勾选,否则调用设置周期和占空比接口时会有报错。

PwmVersionInfoApi:是否开放获取版本号接口。

图四 PwmConfigurationOfOptApiService

图四 PwmConfigurationOfOptApiService

  1. 代码和Log

       实例中使用 Pwm_SetPeriodAndDuty 接口,可直接设置指定通道 PWM 的周期和占空比。经过 Pwm.c->Timer_Pwm_Ip.c 层层调用。将周期参数的值通过公式转换后,写入寄存器TIMER_PWM_CNT_G0_OVF(图五),其中周期参数的 1 个单元的时长代表 10ns。

图五 测试例程

图五 测试例程

图六 周期设置实现逻辑

图六 周期设置实现逻辑

对照 Log 和测量结果:

        Case 700:设置周期为 10ms,占空比为 37.5%  的 PWM 输出(图七),从数字示波器的测量结果来看符合预期(图八)。

图七 测试例程Log

图七 测试例程Log

图八 数字示波器测量结果

图八 数字示波器测量结果

三、参考文献

  1. 《SemiDrive_9Series_MCAL User Guide》
  2. 《G9 Series Processor Technical Reference Manual》

欢迎在博文下方留言评论,我们会及时回复您的问题。

如有更多需求,欢迎联系大联大世平集团 ATU 部门:atu.sh@wpi-group.com   
作者:Alan

更多资讯,请关注原文作者!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值