【CP AUTOSAR】Pwm Driver分析和使用


前言

本文介绍CP AUTOSAR 架构下的Pwm组件,基于S32K144芯片、NXP提供的MCAL包,使用EB Tresos工具进行配置的经验,不具体介绍芯片Pwm外设的功能。
Pwm组件实现Pwm的驱动,具有设置占空比、周期等功能,为上层组件IoHwAb提供接口。
Pwm组件位于I/O Drivers层里。
在这里插入图片描述


一、原理解析

Pwm组件有以下几个概念:

(一)、PWM Channel
软件逻辑上的通道,每个软件通道只能跟一个硬件PWM通道关联。

(二)、PWM Idle State
PWM输出停止后,PWM引脚电平的状态。

(三)、PWM Polarity
PWM输出开始时,PWM引脚电平的状态。
在这里插入图片描述

(四)、PWM Power Mode
PWM电源模式支持两种模式,FULL POWER、LOW POWER,PWM初始化时是FULL POWER模式,LOW POWER模式下PWM硬件停止工作。

总的来说Pwm组件还没有很复杂的机制和概念。

二、代码架构

在这里插入图片描述
Pwm.c实现AUTOSAR中PWM的接口,Pwm_Ftm.c实现芯片上FTM用作PWM输出的功能、寄存器配置,最终通过Pwm_Ipw.c封装给Pwm.c,要注意Gpt或其他组件也有用到FTM外设,同一个FTM单元不能用到相同的组件里。

三、主要变量和类型描述

(一)、Pwm_PowerStateRequestResultType
此类型在PowerState切换时起作用,有以下几个成员:

PWM_SERVICE_ACCEPTED
服务执行成功,比如在调用Pwm_SetPowerState()、Pwm_PreparePowerState()或其他操作Power时如果操作成功就输出PWM_SERVICE_ACCEPTED。

PWM_NOT_INIT
Pwm组件没有执行Pwm_Init()时如果其他单元执行就输出PWM_NOT_INIT。

PWM_SEQUENCE_ERROR
如果没有调用Pwm_PreparePowerState()就执行Pwm_SetPowerState()或执行Pwm_PreparePowerState()时输入电源模式和当前电源模式一样就输出PWM_SEQUENCE_ERROR。

PWM_HW_FAILURE
PWM硬件通道有异常时输出PWM_HW_FAILURE。

PWM_POWER_STATE_NOT_SUPP
要设置的电源模式超出范围时输出PWM_POWER_STATE_NOT_SUPP。

PWM_TRANS_NOT_POSSIBLE
电源模式不能从当前模式切换到目标模式时输出PWM_TRANS_NOT_POSSIBLE。

四、主要代码描述

(一)、Pwm_SetDutyCycle()
设置PWM通道的占空比,输入参数u16DutyCycle取值范围为0x00–0x8000表示占空比0%到100%。

(二)、Pwm_SetPeriodAndDuty()
设置PWM通道的周期和占空比,输入参数Period为频率,如果这个通道的时钟为80000000HZ,想设置的频率为125KHZ,那么Period就要写为80000000/125000。

(三)、Pwm_PreparePowerState()
设置Pwm组件的目标电源模式,设置完后当前电源模式不会立即生效,要调用Pwm_SetPowerState才生效,输入参数ePowerState为设置的电源模式,输出参数pResult为Pwm_PowerStateRequestResultType类型的结果。

(四)、Pwm_GetTargetPowerState()
获取Pwm组件的目标电源模式,输出参数pTargetPowerState为目标电源模式,输出参数pResult为Pwm_PowerStateRequestResultType类型的结果。

(五)、Pwm_GetCurrentPowerState()
获取Pwm组件的当前电源模式,输出参数pCurrentPowerState为当前电源模式,输出参数pResult为Pwm_PowerStateRequestResultType类型的结果。

(六)、Pwm_SetPowerState()
将当前电源模式更新为目标电源模式,输出参数pResult为Pwm_PowerStateRequestResultType类型的结果。

五、EBTresos配置

主要配置如下:
无。Pwm组件配置还是比较简单的,没什么特别要注意的。配置PWM的极性、空闲状态、默认周期、默认占空比、时钟频率、底层外设通道等。

六、使用范例

无。

七、参考资料

https://www.autosar.org/fileadmin/standards/R23-11/CP/AUTOSAR_CP_SRS_PWMDriver.pdf
https://www.autosar.org/fileadmin/standards/R23-11/CP/AUTOSAR_CP_SWS_PWMDriver.pdf
https://www.autosar.org/fileadmin/standards/R23-11/CP/AUTOSAR_CP_EXP_LayeredSoftwareArchitecture.pdf


总结

要注意使用的底层外设不能和其他组件有冲突。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值