超详细教程 | Hands-On 基于 Flagchip FC4150 MCAL-PWM 驱动 RGB灯

简介

        本文将详细介绍如何使用 EB 工具配置 Flagchip FC4150 MCAL PWM 驱动 RGB,并重点强调了配置 pwm 模块的过程以及对 pwm 模块的详细解释。关于 mcu、port 、dio、icu、adc 模块可参考之前发布的博文。本次示例演示将会使用 FTU0_CH3、FTU0_CH5、 FTU0_CH7 通道来驱动 RBG 灯点亮

硬件平台:旗芯微 FC4150 DEMO BOARD V2 开发板

软件平台:EB tresos 28.1.0 、Flagchip_FC_IDE 4.04

MCAL: V1.1.0 & V1.1.1

一、MCAL 配置

        1.1 配置 MCU 模块

        1.1.1 根据 demo board 电位器原理图所示,我们需要在MCU模块-> PCC下添加Port B 、E、FTU 0的外设并配置为时钟使能。

▲ 图 1.1.1

▲ 图 1.1.2

        1.2 配置 PORT 模块

        1.2.1进入Port B  的 PortPin 界面下,添加  PTB15引脚并命名为 RGB1_UL,配置 PTB15 为 FTU0_CH3 、输出模式,默认电平为低。

▲ 图 1.2.1

        1.2.2进入Port B  的 PortPin 界面下,添加  PTB17引脚并命名为 RGB1_VL,配置 PTB17 为 FTU0_CH5 、输出模式,默认电平为低。

▲ 图 1.2.2

        1.2.3 进入Port E  的 PortPin 界面下,添加  PTE7 引脚并命名为 RGB1_WL,配置 PTE7 为        FTU0_CH7 、输出模式,默认电平为低。

 ▲ 图 1.2.3

1.3配置 PWM 模块

        1.3.1 在Module Configurations 中添加 PWM模块,在 PWM模块中的  PwmFtuModule  下添加 FTU 外设。 

▲ 图 1.3.1 

        1.3.2 双击 Index 0 进入PwmFtuModule_0-> Ftu Modules 配置界面,选择 Ftu 外设为 FTU_0,时钟选择为 CORE,参考源为 McuClockReferencePoint_Sys,选择 PWM 计数方式为边沿对齐模式、设置 PWM 频率为 10 Khz。

▲ 图 1.3.2 

       1.3.3 进入 PwmFtuModule_0->  PwmFtuChannels 的配置界面,添加三个 PWM_FTU_Channal ,将 Name 分别修改为 RGB1_UL、RGB1_VL、RGB1_WL, Ftu Hardware Channel  更改为与原理图对应的 FTU_CH3、FTU_CH5、FTU_CH7 通道、将通道设置为相互之间独立。

▲ 图 1.3.3

        1.3.4 进入 PWM->PwmChannelConfigSet的配置界面添加三个 PwmChannel、Name 分别修改为RGB1_RED、RGB1_BLUE、RGB1_GREEN

▲ 图 1.3.4

       1.3.4.1 双击 Index 0 进入RGB1_RED配置界面,选择 PwmFtuChannel 为刚刚在 PwmFtuModule_0->  PwmFtuChannels 下配置的通道,选择 PWM 极性为高,选择 PWM 空闲时的电平为低。

▲ 图 1.3.4.1

       1.3.4.2 RGB1_BLUE、RGB1_GREEN 重复 1.3.4.1 的操作即可。

二、示例代码解析

2.1 将 EB 配置好的工程编译并更新代码至 FCIDE 中

2.2 Main 函数

将 Bsp_Pwm_Init 函数取消屏蔽,Bsp_Pwm_5ms_Task_Event 函数添加至任务时间片函数中

▲ 图 2.2.1

▲ 图 2.2.2

 2.3  Pwm_PBcfg.c

       我们可以看到 FTU0外设、FTU0_CHx 在EB 工具配置好的属性

▲ 图 2.3.1(FTU硬件模块配置属性)

▲ 图 2.3.2(FTU通道配置属性)

2.4 Bsp_Pwm.c  

在demo示例中修改 Bsp_Pwm_5ms_Task_Event函数,如图3.4所示

▲ 图 2.4

三、烧录 & 调试

3.1 将工程编译并烧录到开发板

        观察 RGB 灯,可以看到 RBG 呈呼吸状态被点亮

▲ 图 3.1

四、MCAL PWM 模块详解

FC4150 PWM 模块提供独立/互补/同步通道输出,边沿/中心对齐模式,产生可变占空比与周期脉冲等功能

4.1 General 配置

▲ 图 4.1

       ①PwmConfigurationOfOptApiServices

  • PwmDeInitApi:复位 PWM 配置
  • PwmGetOutputState :获取 PWM 输出状态
  • PwmSetDutyCycle :设置 PWM 占空比
  • PwmSetOutputToIdle : 将 PWM 输出设置为空闲状态
  • PwmSetPeriodAndDuty :设置 PWM 占空比和 PWM 周期使能,只有在 PWM-> PwmChannelConfigSet 下选用了 PWM_VARIABLE_PERIOD 才可以使用
  • PwmVersionInfoApi:读 PWM 模块版本信息
  • PwmGetChannelStateApi:获取 PWM 通道状态
  • PwmEnableTriggerOut :使能 PWM 触发输出

       ②PwmGeneral

  • PwmDevErrorDetect: 是否开启错误检测
  • PwmDutycycleUpdatedEndperiod: 选择更新 PWM 占空比的方式,立即更新/周期结束后更新
  • PwmLowPowerStatesSupport: 启用PWM低功耗模式,电源状态管理相关的函数有(PWM_SetPowerState、 PWM_GetCurrentPowerState、 PWM_GetTargetPowerState、 PWM_PreparePowerState,、PWM_Main_PowerTransitionManager)
  • PwmPowerStateAsynchTransitionMode:不需要配置
  • Pwm Enable User Mode Support:不需要配置
  • PwmIndex:指定此模块实例的编号。如果只有一个实例,则其 Id 应为 0
  • Fault Support Enable:启用故障功能,用于关停 PWM 输出
  • EnableMaskingOperations :启用两个功能函数,分别是强制停止 PWM 通道输出、解除强制停止 PWM 通道输出

4.2 PwmChannel配置

添加在 PwmFtuModule 配置好的通道

▲ 图 4.2

       4.2.1 双击Index 进入PwmChannel-> General配置

▲ 图 4.2.1

  • PwmChannelId:PWM 通道 Id 号
  • PWM Hardware IP:PWM 的硬件单元选择
  • PwmFtuChannel :选择一个 FTUx Channelx 配置
  • PwmChannelClass:PWM 通道类别,可选固定周期,可变周期
  • PwmPolarity :PWM 极性
  • PwmIdleState :PWM 空闲状态电平
  • Default Period(HZ):默认 PWM 输出周期 (unit:Hz)
  • Default Period Value :默认 PWM 输出周期 (unit:s)
  • PwmDutycycleDefault :默认 PWM 占空比
  • PwmNotification:PWM 中断回调函数

4.3 PwmFtuModule配置

       最多可添加 FTU 0-7 ,8个FTU硬件外设

▲ 图 4.3

       4.3.1 双击 Index0 进入PwmFtuModule-> PwmFtuModule_0->Ftu Modules配置界面

▲ 图 4.3.1

  • Ftu Hardware Module:选择Ftu 硬件外设
  • Ftu Module Prescaler:Ftu 预分频器
  • Ftu Module clock selection:选择 Ftu 时钟输入源
  • Ftu Module clock Frequency:选择 Ftu 时钟频率
  • Ftu Module's Channels Alignment:选择计数模式
  • Reload Frequency: 重新加载次数,例:当选择 LDFQ_EACH1 每次 cnt 计数等于 mod 时进行一次重新加载
  • Default Period:配置 PWM 周期
  • Default Period Value:根据 Default Period 点击计算器标识可自动计算出
  • Deadtime Counter:死区时间配置
  • DeadTime Counter Prescaler:死区时间计数分频器

         Dead Time config note: 死区的值是以 Default Period Value 去进行设置的,例如图 4.3.1,这边是直接走的 Core CLK,150M,配置频率为 10k,那一个周期就是 100us,period value 就是 150M/10K=15000。如果这里要做一个 1us 的 deadtime,那么 counter 就填 150。counter 到 150 就是 1/10K/(15000/150)=1us。死区的分频是为了让 dead value 能够设大点。需要注意的是死区的 value 是不经过上面的 Ftu Module Prescaler 分频的。也就是说,如果 Module Prescaler 选择 2 分频,那下面 Period Value 就会变成 7500,但还得按照15000 去算 dead value,它只与 Core CLK 有关

  • Pwm Background Debug Mode configuration:PWM 在 Debug 时的行为,可选计数停止设立标志位、计数停止输出进入安全模式、计数停止输出冻结、继续进行 PWM 输出
  • Pwm Fault Funtionality and Clear Mode:故障控制模式,在使能 Fault Support Enable 可以进行配置,可选所有通道禁用、启用偶数通道故障控制,手动故障清除、启用所有通道故障控制,手动故障清除、启用所有通道故障控制,自动清楚故障。使用手动清楚故障时,需要开启中断。
  • Enable External Trigger Channel x:使能外部信号进行 PWM Channel 输出
  • Enable Reload Trigger:使能重新装载时的触发信号

4.3.2 PwmFtuModule-> PwmFtuModule_0->Ftu Fault 配置界面

▲ 图 4.3.2

  • Pwm Fault Filter Prescaler: Ftu 故障滤波分频器
  • Pwm Fault Filter Value : Ftu 故障滤波值
  • Channel Output on Fault: 故障通道输出、
  • Fault notification enable: 故障通知使能                 
  • Fault Input Channel: 故障输入通道选择
  • Configure polarity for Fault Input Pin:配置故障输入引脚极性
  • Enable Fault Input Glitch Filter: 启动故障输入滤波器
  • PwmFaultNotification:PWM 故障回调函数

       4.3.2 PwmFtuModule-> PwmFtuModule_0->PwmFtuChannels配置界面,每个 FTU 外设最多可配置 8 个 PWM 通道

▲ 图 4.3.2

       4.3.3 双击 Index0 ,进入 PwmFtuChannles-> General 配置界面

▲ 图 4.3.3

  • Ftu Hardware Channel    : FTU 硬件通道选择
  • Edge configuration setting for current channel:当前通道的模式,可配置为独立、同步、互补通道
  • Enable Deadtime on combined channels: 使能互补通道死区时间   

4.4 PwmPowerStateConfig配置

▲ 图 4.4

4.5 PublishedInformation PWM 模块版本信息

4.6 PWM 模块常用函数

  • Pwm_Init:初始化 PWM 模块
  • Pwm_DeInit:将 PWM 模块复位至默认状态
  • Pwm_SetDutyCycler:设置 PWM 通道占空比
  • Pwm_SetPeriodAndDuty:设置 PWM 周期与通道占空比
  • Pwm_SetOutputToIdle:将 PWM 输出设置为空闲状态
  • Pwm_GetOutputState:获取 PWM 通道输出空闲状态
  • Pwm_EnableNotification:使能  PWM 通道事件通知
  • Pwm_DisableNotification:失能 PWM 通道事件通知
  • Pwm_GetVersionInfo: 获取 PWM 模块版本信息
  • Pwm_GetChannelState:获取 PWM 通道占空比状态
  • Pwm_EnableTriggerOut:使能 PWM 通道重载触发输出
  • Pwm_DisableTriggerOut:失能 PWM 通道重载触发输出
  • Pwm_MaskOutputs:强制停止 PWM 通道输出
  • Pwm_UnMaskOutputs:解除强制停止 PWM 通道输出

五、总结

        本文以 PWM 驱动 RGB 为示例,详细介绍了如何配置和使用 PWM(脉宽调制)模块,通过本文的讲解,读者可以了解到如何正确配置 PWM 模块,以实现脉宽调制的功能。

六、参考文献

(1)  AUTOSAR_SWS_PWMDriver.pdf

(2)  FC4150 Reference Manual V3.0.pdf

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

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

更多资讯,请扫码关注我们!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值