rt1021外设配置--adc
1、简介
enableOverWrite ,是使能写入覆盖。
enableContinuousConversion,开启连续转换模式。
enableHighSpeed,使能高速。
enableLowPower,使能低功耗。
enableLongSample使能长采样。
RT1021 有 2 个 ADC,每个 ADC有 12 位、10 位、8位可选
每个 ADC有 16个外部通道。
ADC具有最高 1MS/s 采样率,
支持单次或连续转换模式,
可配置的采样时间和转换速度,
支持硬件求平均,
支持自动比较转换结果为小于、大于或等于某一设定的值,或者在设定的范围内、范围外。
2、触发源
RT1052 支持软件触发和硬件触发,当 ADCx_CFG寄存器的 ADTRG 位(转换触发选
择位)为 1时,ADC为软件触发方式。此时向 ADCx_HC0 寄存器 ADCH 位(外部输入通
道选择位) 写入需要转换的外部输入通道则开启一次转换。这个是最简单也是最好理解的
开启 ADC转换的控制方式。
ADC还支持外部事件触发转换,通过 XBAR(外设间交叉开关)几乎可选择任何其他
外设的相关事件作为 ADC的外部触发事件。XBAR和 ADC-ETC将在后面详细介
3、clock
enableAsynchronousClockOutput,使能异步时钟输出
samplePeriodMode,设置长采样模式或短采样模式下的采样周期。
clockSource,选择时钟源。adc_clock_source_t 是枚举类型,我们一般选择 IPG 时钟或IPG 时钟的二分频作为 ADC的时源。
clockDriver,设置时钟分频。枚举类型 adc_clock_driver_t 定义了可选的时钟分频,可选 1、2、4、8 分频。
4、硬件求平均功能
硬件求平均功能:在对 ADC转换速率要求不高的情况下使用硬件求平均功能可以有
效的提高结果的准确性。ADCx_GC 寄存器的 AVGE位置 1 开启硬件硬件平均功能。
同时 ADCx_CFG 寄存器的 AVGS位用于确定平均多少个 ADC转换作为最终的结果。
在该模式下 ADC完成一次转换并不能设置转换完成标志位,只有当 ADCx_CFG 寄存
器的 AVGS位指定的转换次数全部完成时才设置转换完成标志,如果开启了中断则设
置转换完成中断标志位。
5、单通道采集
RT1021 的 ADC不使用 ADC_ETC(外部触发控制器)时非常简单,完成 ADC配置之后
将转换通道写入相应的寄存器即可自动转换,如果开启了中断,转换完成后触发中断。本
实验介绍不使用 ADC_ETC时的使用方式,后面章节介绍使用 ADC_ETC的情况。
/*定义使用的 ADC*/
#define ADCx ADC1
#define DEMO_ADC_CHANNEL_GROUP 0U //ADC 通道组,最多只能使用 8 个通道组(0 到 7)
#define DEMO_ADC_USER_CHANNEL 0U //ADC 通道宏定义
这里详细介绍通道与通道组:
1) 通道,这里所说的通道指的是 ADC外部输入通道,每个 ADC拥有 16 个外部输
入通道,每个通道对应一个外部输入引脚。
2) 通道组,这个名字是根据 RT1021 官方 SDK 的函数参数名得到的。通道组可取 0
到 7,。依次对应到寄存器 ADC_HC0到 ADC_HC7。ADC运行过程中会转换
ADC_HCx 寄存器指定的通道。
特别提醒:只有通道组 0 可用于软件触发,本实验使用软件触发所以只能选择通道组 0.
采集:
/*ADC转换通道设置*/
adc_channel_config_t adcChannelConfigStruct; //ADC 通道配置结构体
adcChannelConfigStruct.channelNumber =4;//设置ADC转换通道对应的外部输入通道.,目前通道4
adcChannelConfigStruct.enableInterruptOnConversionCompleted = false; //使能转换完成后不产生中断,
ADC_SetChannelConfig(ADCx, 0, &adcChannelConfigStruct);//初始化ADC
while(ADC_GetChannelStatusFlags(ADCx,0)==0)
{
t++;
if(t>1000)
break;
}//等待转换结束
ADC1_4_PRESS = ADC_GetChannelConversionValue(ADCx, 0);
6、ADC外部触发简介
RT1021的 ADC模块不能直接使用硬件触发(或者称为外部触发,需要借助
ADC_ETC(ADC外部触发控制器)实现外部触发方式。RT1052 具有一个 ADC_ETC(ADC
外部触发控制器)模块,通过 ADC外部触发控制器用户可以以分时多路复用方式共享 ADC
模块,可以使用外部事件作为 ADC 触发信号,使用起来非常灵活。ADC_ETC 有两个通道,
每个通道可以支持一个 TSC触发和四个来自 XBAR的外部触发。
TSC是 Touch Screen Controller 的英文缩写,即触摸屏控制器,本书不作介绍。XBAR
英文解释是 Inter-Peripheral Crossbar Switch直译为外设间交叉开关。XBAR的功能简单理
解为将一个外设的输出信号(输出端)与另外一个或者多个外设的输入信号(输入端)连
接起来,输出端发出信号,输入端就会接收到这个信号并触发相应的动作。比如将 PIT
(周期定时器)计时溢出事件通过 ABAR(外设间交叉开关)连接到 ADC_ETC(ADC 外
部触发控制器)的触发通道。每当 PIT产生一个溢出事件就会产生一次 ADC_ETC外部触
发。有关 XBAR的详细介绍在使用到时会详细介绍,这里简单了解即可。
ADC_ETC包含一下主要特性:
在双 ADC 模式下,每个 ADC 模块最多支持 8 个外部硬件触发
支持同步和者异步模式下触发双 ADC,在同步模式下 ADC1 和 ADC2 具有相同的触
发源。在异步模式下 ADC1 和 ADC2 具有各自的触发源
每个 ADC 支持 4 个外部触发输入,可编程的初始延时和触发间隔。每个触发源可被
配置为硬件触发或者软件触发。
外部触发自动保持和仲裁,每个外部触发可以配置为固定的优先级,高优先级的外部
触发可以优先得到处理。当 ADC 忙碌或者高优先级的外部触发占用 ADC 时自动保存
触发事件,等待 ADC 空闲或者高优先级玩不中断释放 ADC。
支持 ADC 触发级联
支持中断和 DMA模式