HC32F460_ADC驱动(三) 3 HC32F460的ADCHC32F460 系列MCU内部集成ADC1 和ADC2 两个ADC 模块均是采用逐次逼近方式的模数转换器最高12位分辨率最多支持17 个模拟输入通道。其中有16个通道来自于外部引脚另有1个通道来自于内部基准电压。这些模拟输入通道可以任意组合成一个序列序列A或序列B任一序列均可以进行单次扫描或连续扫描。也支持对任意指定通道进行连续多次扫描并对转换结果进行平均。3.1 采样序列ADC模块有多个通道可配置位2个序列A/B进行转换。两序列配有独立的通道选择寄存器ADC_CHSELRA、ADC_CHSELRB。寄存器的每位均代表1个通道。两个序列可独立选择任意1个或多个通道进行转换。例如ADC_CHSELRA 设置为0x0055ADCHSELRB 设置为0x0002则序列A 的触发条件发生时将依次转换CH0CH2CH4 和CH6 这4 个通道。序列B 的触发条件发生时将转换CH1 这一个通道。对于内部模拟通道有3个可选模拟量一般选用的是内部基准电压。内部通道选择寄存器参见CMP_DACR0; PWC_PWCMR。ADC1的采样通道有17个其CH0~CH15分别为ADC1_IN0~ADC1_IN3 ~ ADC12_IN4~ADC12_IN15CH16为内部模拟通道。ADC2的采样通道有9个其CH0~CH7为ADC12_IN4~ADC12_IN11CH8为内部模拟通道。3.2 序列扫描模式每个ADC模块均可配置为序列A或序列B两者均可设置不同的触发源。两序列共有四种扫描方式ADC_CR0[bit1~bit0]MS[1:0]00序列A单次扫描01序列A连续扫描10序列A单次扫描序列B单次扫描11序列A连续扫描序列B单次扫描此外ADC 可配置采样平均功能在完成连续多次扫描转换后自动计算平均值能有效抑制随机噪声提升采样稳定性。实际工程应用中最常用的触发方式还是利用定时器中断单次软件触发序列扫描并在下一次定时器中断服务函数中读取上一轮完成的采样数据。该方案配置简洁、系统中断数量少仅需利用系统定时器即可实现稳定定时采样兼顾实时性与可靠性是工业测控与仪表采集系统的主流实现方式。3.3序列通道选择序列A和序列B各有独立的通道选择寄存器ADC_CHSELRAADC_CHSELRB。寄存器的每一位代表一个通道如Bit0写1表示转换CH0、写0表示不转换CH0。两个序列可独立选择任意1个或多个通道进行转换。ADC_CHSELRA0、ADC_CHSELRA1、ADC_CHSELRB0、ADC_CHSELRB13.4 ADC序列启动序列启动的寄存器为ADC_STR。ADC_STR.STRT设1即启动AD转换注意该触发方式仅能启动序列A当软件设置/触发事件发生/AD转换中时该寄存器位为1。反之在软件清零/转换结束后自动清零。只有在ADC_STR.STRT为0时才可配置ADC_TRGSR为序列A与序列B选择触发源可选择的触发源包括外部端口ADTRGx、内部事件IN_TRGx0、IN_TRGx1。ADC_TRGSR【bit15】TRGENB使能序列B片内或外部引脚触发ADC_TRGSR【b10~b8】TRGSELB[2:0]序列B触发条件选择外部端口或内部事件ADC_TRGSR【bit7】TRGENA使能序列A片内或外部引脚触发ADC_TRGSR【b2~b0】TRGSELA[2:0]序列A触发条件选择外部端口或内部事件3.5 采样与转换时间在启动采样后经过延迟时间ADC模块才开始对模拟通道进行采样与转换单个通道的转换时间为其中表示模拟输入的采样时间可以根据输入阻抗设置寄存器ADC_SSTRx调整采样周期。表示逐次比较时间12位精度需要13个ADCLK时钟。全部转换结束后经过转换结束延迟时间tED(1 PCLK43 ADCLK)后进入待机时间。ADC模块需要两个时钟模拟电路时钟ADCLK、数字接口时钟PCLK4,两个时钟均来源于时钟控制器中的分频器。ADCLK等效于PCLK2。在本应用中PCLK2200M/450MHzPCLK4200M/2100MHz。3.6对ADC的配置与应用说明使用12位采样、内部参考源、以及最高2.5MHz的采样率采用软件定时器进行定时触发采样以实现应用所需的采样频率。由于采用的软件触发按芯片的应用要求仅能选择序列A