赞
踩
本文将详细介绍如何使用 EB 工具配置 Flagchip FC4150 MCAL ADC 读取电位器值。并重点强调了配置 ADC 模块的过程以及对 ADC 模块的详细解释。关于 mcu、port 、dio、icu 模块可参考之前发布的博文。本次示例演示将会使用 ADC0_SE0、ADC0_SE4 通道、采用中断方式进行电位器值的读取。
硬件平台:旗芯微 FC4150 DEMO BOARD V2 开发板
软件平台:EB tresos 28.1.0 、Flagchip_FC_IDE 4.04
MCAL: V1.1.0 & V1.1.1
1.1 配置 MCU 模块
1.1.1 根据 demo board 电位器原理图所示,我们需要在MCU模块-> PCC下添加Port A 、E、ADC 0的外设并配置为时钟使能。
▲ 图 1.1.1
▲ 图 1.1.2
1.1.2 在 McuClockReferencePoint 设置添加 McuClockReferencePoint_Adc0 参考时钟源
▲ 图 1.1.3
1.2 配置 PORT 模块
1.2.1 进入 Port A 的 PortPin 界面下,添加 PTA25 引脚并命名为 Varistor1,配置 PTA25 为 ADC_SE0 、输入模式,默认电平为低。
▲ 图 1.2.1
1.2.2 进入 Port E 的 PortPin 界面下,添加 PTE4 引脚并命名为 Varistor2,配置 PTE4 为 ADC_SE04、输入模式,默认电平为低。
▲ 图 1.2.2
1.3配置 ADC 模块
1.3.1 在Module Configurations 中添加 ADC模块,在 ADC模块中的 AdcHwUnit下添加 ADC 0 外设。
▲ 图 1.3.1
1.3.2 双击 Index 0 进入 Adc HwUnit_0 配置界面,在 General 下配置 ADC 时钟参考源、ADC 位数 12 位、ADC 参考电压源为内部、AdcSampleTimeOptions 默认即可。
▲ 图 1.3.2
1.3.3 进入 AdcChannel的 配置界面,添加两个 ADC 通道,将 Adc Hardware Channel Id 更改为与原理图对应的 ADC0_SE0、ADC0_SE4 通道
▲ 图 1.3.3
1.3.4 进入 AdcGroup 的配置界面添加 AdcGroup_0
▲ 图 1.3.4
1.3.4.1 双击 Index 0 进入 AdcGroup_0 配置界面,在 General 下配置 ADC 组,将 ADC 组配置模式设置为单次读取,转换模式设置为单次转换,触发模式设置为软件触发、设置转换类型为中断方式,填写组转换完成的回调函数 IoHwAb_Adc_Notification_0
▲ 图 1.3.4.1
1.3.4.2 在 AdcGroupDefinition下添加刚刚配置好的两个通道,分配给 ADC 组 0
▲ 图 1.3.4.2
1.3.5 在 AdcInterrupt 下选择 ADC 0 中断使能
▲ 图 1.3.5
2.1 将 EB 配置好的工程编译并更新代码至 FCIDE 中
2.2 Main 函数
将 Bsp_Adc_Init、BSP_FCUART_Init 函数取消屏蔽,Bsp_Adc_20ms_Task_Event、Bsp_Adc_1s_Task_Event 函数添加至任务时间片函数中
▲ 图 2.2.1
▲ 图 2.2.2
2.3 Adc_PBcfg.c
我们可以看到 ADC0_SE0、ADC0_SE4 在EB 工具配置好的属性与回调函数的声明
▲ 图 2.3.1(ADC硬件模块配置属性)
▲ 图 2.3.2(ADC通道配置属性)
▲ 图 2.3.2(ADC组配置属性)
2.4 Bsp_Adc.c
2.4.1 在 demo 示例中编写 IoHwAb_Adc_Notification_0 函数实体,添加 Adc0_Group0_Ready = TRUE;
▲ 图 2.4.1
2.4.2 找到 Bsp_Adc_Init、Bsp_Adc_20ms_Task_Event、Bsp_Adc_1s_Task_Event 这是 demo 示例对 MCAL API 的调用
▲ 图 2.4.2.1
▲ 图 2.4.2.2
3.1 将工程编译并烧录到开发板
打开串口助手软件,波特率设置为 115200 ,观察到两个电位器的 ADC 值已被 MCU 成功读取
▲ 图 3.1
FC4150 ADC 模块提供 8/10/12 位转换精度、单次/连续转换模式、软/硬触发、单通道采样时间配置、硬件均值滤波等功能
4.1 General 配置
▲ 图 4.1
①AdcGeneral
②AdcPublishedInformation
③IAutosarExt
④Adc Dem Event Parameter Refs
4.2 AdcHwUnit配置
最多可添加2个ADC外设(硬件决定)
▲ 图 4.2
4.2.1 双击 Index0 进入AdcHwUnit0-> General配置界面
▲ 图 4.2.1
4.2.2 AdcHwUnit0-> AdcChannel 最多可支持 32 个外部通道 ,4 个内部通道
▲ 图 4.2.2
4.2.3 双击 Index0 进入 AdcHwUnit0-> AdcChannel-> AdcChannel_0 配置界面
▲ 图 4.2.3
4.2.4 AdcHwUnit0-> AdcGroup 配置界面,对 ADC 通道进行组合,进行组转换
▲ 图 4.2.4
4.2.5 双击 Index0 ,进入 AdcGroup->AdcGroup_0->General 配置界面
▲ 图 4.2.5
ADC_GROUP_REPL_SUSPEND_RESUME 挂起/恢复机制:在转换过程中,当前 ADC 组被更高优先级的 ADC 组打断时,则会在更高优先级的 ADC 组转换完成后继续当前 ADC 组转换
4.2.6 AdcGroup->AdcGroup_0->AdcGroupDefinition 配置界面,添加该 ADC 组的通道
▲ 图 4.2.6
4.2.7 AdcGroup->AdcGroup_0->AdcChannelDelay 配置界面,当在 AdcGroup->AdcGroup_0->General 启用 Adc Group Uses Channel Delays 时,可以添加通道转换延迟时间
▲ 图 4.2.7
4.3 AdcPowerStateConfig 配置
不支持低功耗
▲ 图 4.3
4.4 AdcInterrupt 配置
可以添加 ADC 外设0、1用于 ADC硬件中断。
▲ 图 4.4
4.5 PublishedInformation ADC 模块版本信息
4.6 ADC 模块常用函数
本文以 adc 读取电位器值为示例,详细介绍了如何配置和使用 ADC(模数转换)模块,通过本文的讲解,读者可以了解到如何正确配置 ADC 模块,以实现模数转换的功能。
(1) AUTOSAR_SWS_AdcDriver.pdf
(2) FC4150 Reference Manual V3.0.pdf
如有更多需求,欢迎联系大联大世平集团 ATU 部门:atu.sh@wpi-group.com 作者:Memory
更多资讯,请扫码关注我们!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。