电工基础

电工基础知识_电工技术-电工最常见电路

AT32F435/437 ADC使用指南

时间:2023-04-11 11:29来源:未知 作者:admin 点击:
  ADC 简介   AD C控制器的功能极其强大。其包含但不限于以下内容 时钟 及状态,由数字和 模拟 时钟两个部分组成 分辨率及采样转换,可配置分辨率为12/10/8/6位的转换,采样周期支持

 

ADC简介

  ADC控制器的功能极其强大。其包含但不限于以下内容

时钟及状态,由数字和模拟时钟两个部分组成

分辨率及采样转换,可配置分辨率为12/10/8/6位的转换,采样周期支持广范围的配置

自校准,自带校准功能以纠正数据偏移

基本模式,支持多种模式,不同模式可组合使用满足多种应用

不同优先权的通道,普通通道与抢占通道具备不同的优先权

多种独立的触发源,包括TMR、EXINT、软触发等多种触发选择

数据后级处理,包括数据的对齐,抢占通道偏移量等多种处理

转换中止,可软件控制在ADC不掉电状态下实现转换中止

过采样器,普通及抢占通道均支持过采样

电压监测,通过对转换结果的判定来实现电压监测

中断及状态事件,具备多种标志指示ADC状态,且某些标志还具备中断功能

多种转换数据的获取方式,包括DMA获取、CPU获取两种方式实现转换数据的读取

联动多ADC的主从模式,可设定同时、交错、位移等多种组合模式,且支持单及双从机选择

图1. ADC1框图

cbd660cc-881d-11ed-bfe3-dac502259ad0.png

ADC功能解析

时钟及状态

  功能介绍

ADC的时钟分为数字时钟与模拟时钟。其统一通过CRM_APB2EN的ADCxEN位使能。

数字时钟:即PCLK2,经HCLK分频而来,提供给数字部分使用。

模拟时钟:即ADCCLK,经ADC预分频器分频而来,提供给模拟部分使用。

  软件接口

ADC时钟使能,软件由单独的函数接口实现,其软件实例如下:

cc015e62-881d-11ed-bfe3-dac502259ad0.png  

当ADC时钟使能后,软件即可开始进行ADC的一些相关配置。

ADC预分频设定,软件由ADC公共部分结构体配置完成,其软件实例如下:

cc854380-881d-11ed-bfe3-dac502259ad0.png


此项实际用于设定ADC模拟部分的时钟,其由HCLK分频而来,故ADCCLK=HCLK/div 注意:

1)模拟部分的ADCCLK由HCLK分频而来,其不可大于80MHz;

2)ADC数字部分挂在PCLK2上,为避免同步问题,ADCCLK频率不可高于PCLK2;

3)ADC1、ADC2、ADC3都有自己独立的时钟使能位。ADC公共部分无独立的时钟使能位,其会跟随任意ADCx时钟使能而自动打开;

4)ADC模拟部分电源由ADC_CTRL2的ADCEN,其不受ADC的时钟状态影响。典型的,如果系统需要进入深度睡眠模式,如果不关闭ADCEN,此时ADC模拟器件将还会消耗电流

5)ADC上电有一段等待时间,应用应该在判定到ADC的RDY flag置位后再执行后续触发等操作。  

分辨率及采样转换

  功能介绍

ADC可随意设定12、10、8、6位分辨率使用。 ADC可设定2.5、6.5、12.5、24.5、47.5、92.5、247.5、640.5个采样周期。 ADC对通道数据的获取由采样和转换两个部分组成。 采样先于转换执行,采样期间内选通需要转换的通道,外部电压对ADC内部采样电容充电,将持续执行设定的采样周期长度时间的充电。 采样结束后就会自动开始转换,ADC采用逐次逼近的转换方式,可有效保障转换数据的准确性。此转换方式需要分辨率位数个ADCCLK的转换时间来完成单通道的转换,再结合数据处理,因此单个通道的整体转换时间即

cc9f4000-881d-11ed-bfe3-dac502259ad0.png  

示例: CSPTx选择6.5周期,CRSEL选择10位,一次转换需要6.5+10+0.5=17个ADCCLK周期。  

软件接口

ADC分辨率设定,软件由单独的函数接口实现,其软件实例如下:

ccbc4f88-881d-11ed-bfe3-dac502259ad0.png  

注意:ADC的自校准只能在12位分辨率下进行,切分辨需安排在校准完成后执行。

ADC采样周期设定,软件由单独的函数接口实现,其软件实例如下:

cccfa498-881d-11ed-bfe3-dac502259ad0.png

注意: 不同通道可设定不同的采样周期; 当采用中断或轮询方式获取普通通道数据,为避免溢出,建议合理增大采样周期; 为避免充电不充分导致转换数据不准确,应用允许的条件下,建议合理增大采样周期。  

自校准

  功能介绍

ADC具备自校准能力,软件可以执行自校准命令,透过自校准可以计算出一个校准值。不需要软件干预,ADC会自动将该校准值反馈回ADC内部补偿ADC基础偏差,以保障转换数据的准确性。 校准值有两种获取方式:

软件下自校准命令,由硬件自动计算,产生的校准值保存在ADC->CALVAL寄存器

软件直接根据经验值,手动设定校准值,该值同样被保存在ADC->CALVAL寄存器内

自校准的软件流程如下

在12位分辨率状态下使能ADC

等待ADC的RDY标志置位

执行初始化校准命令并等待初始化校准完成

执行校准命令并等待校准完成

根据应用需求切换到期望配置的分辨率

等待ADC的RDY标志置位

执行完上述流程后,即可开始进行ADC的触发转换。

  软件接口

完整的校准及设定分辨率需由组合命令实现,依据校准值设定方式可区分如下两种自校准方式,其软件实例如下: ccf35532-881d-11ed-bfe3-dac502259ad0.png  

写经验值校准方式,其软件实例如下:

cd144756-881d-11ed-bfe3-dac502259ad0.png  

注意: 校准值的存放不会置位OCCE标志,不会产生中断或DMA请求; ADC的自校准只能在12位分辨率下进行,切分辨需安排在校准完成后执行。  

基本模式

  1、功能介绍

序列模式

ADC支持序列模式设定,开启序列模式后,每次触发将序列中的通道依序转换一次。 用户于ADC_OSQx配置普通通道序列,普通通道从OSN1开始转换;于ADC_PSQ配置抢占通道序列,抢占通道是从PSNx开始转换(x=4-PCLEN)。 抢占通道转换示例: ADC_PSQ[21:0]=10 00110 00101 00100 00011,此时扫描转换顺序为CH4、CH5、CH6,而不是CH3、CH4、CH5。

图2. 序列模式

cd3ac390-881d-11ed-bfe3-dac502259ad0.png

反复模式

ADC支持反复模式设定,开启反复模式后,当检测到触发后就即会反复不断地转换普通通道组。

图3. 反复模式+抢占自动转换模式

cd6786be-881d-11ed-bfe3-dac502259ad0.png

分割模式

ADC支持分割模式设定。 对于普通通道组,分割模式可依据设定将通道组分割成长度较小的子组别。一次触发将转换子组别中的所有通道。每次触发会依序选择不同的子组别进行转换。 对于抢占通道组,分割模式直接以通道为单位进行分割,一次触发将转换单个通道。每次触发会依序选择不同的通道进行转换。

图4. 分割模式

cd8a18c8-881d-11ed-bfe3-dac502259ad0.png

抢占自动转换模式

ADC支持抢占自动转换模式设定,开启抢占自动转换模式后,当普通通道转换完成后,抢占通道将自动接续着转换,而不需要进行抢占通道的触发。

图5. 抢占自动转换模式

cdae4acc-881d-11ed-bfe3-dac502259ad0.png    

2、软件接口

ADC序列模式和反复模式设定,由ADC基础部分结构体配置完成,其软件实例如下:

cdd543d4-881d-11ed-bfe3-dac502259ad0.png  

注意: 序列模式对普通及抢占通道组均有效; 反复模式仅对普通通道组有效,抢占通道组不具备反复模式功能; 反复模式与分割模式不可共用; 反复模式可与抢占自动转换模式共用,将实现依次反复的转换普通通道序列及抢占通道序列。 ADC分割模式设定,软件由单独的函数接口实现,其软件实例如下:


cdf3b9f4-881d-11ed-bfe3-dac502259ad0.png  

注意: 分割模式对普通及抢占通道组均有效; 抢占通道组分割模式子组别长度不可设定,其固定为单个通道; 分割模式与反复模式、抢占自动转换模式不可共用,普通通道与抢占通道的分割模式不可共用。 抢占自动转换模式设定,软件由单独的函数接口实现,其软件实例如下:

ce1674e4-881d-11ed-bfe3-dac502259ad0.png  


注意: 抢占自动转换模式仅对抢占通道组有效; 抢占自动转换模式与分割模式不可共用。  

不同优先权的通道

  1、功能介绍


ADC设计有具备不同优先权的两种通道组:普通通道组与抢占通道组。

普通通道组

通常用于执行常规的数据转换。支持最多配置16个通道,转换将按照设定的通道顺序依次进行。其不具备抢占能力。

抢占通道组

通常用于执行相对紧急的数据转换。支持最多配置4个通道,转换将按照设定的通道顺序依次进行。其具备抢占能力,即抢占通道组的转换可以打断正在执行的普通通道转换,待抢占通道组转换完毕后再恢复执行被打断的普通通道组转换。

  2、软件接口


普通通道组设定,软件包括通道数量、通道数值、转换顺序、采样周期的设定,其软件实例如下:


ce37b190-881d-11ed-bfe3-dac502259ad0.png  


抢占通道组设定,软件包括通道数量、通道数值、转换顺序、采样周期的设定,其软件实例如下:

ce5b8462-881d-11ed-bfe3-dac502259ad0.png  

注意: 不同通道可以设定不同的采样周期; 同一通道可以被反复编排进转换序列进行转换; 序列模式下,普通通道组从OSN1开始转换,抢占通道组是从PSNx开始转换(x=4-PCLEN)。  

多种独立的触发源

  功能介绍

ADC支持多种触发源,包含软件写寄存器触发(ADC_CTRL2的OCSWTRG与PCSWTRG)以及外部触发。外部触发包含定时器触发与引脚触发,外部触发可设定触发极性(触发极性可选择禁止边沿触发、上升沿触发、下降沿触发或任意边沿触发)。 表1. 普通通道触发源

ce8aaaf8-881d-11ed-bfe3-dac502259ad0.png  

表2. 抢占通道触发源

ceb52f80-881d-11ed-bfe3-dac502259ad0.png    


软件接口

软件写寄存器触发设定,软件由单独的函数接口实现,其软件实例如下:


cedbd0e0-881d-11ed-bfe3-dac502259ad0.png  


在ADC Ready后,软件即可执行adc_ordinary_software_trigger_enable(ADC1,TRUE);/adc_preempt_software_trigger_enable(ADC1,TRUE);来进行普通/抢占通道的触发。 外部触发设定,软件由单独的函数接口实现,其软件实例如下:
cef167ac-881d-11ed-bfe3-dac502259ad0.png  



在ADC Ready后,TMR1CH1的上升沿事件就会触发普通通道组转换,TMR3CH4的上升沿事件就会触发抢占通道组转换。 注意: 触发间隔需要大于通道组转换的时间,转换期间发生的相同通道组的触发会被忽略; 使用软件写寄存器触发时,对应触发极性必须选择禁止边沿触发; 抢占通道转换优先权最高,不管当前是否有普通通道转换,其触发后就会立即开始响应转换; 普通触发具备记忆功能,在抢占转换时执行普通触发,该触发会被记录并在抢占转换完毕后响应; 多ADC的主从模式下,需要将从ADC的触发极性选择为禁止边沿触发。  

数据后级处理

  1、功能介绍


ADC具备专有的数据寄存器,普通通道转换完成后数据存储于普通数据寄存器(ADC_ODT),抢占通道转换完成后数据存储于抢占数据寄存器x(ADC_PDTx)。数据寄存器内存储的是经过处理后的数据。该处理包括数据对齐、抢占数据偏移。 数据对齐 分左对齐和右对齐。分辨率CRSEL为6位时,数据存储方式以字节为基准摆放,其余皆以半字为基准摆放。

抢占数据偏移


抢占通道的数据会减去抢占数据偏移寄存器x(ADC_PCDTOx)内的偏移量,因此抢占通道数据有可能为负值,以SIGN作为符号。 图6. 数据内容处理

cf12410c-881d-11ed-bfe3-dac502259ad0.png    

2、软件接口

数据对齐设定,软件由ADC基础部分结构体配置完成,其软件实例如下:

cf41e376-881d-11ed-bfe3-dac502259ad0.png  
抢占数据偏移设定,软件由单独的函数接口实现,其软件实例如下:

cf5c46a8-881d-11ed-bfe3-dac502259ad0.png    

转换中止

  功能介绍

ADC具备转换中止功能。在ADC转换过程中,用户可利用ADC_CTRL2的ADABRT使ADC停止转换。停止转换后,转换顺序回归第一个通道,用户即可重新编排通道顺序,再次触发ADC将从头开始执行新序列的转换。 图7. 转换中止时序 cf7a9e6e-881d-11ed-bfe3-dac502259ad0.png  

软件接口

转换中止设定,软件由单独的函数接口实现,其软件实例如下:

cf9ca0e0-881d-11ed-bfe3-dac502259ad0.png  

注意: 转换中止命令对普通及抢占通道转换都有效; 转换中止功能类似ADC重上电,但是转换中止不会使ADC掉电,不存在ADC上电唤醒时间; 转换中止的执行需要时间,在执行转换中止命令后一定要等待ADABRT位被硬件清除后才可进行后续的触发转换。  

过采样器

  1、功能介绍

ADC具备过采样功能。一次过采样是透过转换多次相同通道,累加转换数据后作平均实现的。

由ADC_OVSP的OSRSEL选择过采样率,此位用来定义过采样倍数;

由ADC_OVSP的OSSSEL选择过采样移位,此位用来定义平均系数。

若平均后数据大于16位,只取靠右16位数据,放入16位数据寄存器。 使用过采样时,忽视数据对齐及抢占数据偏移的设定,数据一律靠右摆放。

表3. 最大累加数据与过采样倍数及位移系数关系
cfb41ba8-881d-11ed-bfe3-dac502259ad0.png

普通通道过采样被打断后的恢复方式

普通通道过采样中途被抢占通道转换打断后的恢复方式由OOSRSEL设定

OOSRSEL=0:接续模式。保留已累加的数据,再次开始转换时将从打断处转换;

OOSRSEL=1:重转模式。累加的数据被清空,再次开始转换时重新开始该通道的过采样转换。

图8. 普通过采样被打断后的恢复方式
cfdc4ce0-881d-11ed-bfe3-dac502259ad0.png

普通通道过采样触发模式

普通通道过采样的触发模式由OOSTREN设定

OOSTREN=0:关闭触发模式。通道的所有过采样转换仅需一次触发;

OOSTREN=1:开启触发模式。通道的每个过采样转换均需进行触发。

此模式下,中途被抢占通道触发打断后,须重新触发普通通道才会恢复转换普通通道过采样。

图9. 普通过采样触发模式
cfff1dec-881d-11ed-bfe3-dac502259ad0.png

抢占通道过采样

抢占过采样可与普通过采样同时使用,也可分别使用。抢占过采样不影响到普通过采样的各种模式。

图10. 抢占自动转换下的过采样模式

d04bb292-881d-11ed-bfe3-dac502259ad0.png    

2、软件接口

过采样率、过采样移位及过采样使能设定,软件由单独的函数接口实现,其软件实例如下:

d0706fb0-881d-11ed-bfe3-dac502259ad0.png  

普通通道过采样被打断后的恢复方式设定,软件由单独的函数接口实现,其软件实例如下:

d083c25e-881d-11ed-bfe3-dac502259ad0.png  

普通通道过采样触发模式设定,软件由单独的函数接口实现,其软件实例如下:

d0972e52-881d-11ed-bfe3-dac502259ad0.png    

电压监测

  功能介绍

ADC具备电压监测功能。用以监控输入电压与设定阈值的关系。 当转换结果大于高边界ADC_VMHB[11:0]寄存器或是小于低边界ADC_VMLB[11:0]寄存器时,电压监测超出标志VMOR会置起。 透过VMSGEN选择对单一通道或是所有通道监测。对单一通道监测的话,由VMCSEL配置通道。  

软件接口

监测单一通道,软件由单独的函数接口实现,其软件实例如下:

d0abc182-881d-11ed-bfe3-dac502259ad0.png  
监测所有通道,软件由单独的函数接口实现,其软件实例如下:
d0d2248a-881d-11ed-bfe3-dac502259ad0.png  
注意: 电压监测一律以转换的原始数据与12位边界寄存器做比较,无视分辨率、抢占偏移量与数据对齐的设定; 若使用过采样器,则是以ADC_VMHB[15:0]与ADC_VMLB[15:0]完整的16位寄存器与过采样数据作比较。  

中断及状态事件

  功能介绍 ADC含有多种中断及状态标志。应用需要结合这些标志进行程序设计。

ADC准备就绪标志(RDY)

指示ADC状态,只读位,软件不可清除,无产生中断能力。 ADC上电完毕后会置位,只有RDY标志置位后,才可进行校准及触发转换。

普通通道转换溢出标志(OCCO)

指示ADC转换数据溢出,标志由软件对其自身写零清除,有产生中断能力。 无独立的溢出检测使能位,在使能DMA传输或者EOCSFEN=1时有效,当上一笔转换数据未被读走,下一笔转换数据已产生时就会置位此标志。标志清除后的转换恢复分如下两种情况: 1)非组合模式下,此标志置位后,当前转换停止,转换序列不被清零,因此可不用复位ADC, 直接清除标志再次触发转换即可; 2)组合模式下,此标志置位后,当前转换停止,转换序列同样保持,但由于此时可能已丢失同步规则,因此需要复位各ADC,然后重新进行触发转换。

普通通道转换开始标志(OCCS)

指示普通通道转换开始,由软件对其自身写零清除,无产生中断能力。

抢占通道转换开始标志(PCCS)

指示抢占通道转换开始,由软件对其自身写零清除,无产生中断能力。

抢占通道组转换结束标志(PCCE)

指示抢占通道组转换完成,由软件对其自身写零清除,有产生中断能力。 在抢占通道组转换完成后置位,通常应用使用此标志来读取抢占通道组的转换数据。

普通通道转换结束标志(OCCE)

指示普通通道转换完成,由软件对其自身写零或读ODT寄存器清除,有产生中断能力。 在普通通道转换完成后置位,应用可使用此标志来读取普通通道的转换数据(EOCSFEN=1)。 注意:DMA读取转换数据会同步清除OCCE标志,因此在使用DMA时禁止再使用OCCE标志。

电压监测超出范围标志(VMOR)

指示通道电压超出设定阈值,由软件对其自身写零清除,有产生中断能力。 在ADC的通道转换数据超过设定阈值后置位,通常应用使用此标志来监控通道电压。  

软件接口

中断使能设定,软件由单独的函数接口实现,其软件实例如下:

d0ed46f2-881d-11ed-bfe3-dac502259ad0.png  

标志状态获取,软件由单独的函数接口实现,其软件实例如下:

d103fd34-881d-11ed-bfe3-dac502259ad0.png  
标志状态清除,软件由单独的函数接口实现,其软件实例如下:
d11eeb94-881d-11ed-bfe3-dac502259ad0.png  
注意: 435的三个ADC共用一个中断向量; 通用状态寄存器内有每个ADC的状态标志的映像,此映像为只读,不可通过映像来清除标志。  

多种转换数据的获取方式

  1、功能介绍

ADC具备多种转换数据的获取方式。不同通道类型、不同组合模式可支持的数据获取方式不同。

CPU读取抢占通道数据

抢占通道不具备DMA能力,因此不管什么组合模式,抢占通道数据均由CPU读取抢占数据寄存器x(ADC_PDTx)获得。

CPU读取普通通道数据(非组合模式)

只适用于非组合模式,软件设置ADC_CTRL2的EOCSFEN位让每次普通数据寄存器更新时置位OCCE标志,软件通过OCCE标志读取转换数据。

DMA读取普通通道数据(非组合模式)

非组合模式下,普通通道数据存储于 ADC 自己独立的数据寄存器中。软件设置OCDMAEN及OCDRCEN位让每次普通数据寄存器更新时产生DMA请求,DMA在每次收到DMA请求时读取转换数据。

DMA读取普通通道数据(组合模式)

组合模式下,普通通道数据会共同存储于通用普通数据寄存器中。存储方式透过ADC_CCTRL的MSDMASEL位配置,提供5种模式。只要MSDMASEL不为0,就会在每次数据备齐时使用ADC1的DMA通道请求DMA搬运数据。

表4. 主从组合模式的DMA模式

d13e8206-881d-11ed-bfe3-dac502259ad0.png  

图11. DMA模式与ADC模式对应关系

d172e6a4-881d-11ed-bfe3-dac502259ad0.png    

2、软件接口

CPU读取抢占通道数据,软件由单独的函数接口实现,其软件实例如下:

d199f898-881d-11ed-bfe3-dac502259ad0.png  

CPU读取普通通道数据(非组合模式),软件由单独的函数接口实现,其软件实例如下:


d1d4f844-881d-11ed-bfe3-dac502259ad0.png  

DMA读取普通通道数据(非组合模式),软件由单独的函数接口实现,其软件实例如下:

d1ef5504-881d-11ed-bfe3-dac502259ad0.png  

DMA读取普通通道数据(组合模式),软件由单独的函数接口实现,其软件实例如下:

d2108878-881d-11ed-bfe3-dac502259ad0.png  

注意: 使用CPU读取普通转换数据时,为避免溢出,通道采样周期需要足够大; 三个ADC共用一个中断向量,故中断服务函数一定要简洁,以避免因中断无法及时响应而导致数据溢出; 组合模式下,不可使用CPU读取普通通道转换数据; 组合模式下,一定要按照可支持的对应关系选用DMA模式。  

联动多ADC的主从模式

  功能介绍 ADC主从模式即通过触发主机来联动从机进行通道转换,并且将通用普通数据寄存器作为获取主从ADC普通通道数据的单一接口。 单从机主从模式以ADC1作为主机,ADC2作为从机,ADC3独立动作。双从机主从模式以ADC1作为主机,ADC2与ADC3作为从机。

图12. 主从模式的ADC框图
d24609b2-881d-11ed-bfe3-dac502259ad0.png

同时模式

同时模式可用于普通/抢占/普通抢占组合。配置同时模式后,可触发主机,使主机与从机同时转换各自的通道。在此模式下,必须使用相同的采样时间以及相同的序列长度,以避免主从之间失去同步,遗失数据。

图13. 普通同时模式

d263c1d2-881d-11ed-bfe3-dac502259ad0.png  

图14. 抢占同时模式

d2893b60-881d-11ed-bfe3-dac502259ad0.png  

注意: 同时模式下,需要禁止来自从机的触发; 同时模式下,触发间隔需要大于任意通道组的转换周期; 同样的通道不可同时被多个ADC采样,因此禁止将相同通道安排在不同ADC的同样序列位置。

交错触发模式

交错触发模式适用于抢占通道组,可单独使用也可与普通同时模式组合使用。配置抢占交错触发模式后,可多次触发主机的抢占通道,促使主从ADC轮流转换抢占通道组。

图15. 抢占交错触发模式

d2cfae38-881d-11ed-bfe3-dac502259ad0.png

位移模式

位移模式适用于普通通道组,此模式只可单独使用,不能与抢占通道组合使用。配置普通位移模式后,可触发主机普通通道,使各ADC之间自动在普通通道的转换上时序位移。 位移长度可由软件经ADC_CCTRL寄存器中的ASISEL位进行设定。 此模式下,硬件会保证不同ADC间的采样间隔至少2.5个ADCCLK。当软件设定的位移长度无法满足这个条件时,软件设定将会变得无效。因此利用这个特性,可以将相同通道安排在不同ADC的同样序列位置。

图16. 普通位移模式

d30164f0-881d-11ed-bfe3-dac502259ad0.png  
图17. 使用DMA模式2时的位移转换
d3407b72-881d-11ed-bfe3-dac502259ad0.png  
注意: 位移模式下禁止抢占通道触发、禁止从机的普通通道触发   软件接口 联动多ADC的主从模式设定,软件由公共部分结构体配置完成,其软件实例如下:
d368bd3a-881d-11ed-bfe3-dac502259ad0.png  
注意: 为避免主从间失去同步,主从机必须配置相同分辨率; 组合模式下,一定要按照可支持的对应关系选用DMA模式; 若有同时使用多个ADC低解析度转换的需求,建议使用主从模式搭配DMA1或DMA2。  

ADC配置解析

  以下对ADC的配置流程及数据获取方法进行说明。  

ADC配置流程

  ADC的配置一般包括如下内容

外部触发源配置

ADC外部触发源有TMR或EXINT,其配置无特殊性,参考普通的TMR或EXINT配置即可。 注意:此处仅是触发源的配置,触发源的使能需在ADC全部配置完毕后才可进行。

DMA配置使能

ADC普通通道转换数据可通过DMA传输,若应用需要DMA传输时,需提前进行DMA的初始化配置,其配置无特殊性,参考普通的DMA配置即可。

开启ADC数字时钟

开启ADC数字时钟,允许进行相关功能配置。

ADC公共部分结构体配置

包括主从模式、ADC分频、主从模式的DMA模式、DMA请求接续使能、位移模式位移长度、内部温度传感器及Vintrv、Vbat相关配置。

主从模式

依据从机数量、通道类型、组合类型进行选择,支持多达13种模式。

ADC分频

设定ADC模拟部分的时钟,其由HCLK分频而来,可设定2~17中的任意一种分频。

主从模式的DMA模式

需要结合主从模式进行选择,支持多达5种模式,抢占组合模式下需禁止DMA模式

DMA请求接续使能

设定在传输完DMA设定个数数据后,普通通道转换完毕是否再产生DMA请求。

位移模式位移长度

设定位移模式下相邻ADC间的采样间隔时间,可设定5~20个ADCCLK中的任意一种。

内部温度传感器及Vintrv

使能内部温度传感器及内部参考电压,其分别连接到ADC1的CH16和CH17。

Vbat

使能电池电压,电池电压经除4电路后连接到了ADC1的CH18。

注意:用ADC采集VBAT电压,当使能VBATEN后,VBAT会一直耗电,如果应用对功耗敏感,建议只在VBAT采样时才打开,采样结束后关闭。

ADC基础部分结构体配置

包括序列模式、反复模式、数据对齐、普通转换序列长度。

序列模式

不论普通还是抢占组,只要配置有多个通道,就需要开启序列模式。

反复模式

若应用需要周期性的触发转换时,就需要关闭反复模式,不然周期性的触发将变得无效。 当应用不想周期性的触发,而期望单次触发后就不停的转换设定通道组时需开启反复模式。

数据对齐

设定转换数据靠右或是靠左对齐放置于数据寄存器。

普通转换序列长度

可设定1~16中的任何一个长度,指示单个普通序列包含的通道个数,需与实际普通通道序列个数一致。

普通通道配置

包含通道配置、触发配置、数据传输方式。

通道配置

由转换顺序、通道值、采样周期的设定组成。其中不同顺序可配置相同通道值。

触发配置

由触发源和触发边沿检测的设定组成。若使用软件触发时,需要禁止触发边沿检测。

数据传输方式

可设定CPU或DMA传输转换数据。在主从组合模式下,需禁止此项配置。

抢占通道配置

包含通道个数、通道配置、触发配置。

通道个数

可设定1~4中的任何一个长度,指示单个抢占序列包含的通道个数,需与实际抢占通道序列个数一致。

通道配置

由转换顺序、通道值、采样周期的设定组成。其中不同顺序可配置相同通道值。

触发配置

由触发源和触发边沿检测的设定组成。若使用软件触发时,需要禁止触发边沿检测。

特殊模式配置(非必需)

分割模式

包括每次触发转换的普通通道个数、普通通道分割模式使能、抢占通道分割模式使能。

抢占自动转换模式

用于设定普通组转换结束后的抢占通道组自动转换使能。

过采样

包括过采样率、过采样移位、普通过采样触发模式使能、普通过采样重转模式选择、普通及抢占过采样使能的设定。

中断配置

使能对应中断,包括溢出中断、普通通道转换结束中断、抢占通道组转换结束中断、电压检测超过范围中断中的一个或多个。

ADC上电

使能ADC让ADC上电,由于上电需要稳定时间,因此ADC上电后需等待ADC的RDY标志处于置位后才可进行后续动作。

ADC校准

为保障ADC转换数据准确,在ADC上电后需进行校准。其包含: A/D初始化校准、等待初始化校准完成、A/D校准、等待校准完成。

ADC分辨率调整

在ADC校准完毕后,即可进行分辨率切换。切换分辨率后,软件需要等待ADC的RDY标志处于置位后才可进行后续动作。 至此,ADC的初始化配置就算全部完成。随后,可通过软件或使能硬件触发源进行触发转换。  

ADC数据获取方法

  ADC支持多种数据获取方法,通常可概括为如下几种

CPU获取抢占通道数据

抢占通道数据不具备DMA能力,只能透过CPU获取。推荐使用中断获取,方法如下 1) 抢占通道组转换结束中断使能; 2) 抢占通道组转换结束中断函数内将转换数据缓存进数组内; 3) 其他应用逻辑内透过数组内的数据进行数据的后续算法处理。

CPU读取普通通道数据

435额外支持通过CPU读取普通通道数据。为保障数据读取的实时性,同样推荐使用中断获取,方法如下 1) 软件设置ADC_CTRL2的EOCSFEN位让每次数据寄存器更新时置位OCCE标志; 2) 普通通道组转换结束中断使能; 3) 普通通道组转换结束中断函数内将转换数据缓存进数组内; 4) 其他应用逻辑内透过数组内的数据进行数据的后续算法处理。

DMA读取普通通道数据(单buffer模式)

普通通道数据具备DMA能力。为避免软件耗时,可直接采用DMA读取转换数据,方法如下 1) 初始化并使能DMA; 2) 使能ADC的DMA模式; 3) 在DMA传输完成中断函数内获取DMA的buffer数据; 4) 其他应用逻辑内透过buffer数据进行数据的后续算法处理。

DMA读取普通通道数据(双buffer模式)

435的EDMA支持双buffer模式。为避免数据处理不及时,可尝试使用双buffer缓存数据,方法如下 1) 初始化EDMA成双buffer模式并使能EDMA; 2) 使能ADC的DMA模式,使能普通通道数据的DMA请求接续; 3) 在EDMA传输完成中断函数内交叉获取EDMA的buffer数据; 4) 其他应用逻辑内透过获取到的buffer数据进行数据的后续算法处理。  

案例 ADC过采样

功能简介

  ADC支持过采样功能,在一些要求转换数据准确性的场合,可以使用过采样来实现。 本例将同时使用普通及抢占通道组的过采样。设定8倍过采样,保持12位分辨率。  

资源准备

  1) 硬件环境 对应产品型号的AT-START BOARD PA4 and PA7——3.3V PA5 and PB0——GND PA6 and PB1——1.5V左右 2) 软件环境 projectat_start_f4xxexamplesadcordinary_preempt_oversampling  

软件设计

  1) 配置流程

配置ADC使用的GPIO

配置用于普通通道数据传输的DMA

ADC相关配置设定

软件触发转换

获取转换数据

2) 代码介绍

GPIO配置函数代码

d38dc792-881d-11ed-bfe3-dac502259ad0.png

DMA配置函数代码

d3b3e3dc-881d-11ed-bfe3-dac502259ad0.png

ADC配置函数代码

d3de2282-881d-11ed-bfe3-dac502259ad0.png

中断服务函数代码

d4db5e2a-881d-11ed-bfe3-dac502259ad0.png

main函数代码

d5000be4-881d-11ed-bfe3-dac502259ad0.png

实验效果

  可通过串口打印查看实现效果,最终串口打印的转换数据如下。 图18. ADC过采样实验结果

d55aeeba-881d-11ed-bfe3-dac502259ad0.png    

案例 ADC电压监测

功能简介

  ADC支持电压监测功能,在需要监测通道电压时,可参考本例进行设计。 本例将固定监控普通通道组的Channel5,监控阈值为0~Vref+/3。  

资源准备

  1) 硬件环境 对应产品型号的AT-START BOARD PA4——3.3V PA5——0V PA6——1.5V左右 2) 软件环境 projectat_start_f4xxexamplesadcvoltage_monitoring  

软件设计

  1) 配置流程

配置ADC使用的GPIO

配置用于普通通道数据传输的DMA

ADC相关配置及电压监测设定

普通通道软触发

获取转换数据

2) 代码介绍

GPIO配置函数代码

d57efcba-881d-11ed-bfe3-dac502259ad0.png

DMA配置函数代码

d5976dc2-881d-11ed-bfe3-dac502259ad0.png

ADC配置函数代码

d5bcee1c-881d-11ed-bfe3-dac502259ad0.png

中断服务函数代码

d63f98f8-881d-11ed-bfe3-dac502259ad0.png

main函数代码

d6647a88-881d-11ed-bfe3-dac502259ad0.png

实验效果

  可通过串口打印查看实现效果,测试过程中随机将Channel5外接1.5V,最终串口打印信息如下。 通过打印信息可以看到:有实际监测到Channel5超过监控阈值,且记录到的实际监控值为1.5V。 图19. ADC电压监测实验结果 d68e7a36-881d-11ed-bfe3-dac502259ad0.png    

案例 ADC双Buffer

功能简介

  EDMA具备双缓冲模式功能,ADC配合这个功能使用,可有效提高数据转换效率。 本案例将以该EDMA的双缓冲功能为基础,示范如何配置使用ADC的快速转换。  

资源准备

  1) 硬件环境 对应产品型号的AT-START BOARD PA4——3.3V PA5——0V PA6——1.5V左右 2) 软件环境 projectat_start_f4xxexamplesadcedma_double_buffer  

软件设计

  1) 配置流程

配置ADC使用的GPIO

配置用于普通通道数据传输的DMA

ADC相关配置及设定

普通通道软触发

获取转换数据

2) 代码介绍

GPIO配置函数代码

d6aff72e-881d-11ed-bfe3-dac502259ad0.png

DMA配置函数代码

d6d5828c-881d-11ed-bfe3-dac502259ad0.png

ADC配置函数代码

d70d8c2c-881d-11ed-bfe3-dac502259ad0.png

中断服务函数代码

d74c1816-881d-11ed-bfe3-dac502259ad0.png

main函数代码

d7711efe-881d-11ed-bfe3-dac502259ad0.png

实验效果

  可通过串口打印查看实现效果,如下图所示,ADC转换数据被硬件循环的存储到EDMA设定的两个buffer内了。 图20. ADC电压监测实验结果

d7acb27a-881d-11ed-bfe3-dac502259ad0.png

案例 ADC DMA模式1

功能简介

  ADC主从组合模式下的普通通道转换数据需经DMA传输。DMA支持多种模式,不同模式数据的传输规则存在明显差异。 当选择不适用的DMA模式传输转换数据时,会因传输不及时导致数据溢出等问题。因此应用中ADC主从组合模式与DMA模式需要按照RM要求搭配使用。 DMA模式1适用ADC组合模式如下: 普通同时模式(单从机)、普通位移模式(单从机)、普通同时模式(双从机)、普通位移模式(双从机)本案例将以“DMA模式1+普通同时模式(双从机)”为基础进行使用示范。  

资源准备

  1) 硬件环境 对应产品型号的AT-START BOARD PA4 and PA7 and PC0——3.3V PA5 and PB0 and PC2——GND PA6 and PB1 and PC3——1.5V左右 2) 软件环境 projectat_start_f4xxexamplesadccombine_mode_ordinary_smlt_twoslave_dma1  

软件设计

  1) 配置流程

配置ADC使用的GPIO

配置用于触发的TMR(TMR1_TRGOUT2 event)

配置用于普通通道数据传输的DMA

ADC相关配置及设定

等待触发完毕后关闭触发TMR

获取转换数据

2) 代码介绍

GPIO配置函数代码

d7d05b1c-881d-11ed-bfe3-dac502259ad0.png

TMR配置函数代码

d7fa2d5c-881d-11ed-bfe3-dac502259ad0.png

DMA配置函数代码

d8aa24dc-881d-11ed-bfe3-dac502259ad0.png

ADC配置函数代码

d8d67cf8-881d-11ed-bfe3-dac502259ad0.png

中断服务函数代码

d9f08066-881d-11ed-bfe3-dac502259ad0.png

main函数代码

da11fafc-881d-11ed-bfe3-dac502259ad0.png

实验效果

  可通过串口打印查看实现效果,最终串口打印的转换数据如下。 ADC转换数据以半字为单位进行传输,传输顺序为: ADC1第一个转换通道; ADC2第一个转换通道; ADC3第一个转换通道; ADC1第二个转换通道; ADC2第二个转换通道; ADC3第二个转换通道; ADC1第三个转换通道; ADC2第三个转换通道; ADC3第三个转换通道; ADC1第一个转换通道……

图21. ADC DMA模式1实验结果

da3fb51e-881d-11ed-bfe3-dac502259ad0.png

案例 ADC DMA模式2

功能简介

  ADC主从组合模式下的普通通道转换数据需经DMA传输。DMA支持多种模式,不同模式数据的传输规则存在明显差异。 当选择不适用的DMA模式传输转换数据时,会因传输不及时导致数据溢出等问题。因此应用中ADC主从组合模式与DMA模式需要按照RM要求搭配使用。 DMA模式2适用ADC组合模式如下: 普通同时模式(单从机)、普通位移模式(单从机)、普通位移模式(双从机) 本案例将以“DMA模式2+普通同时模式(单从机)”为基础进行使用示范。  

资源准备

  1) 硬件环境 对应产品型号的AT-START BOARD PA4 and PA7——3.3V PA5 and PB0——GND PA6 and PB1——1.5V左右 2) 软件环境 projectat_start_f4xxexamplesadccombine_mode_ordinary_smlt_oneslave_dma2  

软件设计

  1) 配置流程

开ADC使用的GPIO配置

配置用于普通通道数据传输的DMA

ADC相关配及设定

普通通道软触发

获取转换数据

2) 代码介绍

GPIO配置函数代码

da7369fe-881d-11ed-bfe3-dac502259ad0.png

DMA配置函数代码

da9eb938-881d-11ed-bfe3-dac502259ad0.png

ADC配置函数代码

dad23aa6-881d-11ed-bfe3-dac502259ad0.png

中断服务函数代码

db002b96-881d-11ed-bfe3-dac502259ad0.png

main函数代码

db25fdf8-881d-11ed-bfe3-dac502259ad0.png

实验效果

  可通过串口打印查看实现效果,最终串口打印的转换数据如下。 ADC转换数据以字为单位进行传输,传输顺序为: (ADC2第一个转换通道<<16)|ADC1第一个转换通道; (ADC2第二个转换通道<<16)|ADC1第二个转换通道; (ADC2第三个转换通道<<16)|ADC1第三个转换通道; (ADC2第一个转换通道<<16)|ADC1第一个转换通道……

图22. ADC DMA模式2实验结果

dbee0744-881d-11ed-bfe3-dac502259ad0.png    

案例 ADC DMA模式3

功能简介

  ADC主从组合模式下的普通通道转换数据需经DMA传输。DMA支持多种模式,不同模式数据的传输规则存在明显差异。 当选择不适用的DMA模式传输转换数据时,会因传输不及时导致数据溢出等问题。因此应用中ADC主从组合模式与DMA模式需要按照RM要求搭配使用。 DMA模式3适用ADC组合模式如下: 6/8位分辨率的普通同时模式(单从机)、6/8位分辨率的普通位移模式(单从机)、6/8位分辨率的普通位移模式(双从机) 本案例将以“DMA模式3+8位分辨率的普通位移模式(双从机)”为基础进行使用示范。  

资源准备

  1) 硬件环境 对应产品型号的AT-START BOARD PA4——3.3V PA7——GND PC0——1.5V左右 2) 软件环境 projectat_start_f4xxexamplesadccombine_mode_ordinary_shift_twoslave_dma3  

软件设计

  3) 配置流程

配置ADC使用的GPIO

配置用于触发的TMR(TMR1_TRGOUT event)

配置用于普通通道数据传输的DMA

ADC相关配置及设定

等待触发完毕后关闭触发TMR

获取转换数据

4) 代码介绍

GPIO配置函数代码

dc135968-881d-11ed-bfe3-dac502259ad0.png

TMR配置函数代码

dc4a69f8-881d-11ed-bfe3-dac502259ad0.png

DMA配置函数代码

dc8cc154-881d-11ed-bfe3-dac502259ad0.png

ADC配置函数代码

dcb2a626-881d-11ed-bfe3-dac502259ad0.png

中断服务函数代码

de1b7678-881d-11ed-bfe3-dac502259ad0.png

main函数代码

de43b70a-881d-11ed-bfe3-dac502259ad0.png

实验效果

  可通过串口打印查看实现效果,最终串口打印的转换数据如下。 ADC转换数据以半字为单位进行传输,传输顺序为: (ADC2的转换通道<<8)|ADC1的转换通道; (ADC1的转换通道<<8)|ADC3的转换通道; (ADC3的转换通道<<8)|ADC2的转换通道; (ADC2的转换通道<<8)|ADC1的转换通道……

图23. ADC DMA模式3实验结果

de7ae180-881d-11ed-bfe3-dac502259ad0.png    

案例 ADC DMA模式4

功能简介

  ADC主从组合模式下的普通通道转换数据需经DMA传输。DMA支持多种模式,不同模式数据的传输规则存在明显差异。 当选择不适用的DMA模式传输转换数据时,会因传输不及时导致数据溢出等问题。因此应用中ADC主从组合模式与DMA模式需要按照RM要求搭配使用。 DMA模式4适用ADC组合模式如下: 6/8位分辨率的普通同时模式(双从机)、6/8位分辨率的普通位移模式(双从机) 本案例将以“DMA模式4+8位分辨率的普通位移模式(双从机)”为基础进行使用示范。  

资源准备

  1) 硬件环境 对应产品型号的AT-START BOARD PA4——3.3V PA7——GND PC0——1.5V左右 2) 软件环境 projectat_start_f4xxexamplesadccombine_mode_ordinary_shift_twoslave_dma4  

软件设计

  1) 配置流程

配置ADC使用的GPIO

配置用于触发的TMR(TMR1_TRGOUT event)

配置用于普通通道数据传输的DMA

ADC相关配置及设定

等待触发完毕后关闭触发TMR

获取转换数据

2) 代码介绍

GPIO配置函数代码

de9b67de-881d-11ed-bfe3-dac502259ad0.png

TMR配置函数代码

deb5f5fe-881d-11ed-bfe3-dac502259ad0.png

DMA配置函数代码

dee7b7e2-881d-11ed-bfe3-dac502259ad0.png

ADC配置函数代码

df01fb98-881d-11ed-bfe3-dac502259ad0.png

中断服务函数代码

e05c9e94-881d-11ed-bfe3-dac502259ad0.png

main函数代码

e0ada3fc-881d-11ed-bfe3-dac502259ad0.png

实验效果

  可通过串口打印查看实现效果,最终串口打印的转换数据如下。 ADC转换数据以字为单位进行传输,传输顺序为: (ADC3的转换通道<<16)|(ADC2的转换通道<<8)|ADC1的转换通道; (ADC3的转换通道<<16)|(ADC2的转换通道<<8)|ADC1的转换通道…… 图24. ADC DMA模式4实验结果 e144b5c6-881d-11ed-bfe3-dac502259ad0.png    

案例 ADC DMA模式5

功能简介

  ADC主从组合模式下的普通通道转换数据需经DMA传输。DMA支持多种模式,不同模式数据的传输规则存在明显差异。 当选择不适用的DMA模式传输转换数据时,会因传输不及时导致数据溢出等问题。因此应用中ADC主从组合模式与DMA模式需要按照RM要求搭配使用。 DMA模式5适用ADC组合模式如下: 普通同时模式(双从机)、普通位移模式(双从机) 本案例将以“DMA模式5+普通同时模式(双从机)”为基础进行使用示范。  

资源准备

  1) 硬件环境 对应产品型号的AT-START BOARD PA4 and PA7 and PC0——3.3V PA5 and PB0 and PC2——GND PA6 and PB1 and PC3——1.5V左右 2) 软件环境 projectat_start_f4xxexamplesadccombine_mode_ordinary_smlt_twoslave_dma5  

软件设计

  1) 配置流程

配置ADC使用的GPIO

配置用于触发的TMR(TMR1_CH1 event)

配置用于普通通道数据传输的DMA

ADC相关配置及设定

等待触发完毕后关闭触发TMR

获取转换数据

2) 代码介绍

GPIO配置函数代码

e168da3c-881d-11ed-bfe3-dac502259ad0.png

TMR配置函数代码

e1a32868-881d-11ed-bfe3-dac502259ad0.png

DMA配置函数代码

e1cfbc0c-881d-11ed-bfe3-dac502259ad0.png

ADC配置函数代码

e1feaddc-881d-11ed-bfe3-dac502259ad0.png

中断服务函数代码

e222d220-881d-11ed-bfe3-dac502259ad0.png

main函数代码

e24f1376-881d-11ed-bfe3-dac502259ad0.png

实验效果

  可通过串口打印查看实现效果,最终串口打印的转换数据如下。 ADC转换数据以字为单位进行传输,传输顺序为: (ADC2第一个转换通道<<16)|ADC1第一个转换通道; ADC3第一个转换通道; (ADC2第二个转换通道<<16)|ADC1第二个转换通道; ADC3第二个转换通道; (ADC2第三个转换通道<<16)|ADC1第三个转换通道; ADC3第三个转换通道 (ADC2第一个转换通道<<16)|ADC1第一个转换通道…… 图25. ADC DMA模式5实验结果

e279519a-881d-11ed-bfe3-dac502259ad0.png

案例 ADC侦测Vref电压

功能简介

  实际应用场景中,受外部电路等因素影响,ADC的模拟参考电压可能出现波动,导致ADC转换结果出现失真。当无法优化硬件时,可尝试如下解决办法。 ADC通道ADC1_IN17连接到了MCU的内部参考电压,该内部参考电压是经LDO输出的稳定的1.2V电压值。故可通过ADC1_IN17的转换数据来反推当前的实际模拟参考电压值。再以获取的模拟参考电压进行ADC转换通道数据的计算。 本例将示例如何以ADC1_IN17的转换结果来反推当前的模拟参考电压值。  

资源准备

  1) 硬件环境: 对应产品型号的AT-START BOARD 2) 软件环境 projectat_start_f4xxexamplesadccurrent_vref_value_check  

软件设计

  1) 配置流程

配置ADC使用的GPIO

配置用于普通通道数据传输的DMA

ADC相关配置及设定

普通通道软触发

获取转换数据反推当前Vref值

2) 代码介绍

DMA配置函数代码

e2a45188-881d-11ed-bfe3-dac502259ad0.png

ADC配置函数代码

e2d14260-881d-11ed-bfe3-dac502259ad0.png

中断服务函数代码

e31ce954-881d-11ed-bfe3-dac502259ad0.png

main函数代码

e1feaddc-881d-11ed-bfe3-dac502259ad0.png

实验效果

  可通过串口打印查看实现效果,测试未独立外接Vref,并使用AT-Link供电,可以看到实际Vref电压固定保持3.32V左右。 图26. ADC侦测Vref电压实验结果 e3582104-881d-11ed-bfe3-dac502259ad0.png       

  审核编辑:汤梓红

(责任编辑:admin)
织梦二维码生成器
相关文章
------分隔线----------------------------
栏目列表
推荐内容