注意:本篇文章仅作为个人学习记录,由于本人技术水平有限,可能会有出错,欢迎各位大佬指正,以便后续更改。
相关概念及缩略词解释
ADC :Analogue Digital Converter 模数转换器
MCU :Microcontroller Unit 微控制器管理单元
API :Application Programming Interface 应用程序接口
HW :Hardware 硬件
SW :Software 软件
ADC HW Unit : 全称为Hardware Conversion Unit,ADC硬件模块,表示一种微控制器输入电子设备,是MCU(微控制器单元)中具备所有模数转换所需组件的一个单元。
ADC Channel :表示绑定到一个端口引脚的逻辑ADC实体。多个ADC通道实体可以映射到同一个端口引脚。
ADC Channel Group :连接到同一ADC硬件单元的一组ADC通道(例如,一个采样和保持转换器和一个A/D转换器),并且由一个触发源触发。
Conversion Mode :
One-Shot: ADC通道组的转换在触发后执行单次触发,并将结果写入分配的结果缓冲区。触发器可以是软件API调用或硬件事件。
Continuous: ADC通道组的转换在软件API调用后连续执行,并将结果写入分配的结果缓冲区。转换本身正在自动运行(受硬件/中断控制),连续转换可以通过软件API调用来停止。
配置ADC所涉及到的模块:ADC,Port,MCU。
一、MCU
ADC时钟源配置,需要在MCU路径McuClockSettingConfig>McuClockReferencePoint 中配置添加时钟树所需的ADC资源参考点。
注意:在此位置添加时钟参考点频率为无效值时,需要在McuClockSettingConfig>PCC中增加时钟树外设,定义外设名称,外设时钟,分频,时钟频率。
二、ADC
1、添加ADC HW Unit
双击进入,我们在General界面配置时钟基准以及ADC转换类型,在Adc Clock Reference 选项选择刚在MCU中配置的时钟;ADC转换类型有中断和DMA两种模式,中断模式转换结果通过中断进行通知,适合通道数比较少,速率不高的时候,DMA适合通道较多,速率高的时候,在这里选择中断模式。
在AdcInterrupt界面下使能所需的中断。
2、添加ADC Channel
在此界面下添加AdcChannel,配置如下:
命名为ADC_channel0,注意:添加多个通道时,不能继续以ADC_channel0开始,需要累加命名;
Logical ID为默认分配,一般不需要进行修改;
Physical channel name 选择我们实际要使用的ADC端口;
Physical Channel ID 默认为端口末位值,如ADC0_SE0,此值为0;
3、添加ADC Channel Group
在AdcGroup界面新建AdcGroup_0,(注意:这里的ID同样是累计命名)双击进入,配置说明:
Adc Group Access Mode:选择ADC_ACCESS_MODE_SINGLE,如果选择ADC_ACCESS_MODE_STREAMING则表示采样流模式;
Adc Group Conversion Mode:选择ADC_CONV_MODE_ONESHOT(单次触发),ADC_CONV_MODE_CONTINUOUS为循环触发;
Adc Group Trigger Source:触发源选择ADC_TRIGG_SRC_SW,即软件触发;
Adc Transfer Type :选择ADC中断模式;
Adc Group In Back to Back Mode:使能/禁止,使能表示通道转换按顺序发生,尽可能快,并且不会导致内部Ptimer错误。
Adc Group Uses Channel Delays :使能/禁止,使能表示启动通道延时。
配置完成之后,在AdcGroupDefinition 下添加配置的通道
这里表示ADC通道组添加了之前配置好的两个ADC通道。
同样在AdcChannelDelay下添加ADC通道延时
三、Port
需要查阅原理图,知道对应ADC功能端口,在Port模块相应端口位置设置成ADC功能。
到此,所有配置已完成。