一:国民技术ADC介绍
12 位 ADC 是使用逐次逼近的高速模数转换器。 它有多个通道, 19 个通道,可测量 16 个外部和 3 个内部信号源。 每个通道的 A/D 转换有四种执行模式:单次、连续、扫描或间断。 ADC 转换值存储(左对齐/右对齐)在 16 位数据寄存器中。 可以通过模拟看门狗检测输入电压是否在用户定义的高/低阈值内,并且ADC 的输入时钟的最大频率为 72MHz。
二:ADC的主要特征
n 支持 1 个 ADC,支持单端和差分输入,最多可测量 16 个外部和 3 个内部源。
n 支持 12 位、 10 位、 8 位、 6 位分辨率, 12bit 分辨率下最高采样率为 4.2MSPS。
n ADC 时钟源分为工作时钟源、采样时钟源和计时时钟源。
u 仅可配置 AHB_CLK 作为工作时钟源。
u可配置 PLL 作为采样时钟源,最高可到 72MHz,支持分频 1,2,4,6,8,10,12,16,32,64,128,256。
u 可配置 AHB_CLK 作为采样时钟源,最高可到 72MHz,支持分频 1,2,4,6,8,10,12,16,32。
u 计时时钟用于内部计时功能,频率必须配置成 1MHz。
n 支持定时器触发 ADC 采样、各通道的采样时间间隔可编程、支持扫描模式、支持单次转换、支持连续转换、支持间断模式、支持自校准、支持 DMA、中断生成、转换结束、注入转换结束、模拟看门狗事件、带内嵌数据一致性的数据对齐、可以外部触发注入转换和规则转换、ADC 的工作电压在 2.4V 到 3.6V 之间、ADC 支持转换的电压在 VREF-和 VREF+之间
三:软件代码编写
步骤1:RCC时钟初始化,使能系统时钟来源为外部时钟,并且使能ADC时钟和GPIOA口时钟线。
步骤2:使能ADC所使用的引脚PA0,PA1;
步骤3:进行ADC的初始化
步骤4:下载代码进行调试
软件代码部分:
void ADC_Initial(void)
{
/*ADC configuration ------------------------------------------------------*/
ADC_InitStructure.MultiChEn = DISABLE;
ADC_InitStructure.ContinueConvEn = DISABLE;
ADC_InitStructure.ExtTrigSelect = ADC_EXT_TRIGCONV_REGULAR_SWSTRRCH;
ADC_InitStructure.DatAlign = ADC_DAT_ALIGN_R;
ADC_InitStructure.ChsNumber = ADC_REGULAR_LEN_1;
ADC_Initializes(&ADC_InitStructure);
/* Enable ADC */
ADC_ON( );
/* Check ADC Ready */
while(ADC_Flag_Status_Get(ADC_RD_FLAG ,ADC_FLAG_AWDG ,ADC_FLAG_RDY) == RESET)
;
/* Start ADC calibration */
ADC_Calibration_Operation(ADC_CALIBRATION_ENABLE);
/* Check the end of ADC calibration */
while (ADC_Calibration_Operation(ADC_CALIBRATION_STS) == SET) ;
}
while (1)
{
ADCTEMP1=ADC_GetData(ADC_Channel_01_PA0);
ADCTEMP2=ADC_GetData(ADC_Channel_02_PA1);
}
仿真调试:
实物图片:
后记:当我们在使用某个ADC引脚时,对未使用的引脚不要进行操作和处理,当初始化后,把该引脚悬空发现,ADC读取来的数据并非是0,而是有一定数值,所以大家在调试的时候注意一下啊,只使能和操作使用的ADC引脚,不要再去操作其他引脚,防止其对使用的引脚造成影响。
全部评论