文章目录

  • 前言
  • PWM
    • PwmChannel
      • PwmAssignedHwUnit
      • PwmChannelId
      • PwmCoherentUpdate
      • PwmDutycycleDefault
      • PwmIdleState
      • PwmNotification
      • PwmChannelClass
      • PwmPeriodDefault
      • PwmPolarity
      • PwmReferenceChannel
      • PwmSafetySignal
      • PwmShiftValue
    • PWM输出偏移的使用
    • PwmConfigurationOfOptApiServices
      • PwmDeInitApi
      • PwmGetOutputState
      • PwmSetDutyCycle
      • Pwm_SetOutputToIdle
      • PwmSetPeriodAndDuty
      • PwmVersionInfoApi
      • PwmSyncGrpUpdateDutiesApi
    • PwmGeneral
      • PwmChannelCoherentSelection
      • PwmDevErrorDetect
      • PwmDutyShiftInTicks
      • PwmDutycycleUpdatedEndperiod
      • PwmIndex
      • PwmEnable0Or100DutyNotification
      • PwmHandleShiftByOffset
      • PwmNotificationSupported
      • PwmPeriodUpdatedEndperiod
    • PWM初始化
    • PWM输出占空比函数使用
  • 总结

前言

在上一篇文章中,介绍了MCAL GTM-TOM的配置,本文继续介绍TOM的上层模块PWM。该模块是Autosar标准中的模块。本文将结合标准文档及Davinci CFG中的配置进行详细介绍,然后简单介绍在代码中的使用。

PWM

驱动器提供微控制器内部PWM级(脉宽调制)的初始化和控制功能。PWM模块生成具有可变脉宽的脉冲。它允许选择占空比和信号周期时间,如下图所示


polarity决定duty的电平为高还是低。

PwmChannel

PwmAssignedHwUnit

配置对应的硬件单元,也就是前面GTM中配置的TOM模块或ATOM模块。通道的使用需要与实际原理图对应。

CFG中配置:

PwmChannelId


PWM通道的通道Id。此值将分配给从PwmChannel容器短名称派生的符号名称。

CFG中配置:

PwmCoherentUpdate

该配置不是Autosar标准文档中的配置,应该是CFG中新增的,和TOM中的同步异步更新功能类似。
TRUE:周期/占空比的更新在当前生成波形的周期结束时完成(当前波形完成)。也就是TOM同步更新

FALSE:周期/占空比的更新立即完成(服务调用后,当前波形被切断)。也就是TOM异步更新

根据PwmChannelClass,更新结束周期将适用于占空比/占空比和周期。可变周期通道的占空比和周期都将更新,而其他PwmChannelClass通道的占比将仅更新

CFG中配置:

PwmDutycycleDefault


该配置很好理解,即配置PWM默认输出占空比,需要注意的是,值0表示0%,值32768(0x8000)表示100%

CFG中配置:

PwmIdleState


参数PWM_IDLE_STATE表示信号停止后PWM的输出状态(例如调用PWM_SetOutputToIdle,Pwm_17_Gtm_DeInit

CFG中配置:

PwmNotification


如果启用了回调函数,PWM驱动器可以根据每个单独通道的选定边缘调用通知函数。

CFG中配置:

PwmChannelClass


PWM通道类别,Autosar标准文档中定义了三种类型,CFG中多扩展了一种。

PWM_FIXED_PERIOD:PWM通道具有固定周期。只能更改占空比。

PWM_FIXED_PERIOD_SHIFTED:只能更改占空比。周期可以设置偏移(仅当硬件支持时),具体的偏移规则见后面的shift value描述

PWM_VARIABLE_PERIOD:占空比和周期都可以更改。该通道不应被任何其他通道引用,也不应引用任何通道。

PWM_FIXED_PERIOD_CENTER_ALIGNED:CFG中扩展的类型,针对于PWM_FIXED_PERIOD类型的扩展,占空比将正好落在该周期的中间。(没有用过)

CFG中配置:

PwmPeriodDefault


在CFG配置中,输入值是以tick为单位的,例如我们之前TOM通道频率选择为100Mhz,此处period值填入25000,则pwm频率为4000hz。此参数不会影响类PWM_FIXED_PERIOD_SHIFTED和PWM_FICED_PERIOD_CENTER_ALIGNED的通道。

CFG中配置:

PwmPolarity

定义PWM输出的极性


PWM_HIGH:PWM通道输出在循环开始时为高,然后在达到占空比时变低
PWM_LOW:PWM通道输出在循环开始时为低,然后在达到占空比时变高

CFG中配置:

PwmReferenceChannel

该配置也不是Autosar标准配置,CFG中用来了配置关联的通道,只有在PwmChannelClass为PWM_FIXED_PERIOD_SHIFTED或PWM_FIXED_PERIOD_CENTER_ALIGNED的通道可以进行选择,且选择的Reference通道必须为PWM_FIXED_PERIOD类型。后面会统一介绍一下这个功能的使用。

CFG中配置:

PwmSafetySignal

该参数定义Pwm信道是ASIL信号或QM信号的一部分。仅当PwmSafetyEnable设置为True时,此参数才有效

CFG中配置:

PwmShiftValue

该配置也不是Autosar的标准配置。表示的是该通道的占空比相对于ReferenceChannel开始输出的偏移。输入值有两种方式:
当PwmDutyShiftInTicks关闭时,Shift值应以百分比形式输入:

0,表示0%,0x8000表示100%

当PwmDutyShiftInTicks为ON时,Shift值应作为绝对刻度输入:

0,表示0%,值与周期值相同的值表示100%

CFG中配置:

PWM输出偏移的使用

首先定义一个普通输出的PWM通道,类型为PWM_FIXED_PERIOD,设置需要的周期
然后定义需要进行偏移的PWM通道,类型为PWM_FIXED_PERIOD_SHIFTED,该通道不需要设置周期,而是将PwmReferenceChannel设置为前面设置的普通通道,然后设置PwmShiftValue为占空比偏移值,在没有选择PwmDutyShiftInTicks为ON时,输入的值为0-0x8000表示偏移为0-100%

PwmConfigurationOfOptApiServices

选择需要使用的PWM API函数,CFG中配置如下:

PwmDeInitApi


在代码中添加/删除服务Pwm_DeInit()。该函数主要用来卸载PWM模块,包括设置pwm输出为idle state,禁止中断和回调函数等。

PwmGetOutputState


该函数用来获取PWM输出状态,对应的API函数为Pwm_GetOutputState

PwmSetDutyCycle


设置PWM的占空比。这个函数用的最多。

Pwm_SetOutputToIdle


该函数用来将PWM输出设置为Idle状态。

PwmSetPeriodAndDuty


该函数用来设置占空比和周期,只有PWM通道类型为PWM_VARIABLE_PERIOD时才可以使用该函数。

PwmVersionInfoApi


该函数用来获取PWM版本,Pwm_GetVersionInfo

PwmSyncGrpUpdateDutiesApi

该函数不是标准Autosar定义的函数,为CFG的扩展,用来同步输出组内的PWM。目前没有用过。

PwmGeneral

PwmChannelCoherentSelection

该配置不是Autosar标准配置,为CFG的扩展,用于在当前周期结束时启用占空比/周期参数的通道更新的开关。

TRUE:周期/占空比的更新基于PWM通道特定配置参数PwmCoherentUpdate完成。

FALSE:根据全局参数PwmDutycycleUpdatedEndPeriod和PwmPeriodUpdatedEndEndPeriod更新周期/占空比。

CFG中配置:

PwmDevErrorDetect

选择是否开启错误检测

CFG中配置:

PwmDutyShiftInTicks

选择shift是否启用tick计数,这个在前面也有提到。

PwmDutycycleUpdatedEndperiod


选择更新占空比的方式,开启时,在周期结束后更新,关闭时,占空比立即更新。

CFG中配置:

PwmIndex


指定此模块实例的InstanceId。如果只有一个实例,则其Id应为0。

CFG中配置:

PwmEnable0Or100DutyNotification

是否开启在占空比0%或100%时的回调函数

CFG中配置:

PwmHandleShiftByOffset

用于启用移位通道的特殊处理的开关。如果启用了PwmHandleShiftByOffset,则移位的通道将以偏移开始,其工作方式与固定周期通道类似。

如果未选择PwmHandleShiftByOffset,则从参考固定周期通道触发移位通道。本质好像没什么区别?

CFG中配置:

PwmNotificationSupported


允许启用PWM回调函数功能

CFG中配置:

PwmPeriodUpdatedEndperiod

选择更新周期的方式,开启时,在周期结束后更新,关闭时,周期立即更新。

CFG中配置:

PWM初始化

在Mode Management中的Initialization中的Driver Init list1中加入PWM初始化函数。

PWM输出占空比函数使用

#include "Pwm.h"
#include "Pwm_17_Gtm_Cfg.h"Pwm_17_Gtm_SetDutyCycle(PwmChannelId, Duty);

在程序中调用该函数即可设置PWM的周期,第一个参数为PWM的通道ID,CFG会生成对应的宏定义,格式为Pwm_17_GtmConf_PwmChannel_+配置PWM通道名,例如我们配置的PWM通道名为PwmChannel1,则最终生成的ID的宏定义名为Pwm_17_GtmConf_PwmChannel_PwmChannel1。
Duty为设定的占空比,该占空比最大值为0x8000->十进制为32768,表示占空比为100%.

记得在使用宏定义时对头文件进行包含。

总结

以上,关于Autosar PWM输出的功能就介绍完了。PWM除了作为正常频率输出以外,还可以用来触发ADC采样,后面有空会更新一篇文章来介绍。

若你觉得本文对你有帮助,欢迎点赞,关注,收藏,转发~~~ 你的鼓励是对小弟的最大支持~~~

建了一个WX公众h,《汽车电子学习笔记》感兴趣可以关注一下~~~文章都会同步更新

Autosar PWM配置及使用相关推荐

  1. 在linux环境下安装wiringpi库,wiringPi库的pwm配置及使用说明

    本文介绍树莓派(raspberry pi)在linux c 环境下的硬件pwm配置及使用方法. 1. 下载安装wiringPi 此步骤建议参考官网指南,wiringPi提供了对树莓派的硬件IO访问,包 ...

  2. MTK 驱动(47)---使用PWM配置背光如何配置,及频率计算

    [MT6582_LCD]使用PWM配置背光如何配置,及频率计算 2016年07月08日 10:10:22 阅读数:1175 MT6582 使用PWM配置背光及频率计算 [SOLUTION]   以GP ...

  3. STM32F103 16路PWM 配置

    1. 前言 底层库:基于原子的标准库函数 适用芯片:STM32F103系列型号芯片,其他型号未测试(注:已测型号:C8T6.CBT6.RCT6.RET6.ZET6) 所用到的定时器:TIM1.TIM2 ...

  4. 玩转TM4C1294XL(5)——PWM配置(死区互补输出)

    1.简介        简单介绍芯片内部的PWM模块,分享PWM的配置.本人是边学习边记录,内容仅作参考,有错误的地方请见谅. 2.PWM介绍        本部分内容参考自TI官方手册.       ...

  5. 灵动微单片机MM32的PWM配置

    MM32SPIN422C 今天我们来聊聊这个芯片: 本产品使用高性能的 ARM ® Cortex TM -M0 为内核的 32 位微控制器,内嵌三相半桥栅极驱 动器与 MOSFET.最高工作频率可达 ...

  6. PB3------TIM2_CH2通道的pwm配置及注意事项

    本文涉及到PB3-- PB11的pwm配置,其中PB3对应TIM2_CH2通道,PB11对应TIM2_CH4通道. PB3为JTDO管脚,如果想将PB3用为普通IO口,需调用 GPIO_PinRema ...

  7. STM32F4 TIM1输出PWM配置

    芯片使用的是STM32F407VET6,在项目中使用PWM控制LCD背光亮度,硬件设计使用PB0--TIM1-CH2N,使用时出现PWM的输出受LCD显示内容相关函数影响 原因: 使用硬件PB0--T ...

  8. Autosar MCAL-SPI配置及使用

    文章目录 前言 SPI协议基础 Autosar SPI 专有名词 SpiDriver SpiChannel SpiChannelId SpiChannelType SpiDataWidth SpiDe ...

  9. STM32F0xx定时器输出PWM配置

    #include "stm32f0xx.h" #define FCY_DIV 1// #define FCY_DIV_1 2//FCY_DIV_1=FCY_DIV+1//2分频比 ...

最新文章

  1. AI大厂算法测试心得:人脸识别关键性能指标有哪些?
  2. Python 存储模型
  3. java虚拟机_一文彻底读懂Java虚拟机!(JVM)
  4. 20140608 科技脉搏 -下半身需求是人类共同需求,有多少人就有多大市场
  5. 防盗链Nginx设置图片防盗链,设置无效的请仔细看红字
  6. Oauth2.0如何理解?
  7. oracle误删数据恢复
  8. windows批处理备份压缩文件夹rar
  9. (摘自CSDN的koy0755)一步一步实现数据库到类的自动化映射(二) 类层次的设计 类的实现...
  10. 网站提示HTTP503Service Unavailable的处理办法
  11. 蓝鲸cmdb平台架构
  12. 高德地图两个不同的的功能合并
  13. React tsx 生成随机验证码
  14. quick-cocos2dx中 B.super.ctor(self) 和 B.super:ctor()的区别
  15. 计算机管理档案有什么好处,档案管理系统有什么特点?与传统手法相比,这几点真的很好用...
  16. 工薪青年如何通过组合投资来获得长期稳定10%收益?
  17. 20180620学习记录(根据情态动词将文本归类,美国总统演说中‘American’和‘citizen’出现次数的变化
  18. 一个针对现代办公文档中错别字的解决方案:JcJc 错别字在线检查
  19. 抛物型微分方程的数值解法——向前及向后欧拉法
  20. eclipse里调用接口库时出现了错误 Undefined reference to

热门文章

  1. icp备案是什么?怎样查看一个网站有没有备案?
  2. emacs学习笔记(windows使用Emacs eww 上网)
  3. 从 OpenStack 到 Mesos 再到 Kubernetes, 携程容器云自动化运维平台实践\n
  4. Zookeeper 入门,看这篇就够了
  5. 【代码】SupConLoss
  6. 北京市高教学会 计算机精彩片段,史树敏_北京理工大学计算机学院
  7. 天猫店铺交易要转让商标么?
  8. matlab全安装多大_从零开始安装Windows和Ubuntu双系统
  9. java swing 布局 north_Java swing布局详解(附示例图)
  10. 手把手教你配置阿里云服务器安全组规则完整教程