【英飞凌IFX TC3XX Mcal】AutoSAR Mcal PWM模块配置详解(3)

【英飞凌IFX TC3XX Mcal】AutoSAR Mcal PWM模块配置详解(3)

首先我们要理解 AUTOSAR (AUTomotive Open System ARchitecture)是一个基于汽车的开源架构,而MCAL是其硬件抽象层,用于与底层硬件进行交互。

以下是一种基本的途径来配置MCAL PWM模块:

1. 了解PWM模块接口和架构

  • 接口:

    • Pwm_Init: 用于初始化PWM驱动。
    • Pwm_DeInit: 用于去初始化PWM驱动。
    • Pwm_SetDutyCycle: 用于设置PWM通道的占空比。
    • Pwm_SetPeriodAndDuty: 用于设置PWM通道的周期和占空比。
    • Pwm_SetOutputToIdle: 用于设置PWM输出到空闲状态。
  • 架构:

    • Layered Architecture:
      • Application Layer: 包含AUTOSAR的SWC(软件组件)和RTE(运行时环境)。
      • Runtime Environment (RTE): 作为SWC与Bsw之间的接口。
      • Basic Software (Bsw): 包含MCAL和ECUAL。

2. 配置PWM模块

配置PWM模块涉及配置MCAL模块以与目标硬件正确交互。这样的配置通常涉及以下步骤:

2.0 PORT模块配置(配置PWM之前需要先对PORT进行端口复用为ATOM/TOM)
2.0.1 配置PORT模块

在这里插入图片描述

2.0.1 查DataSheet找到PWM对应的片选

在这里插入图片描述

2.1 PWM general通用配置

在这里插入图片描述

  1. PwmDevErrorDetect:将默认错误跟踪器(Det)的检测和通知开关打开或关闭。一版在开发阶段打开,在PWM发生错误的时候,定位到错误信息。
  2. PwmDutycycleUpdatedEndperiod:启用开关,以便在当前周期结束时更新占空比参数。PWM_VARIABLE_PERIOD通道类不会受到此参数设置的影响。
  3. PwmIndex:指定此模块实例的InstanceId。如果只有一个实例存在,则其Id应为0。
  4. PwmNotificationSupported:切换开关以表示支持通知。
  5. PwmChannelCoherentSelection:启用开关,以在当前周期结束时逐通道更新周期/占空比参数。打开此参数将使PwmDutycycleUpdatedEndperiod和PwmPeriodUpdatedEndperiod过时。
  6. PwmDutyShiftInTicks:PWM占空比类型开关:禁用 - 占空比和移位值以百分比表示。启用 - 占空比和移位值以计时器滴答数表示。用户必须根据此选择输入正确的PwmDutycycleDefault和PwmShiftValue值。
  7. PwmPowerStateAsynchTransitionMode:启用/禁用PWM驱动程序对异步电源状态转换的支持。
  8. PwmInitCheckApi:将服务Pwm_17_GtmCcu6_InitCheck()从代码中添加/删除。
  9. PwmMultiCoreErrorDetect:将多核错误检测和通知的开关打开或关闭。
  10. PwmPeriodUpdatedEndperiod:启用开关,以便在当前周期结束时更新周期参数。PWM_FIXED_PERIOD、PWM_FIXED_PERIOD_SHIFTED和PWM_FIXED_PERIOD_CENTER_ALIGNED通道类不会受到此参数设置的影响。
  11. PwmHandleShiftByOffset:启用特殊处理移位通道的开关。
  12. PwmEnable0Or100DutyNotification:开关用于启用变量和固定周期通道的0%和100%占空比的通知。
  13. PwmSafetyEnable:启用/禁用安全检查和所有相关通知。
2.2 配置PWM Channel(重点)
2.2.1 配置PWM Channel

在这里插入图片描述

2.2.2 配置具体参数

在这里插入图片描述

2.2.3 PwmChannelClass配置PWM输出模式

在这里插入图片描述

2.2.4 设置回调函数Notification

在这里插入图片描述

2.2.5 配置GTM通道

在这里插入图片描述
在这里插入图片描述

这里面为什么选择Atom4_6,是由于之前Port模块P20_0端口复用为Tout59,这里我们查3xx_Ts手册,23.25.6.1 GTM Outputs to Port Connections该章节,找到对应的P20_0,选择自己想要的GTM输出的通道,本例选择的是Atom4_6。具有高精度的PWM输出

在这里插入图片描述

在这里插入图片描述

2.3 配置MCU的GTM模块
2.3.1 MCU模块中,这两部分涉及到GTM相关的配置

在这里插入图片描述

2.3.2 配置相关的GTM分频系数

这里最终算出的分频系数CmuConf1 是 2.5MHz,Tick精度为1/2.5Mhz = 40ns,在乘以之前在PWM模块配置的精度125,正好是50us,即20KHz

在这里插入图片描述

2.3.3 选择Atom4的配置项

在这里插入图片描述

2.3.3 将Atom4_6映射到对应的Port_pin引脚上

在这里插入图片描述

2.3.4 配置硬件相关的GTM -> McuHardwareResourceAllocationConf

在这里插入图片描述

在这里插入图片描述

2.3.5 将ATOM4_6选为PWM功能

在这里插入图片描述

3. 编写测试代码

以下是一个简化的AUTOSAR标准下PWM的测试代码示例。注意,这只是一个高级概述,实际代码将依赖于您的硬件和软件配置:

在这里插入图片描述

在这里插入图片描述

#include "Pwm.h"

void main(void) 
{
    // 初始化PWM
    Pwm_Init(&Pwm_Config);

    // 设置PWM通道0的周期和占空比
    Pwm_SetPeriodAndDuty(0, 2000U, 1000U);

    while(1) 
    {
        // 循环体,您可以根据需要添加其他代码
    }
}

在上面的代码中:

  • 我们首先包含Pwm.h头文件,它包含PWM驱动的API定义。
  • main函数中,我们首先调用Pwm_Init函数来初始化PWM驱动,传递一个指向PWM配置结构的指针。
  • 然后我们调用Pwm_SetPeriodAndDuty函数来设置PWM通道0的周期和占空比。
  • 最后,我们进入一个无限循环,在这里你可以添加更多的代码来执行其他任务。

请注意,你需要配置PWM配置结构Pwm_Config,这将包含你在EB tresos Studio中配置的所有PWM配置。

SetPeriodAndDuty`函数来设置PWM通道0的周期和占空比。

  • 最后,我们进入一个无限循环,在这里你可以添加更多的代码来执行其他任务。

请注意,你需要配置PWM配置结构Pwm_Config,这将包含你在EB tresos Studio中配置的所有PWM配置。

我希望这对你有所帮助!如果你有任何更具体的问题,或者需要更多的细节,请告诉我!

  • 4
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

艾格北峰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值