AT32讲堂042 | AT32F435/437 ADC使用指南

adc简介
adc控制器的功能极其强大。其包含但不限于以下内容
时钟及状态,由数字和模拟时钟两个部分组成
分辨率及采样转换,可配置分辨率为12/10/8/6位的转换,采样周期支持广范围的配置
自校准,自带校准功能以纠正数据偏移
基本模式,支持多种模式,不同模式可组合使用满足多种应用
不同优先权的通道,普通通道与抢占通道具备不同的优先权
多种独立的触发源,包括tmr、exint、软触发等多种触发选择
数据后级处理,包括数据的对齐,抢占通道偏移量等多种处理
转换中止,可软件控制在adc不掉电状态下实现转换中止
过采样器,普通及抢占通道均支持过采样
电压监测,通过对转换结果的判定来实现电压监测
中断及状态事件,具备多种标志指示adc状态,且某些标志还具备中断功能
多种转换数据的获取方式,包括dma获取、cpu获取两种方式实现转换数据的读取
联动多adc的主从模式,可设定同时、交错、位移等多种组合模式,且支持单及双从机选择
图1. adc1框图
adc功能解析
时钟及状态
功能介绍adc的时钟分为数字时钟与模拟时钟。其统一通过crm_apb2en的adcxen位使能。
数字时钟:即pclk2,经hclk分频而来,提供给数字部分使用。
模拟时钟:即adcclk,经adc预分频器分频而来,提供给模拟部分使用。
软件接口adc时钟使能,软件由单独的函数接口实现,其软件实例如下:当adc时钟使能后,软件即可开始进行adc的一些相关配置。
adc预分频设定,软件由adc公共部分结构体配置完成,其软件实例如下:
此项实际用于设定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的转换时间来完成单通道的转换,再结合数据处理,因此单个通道的整体转换时间即示例:csptx选择6.5周期,crsel选择10位,一次转换需要6.5+10+0.5=17个adcclk周期。软件接口adc分辨率设定,软件由单独的函数接口实现,其软件实例如下:注意:adc的自校准只能在12位分辨率下进行,切分辨需安排在校准完成后执行。
adc采样周期设定,软件由单独的函数接口实现,其软件实例如下:
注意:不同通道可设定不同的采样周期;当采用中断或轮询方式获取普通通道数据,为避免溢出,建议合理增大采样周期;为避免充电不充分导致转换数据不准确,应用允许的条件下,建议合理增大采样周期。
自校准
功能介绍adc具备自校准能力,软件可以执行自校准命令,透过自校准可以计算出一个校准值。不需要软件干预,adc会自动将该校准值反馈回adc内部补偿adc基础偏差,以保障转换数据的准确性。校准值有两种获取方式:
软件下自校准命令,由硬件自动计算,产生的校准值保存在adc->calval寄存器内
软件直接根据经验值,手动设定校准值,该值同样被保存在adc->calval寄存器内
自校准的软件流程如下
在12位分辨率状态下使能adc
等待adc的rdy标志置位
执行初始化校准命令并等待初始化校准完成
执行校准命令并等待校准完成
根据应用需求切换到期望配置的分辨率
等待adc的rdy标志置位
执行完上述流程后,即可开始进行adc的触发转换。
软件接口完整的校准及设定分辨率需由组合命令实现,依据校准值设定方式可区分如下两种自校准方式,其软件实例如下:写经验值校准方式,其软件实例如下:注意:校准值的存放不会置位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. 序列模式
反复模式
adc支持反复模式设定,开启反复模式后,当检测到触发后就即会反复不断地转换普通通道组。图3. 反复模式+抢占自动转换模式
分割模式
adc支持分割模式设定。对于普通通道组,分割模式可依据设定将通道组分割成长度较小的子组别。一次触发将转换子组别中的所有通道。每次触发会依序选择不同的子组别进行转换。对于抢占通道组,分割模式直接以通道为单位进行分割,一次触发将转换单个通道。每次触发会依序选择不同的通道进行转换。图4. 分割模式
抢占自动转换模式
adc支持抢占自动转换模式设定,开启抢占自动转换模式后,当普通通道转换完成后,抢占通道将自动接续着转换,而不需要进行抢占通道的触发。图5. 抢占自动转换模式2、软件接口adc序列模式和反复模式设定,由adc基础部分结构体配置完成,其软件实例如下:注意:序列模式对普通及抢占通道组均有效;反复模式仅对普通通道组有效,抢占通道组不具备反复模式功能;反复模式与分割模式不可共用;反复模式可与抢占自动转换模式共用,将实现依次反复的转换普通通道序列及抢占通道序列。adc分割模式设定,软件由单独的函数接口实现,其软件实例如下:注意:分割模式对普通及抢占通道组均有效;抢占通道组分割模式子组别长度不可设定,其固定为单个通道;分割模式与反复模式、抢占自动转换模式不可共用,普通通道与抢占通道的分割模式不可共用。抢占自动转换模式设定,软件由单独的函数接口实现,其软件实例如下:注意:抢占自动转换模式仅对抢占通道组有效;抢占自动转换模式与分割模式不可共用。
不同优先权的通道
1、功能介绍adc设计有具备不同优先权的两种通道组:普通通道组与抢占通道组。普通通道组通常用于执行常规的数据转换。支持最多配置16个通道,转换将按照设定的通道顺序依次进行。其不具备抢占能力。抢占通道组通常用于执行相对紧急的数据转换。支持最多配置4个通道,转换将按照设定的通道顺序依次进行。其具备抢占能力,即抢占通道组的转换可以打断正在执行的普通通道转换,待抢占通道组转换完毕后再恢复执行被打断的普通通道组转换。2、软件接口普通通道组设定,软件包括通道数量、通道数值、转换顺序、采样周期的设定,其软件实例如下:抢占通道组设定,软件包括通道数量、通道数值、转换顺序、采样周期的设定,其软件实例如下:注意:不同通道可以设定不同的采样周期;同一通道可以被反复编排进转换序列进行转换;序列模式下,普通通道组从osn1开始转换,抢占通道组是从psnx开始转换(x=4-pclen)。
多种独立的触发源
功能介绍adc支持多种触发源,包含软件写寄存器触发(adc_ctrl2的ocswtrg与pcswtrg)以及外部触发。外部触发包含定时器触发与引脚触发,外部触发可设定触发极性(触发极性可选择禁止边沿触发、上升沿触发、下降沿触发或任意边沿触发)。表1. 普通通道触发源表2. 抢占通道触发源软件接口软件写寄存器触发设定,软件由单独的函数接口实现,其软件实例如下:在adc ready后,软件即可执行adc_ordinary_software_trigger_enable(adc1,true);/adc_preempt_software_trigger_enable(adc1,true);来进行普通/抢占通道的触发。外部触发设定,软件由单独的函数接口实现,其软件实例如下:在adc ready后,tmr1ch1的上升沿事件就会触发普通通道组转换,tmr3ch4的上升沿事件就会触发抢占通道组转换。注意:触发间隔需要大于通道组转换的时间,转换期间发生的相同通道组的触发会被忽略;使用软件写寄存器触发时,对应触发极性必须选择禁止边沿触发;抢占通道转换优先权最高,不管当前是否有普通通道转换,其触发后就会立即开始响应转换;普通触发具备记忆功能,在抢占转换时执行普通触发,该触发会被记录并在抢占转换完毕后响应;多adc的主从模式下,需要将从adc的触发极性选择为禁止边沿触发。
数据后级处理
1、功能介绍adc具备专有的数据寄存器,普通通道转换完成后数据存储于普通数据寄存器(adc_odt),抢占通道转换完成后数据存储于抢占数据寄存器x(adc_pdtx)。数据寄存器内存储的是经过处理后的数据。该处理包括数据对齐、抢占数据偏移。数据对齐分左对齐和右对齐。分辨率crsel为6位时,数据存储方式以字节为基准摆放,其余皆以半字为基准摆放。抢占数据偏移抢占通道的数据会减去抢占数据偏移寄存器x(adc_pcdtox)内的偏移量,因此抢占通道数据有可能为负值,以sign作为符号。图6. 数据内容处理2、软件接口数据对齐设定,软件由adc基础部分结构体配置完成,其软件实例如下:抢占数据偏移设定,软件由单独的函数接口实现,其软件实例如下:
转换中止
功能介绍adc具备转换中止功能。在adc转换过程中,用户可利用adc_ctrl2的adabrt使adc停止转换。停止转换后,转换顺序回归第一个通道,用户即可重新编排通道顺序,再次触发adc将从头开始执行新序列的转换。图7. 转换中止时序软件接口转换中止设定,软件由单独的函数接口实现,其软件实例如下:注意:转换中止命令对普通及抢占通道转换都有效;转换中止功能类似adc重上电,但是转换中止不会使adc掉电,不存在adc上电唤醒时间;转换中止的执行需要时间,在执行转换中止命令后一定要等待adabrt位被硬件清除后才可进行后续的触发转换。
过采样器
1、功能介绍adc具备过采样功能。一次过采样是透过转换多次相同通道,累加转换数据后作平均实现的。
由adc_ovsp的osrsel选择过采样率,此位用来定义过采样倍数;
由adc_ovsp的osssel选择过采样移位,此位用来定义平均系数。
若平均后数据大于16位,只取靠右16位数据,放入16位数据寄存器。使用过采样时,忽视数据对齐及抢占数据偏移的设定,数据一律靠右摆放。表3. 最大累加数据与过采样倍数及位移系数关系
普通通道过采样被打断后的恢复方式
普通通道过采样中途被抢占通道转换打断后的恢复方式由oosrsel设定
oosrsel=0:接续模式。保留已累加的数据,再次开始转换时将从打断处转换;
oosrsel=1:重转模式。累加的数据被清空,再次开始转换时重新开始该通道的过采样转换。
图8. 普通过采样被打断后的恢复方式
普通通道过采样触发模式
普通通道过采样的触发模式由oostren设定
oostren=0:关闭触发模式。通道的所有过采样转换仅需一次触发;
oostren=1:开启触发模式。通道的每个过采样转换均需进行触发。
此模式下,中途被抢占通道触发打断后,须重新触发普通通道才会恢复转换普通通道过采样。图9. 普通过采样触发模式
抢占通道过采样
抢占过采样可与普通过采样同时使用,也可分别使用。抢占过采样不影响到普通过采样的各种模式。图10. 抢占自动转换下的过采样模式2、软件接口过采样率、过采样移位及过采样使能设定,软件由单独的函数接口实现,其软件实例如下:普通通道过采样被打断后的恢复方式设定,软件由单独的函数接口实现,其软件实例如下:普通通道过采样触发模式设定,软件由单独的函数接口实现,其软件实例如下:
电压监测
功能介绍adc具备电压监测功能。用以监控输入电压与设定阈值的关系。当转换结果大于高边界adc_vmhb[11:0]寄存器或是小于低边界adc_vmlb[11:0]寄存器时,电压监测超出标志vmor会置起。透过vmsgen选择对单一通道或是所有通道监测。对单一通道监测的话,由vmcsel配置通道。软件接口监测单一通道,软件由单独的函数接口实现,其软件实例如下:监测所有通道,软件由单独的函数接口实现,其软件实例如下:注意:电压监测一律以转换的原始数据与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的通道转换数据超过设定阈值后置位,通常应用使用此标志来监控通道电压。软件接口中断使能设定,软件由单独的函数接口实现,其软件实例如下:标志状态获取,软件由单独的函数接口实现,其软件实例如下:标志状态清除,软件由单独的函数接口实现,其软件实例如下:注意: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模式图11. dma模式与adc模式对应关系2、软件接口cpu读取抢占通道数据,软件由单独的函数接口实现,其软件实例如下:cpu读取普通通道数据(非组合模式),软件由单独的函数接口实现,其软件实例如下:dma读取普通通道数据(非组合模式),软件由单独的函数接口实现,其软件实例如下:dma读取普通通道数据(组合模式),软件由单独的函数接口实现,其软件实例如下:注意:使用cpu读取普通转换数据时,为避免溢出,通道采样周期需要足够大;三个adc共用一个中断向量,故中断服务函数一定要简洁,以避免因中断无法及时响应而导致数据溢出;组合模式下,不可使用cpu读取普通通道转换数据;组合模式下,一定要按照可支持的对应关系选用dma模式。
联动多adc的主从模式
功能介绍adc主从模式即通过触发主机来联动从机进行通道转换,并且将通用普通数据寄存器作为获取主从adc普通通道数据的单一接口。单从机主从模式以adc1作为主机,adc2作为从机,adc3独立动作。双从机主从模式以adc1作为主机,adc2与adc3作为从机。图12. 主从模式的adc框图
同时模式同时模式可用于普通/抢占/普通抢占组合。配置同时模式后,可触发主机,使主机与从机同时转换各自的通道。在此模式下,必须使用相同的采样时间以及相同的序列长度,以避免主从之间失去同步,遗失数据。图13. 普通同时模式图14. 抢占同时模式注意:同时模式下,需要禁止来自从机的触发;同时模式下,触发间隔需要大于任意通道组的转换周期;同样的通道不可同时被多个adc采样,因此禁止将相同通道安排在不同adc的同样序列位置。
交错触发模式交错触发模式适用于抢占通道组,可单独使用也可与普通同时模式组合使用。配置抢占交错触发模式后,可多次触发主机的抢占通道,促使主从adc轮流转换抢占通道组。图15. 抢占交错触发模式
位移模式位移模式适用于普通通道组,此模式只可单独使用,不能与抢占通道组合使用。配置普通位移模式后,可触发主机普通通道,使各adc之间自动在普通通道的转换上时序位移。位移长度可由软件经adc_cctrl寄存器中的asisel位进行设定。此模式下,硬件会保证不同adc间的采样间隔至少2.5个adcclk。当软件设定的位移长度无法满足这个条件时,软件设定将会变得无效。因此利用这个特性,可以将相同通道安排在不同adc的同样序列位置。图16. 普通位移模式图17. 使用dma模式2时的位移转换注意:位移模式下禁止抢占通道触发、禁止从机的普通通道触发软件接口联动多adc的主从模式设定,软件由公共部分结构体配置完成,其软件实例如下:注意:为避免主从间失去同步,主从机必须配置相同分辨率;组合模式下,一定要按照可支持的对应关系选用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 boardpa4 and pa7——3.3vpa5 and pb0——gndpa6 and pb1——1.5v左右2) 软件环境project\at_start_f4xx\examples\adc\ordinary_preempt_oversampling
软件设计
1) 配置流程
配置adc使用的gpio
配置用于普通通道数据传输的dma
adc相关配置设定
软件触发转换
获取转换数据
2) 代码介绍
gpio配置函数代码
dma配置函数代码
adc配置函数代码
中断服务函数代码
main函数代码
实验效果
可通过串口打印查看实现效果,最终串口打印的转换数据如下。图18. adc过采样实验结果
案例 adc电压监测
功能简介
adc支持电压监测功能,在需要监测通道电压时,可参考本例进行设计。本例将固定监控普通通道组的channel5,监控阈值为0~vref+/3。
资源准备
1) 硬件环境对应产品型号的at-start boardpa4——3.3vpa5——0vpa6——1.5v左右2) 软件环境project\at_start_f4xx\examples\adc\voltage_monitoring
软件设计
1) 配置流程
配置adc使用的gpio
配置用于普通通道数据传输的dma
adc相关配置及电压监测设定
普通通道软触发
获取转换数据
2) 代码介绍
gpio配置函数代码
dma配置函数代码
adc配置函数代码
中断服务函数代码
main函数代码
实验效果
可通过串口打印查看实现效果,测试过程中随机将channel5外接1.5v,最终串口打印信息如下。通过打印信息可以看到:有实际监测到channel5超过监控阈值,且记录到的实际监控值为1.5v。图19. adc电压监测实验结果
案例 adc双buffer
功能简介
edma具备双缓冲模式功能,adc配合这个功能使用,可有效提高数据转换效率。本案例将以该edma的双缓冲功能为基础,示范如何配置使用adc的快速转换。
资源准备
1) 硬件环境对应产品型号的at-start boardpa4——3.3vpa5——0vpa6——1.5v左右2) 软件环境project\at_start_f4xx\examples\adc\edma_double_buffer
软件设计
1) 配置流程
配置adc使用的gpio
配置用于普通通道数据传输的dma
adc相关配置及设定
普通通道软触发
获取转换数据
2) 代码介绍
gpio配置函数代码
dma配置函数代码
adc配置函数代码
中断服务函数代码
main函数代码
实验效果
可通过串口打印查看实现效果,如下图所示,adc转换数据被硬件循环的存储到edma设定的两个buffer内了。图20. adc电压监测实验结果
案例 adc dma模式1
功能简介
adc主从组合模式下的普通通道转换数据需经dma传输。dma支持多种模式,不同模式数据的传输规则存在明显差异。当选择不适用的dma模式传输转换数据时,会因传输不及时导致数据溢出等问题。因此应用中adc主从组合模式与dma模式需要按照rm要求搭配使用。dma模式1适用adc组合模式如下:普通同时模式(单从机)、普通位移模式(单从机)、普通同时模式(双从机)、普通位移模式(双从机)本案例将以“dma模式1+普通同时模式(双从机)”为基础进行使用示范。
资源准备
1) 硬件环境对应产品型号的at-start boardpa4 and pa7 and pc0——3.3vpa5 and pb0 and pc2——gndpa6 and pb1 and pc3——1.5v左右2) 软件环境project\at_start_f4xx\examples\adc\combine_mode_ordinary_smlt_twoslave_dma1
软件设计
1) 配置流程
配置adc使用的gpio
配置用于触发的tmr(tmr1_trgout2 event)
配置用于普通通道数据传输的dma
adc相关配置及设定
等待触发完毕后关闭触发tmr
获取转换数据
2) 代码介绍
gpio配置函数代码
tmr配置函数代码
dma配置函数代码
adc配置函数代码
中断服务函数代码
main函数代码
实验效果
可通过串口打印查看实现效果,最终串口打印的转换数据如下。adc转换数据以半字为单位进行传输,传输顺序为:adc1第一个转换通道;adc2第一个转换通道;adc3第一个转换通道;adc1第二个转换通道;adc2第二个转换通道;adc3第二个转换通道;adc1第三个转换通道;adc2第三个转换通道;adc3第三个转换通道;adc1第一个转换通道……图21. adc dma模式1实验结果
案例 adc dma模式2
功能简介
adc主从组合模式下的普通通道转换数据需经dma传输。dma支持多种模式,不同模式数据的传输规则存在明显差异。当选择不适用的dma模式传输转换数据时,会因传输不及时导致数据溢出等问题。因此应用中adc主从组合模式与dma模式需要按照rm要求搭配使用。dma模式2适用adc组合模式如下:普通同时模式(单从机)、普通位移模式(单从机)、普通位移模式(双从机)本案例将以“dma模式2+普通同时模式(单从机)”为基础进行使用示范。
资源准备
1) 硬件环境对应产品型号的at-start boardpa4 and pa7——3.3vpa5 and pb0——gndpa6 and pb1——1.5v左右2) 软件环境project\at_start_f4xx\examples\adc\combine_mode_ordinary_smlt_oneslave_dma2
软件设计
1) 配置流程
开adc使用的gpio配置
配置用于普通通道数据传输的dma
adc相关配及设定
普通通道软触发
获取转换数据
2) 代码介绍
gpio配置函数代码
dma配置函数代码
adc配置函数代码
中断服务函数代码
main函数代码
实验效果
可通过串口打印查看实现效果,最终串口打印的转换数据如下。adc转换数据以字为单位进行传输,传输顺序为:(adc2第一个转换通道<<16)|adc1第一个转换通道;(adc2第二个转换通道<<16)|adc1第二个转换通道;(adc2第三个转换通道<<16)|adc1第三个转换通道;(adc2第一个转换通道<<16)|adc1第一个转换通道……图22. adc dma模式2实验结果
案例 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 boardpa4——3.3vpa7——gndpc0——1.5v左右2) 软件环境project\at_start_f4xx\examples\adc\combine_mode_ordinary_shift_twoslave_dma3
软件设计
3) 配置流程
配置adc使用的gpio
配置用于触发的tmr(tmr1_trgout event)
配置用于普通通道数据传输的dma
adc相关配置及设定
等待触发完毕后关闭触发tmr
获取转换数据
4) 代码介绍
gpio配置函数代码
tmr配置函数代码
dma配置函数代码
adc配置函数代码
中断服务函数代码
main函数代码
实验效果
可通过串口打印查看实现效果,最终串口打印的转换数据如下。adc转换数据以半字为单位进行传输,传输顺序为:(adc2的转换通道<<8)|adc1的转换通道;(adc1的转换通道<<8)|adc3的转换通道;(adc3的转换通道<<8)|adc2的转换通道;(adc2的转换通道<<8)|adc1的转换通道……图23. adc dma模式3实验结果
案例 adc dma模式4
功能简介
adc主从组合模式下的普通通道转换数据需经dma传输。dma支持多种模式,不同模式数据的传输规则存在明显差异。当选择不适用的dma模式传输转换数据时,会因传输不及时导致数据溢出等问题。因此应用中adc主从组合模式与dma模式需要按照rm要求搭配使用。dma模式4适用adc组合模式如下:6/8位分辨率的普通同时模式(双从机)、6/8位分辨率的普通位移模式(双从机)本案例将以“dma模式4+8位分辨率的普通位移模式(双从机)”为基础进行使用示范。
资源准备
1) 硬件环境对应产品型号的at-start boardpa4——3.3vpa7——gndpc0——1.5v左右2) 软件环境project\at_start_f4xx\examples\adc\combine_mode_ordinary_shift_twoslave_dma4
软件设计
1) 配置流程
配置adc使用的gpio
配置用于触发的tmr(tmr1_trgout event)
配置用于普通通道数据传输的dma
adc相关配置及设定
等待触发完毕后关闭触发tmr
获取转换数据
2) 代码介绍
gpio配置函数代码
tmr配置函数代码
dma配置函数代码
adc配置函数代码
中断服务函数代码
main函数代码
实验效果
可通过串口打印查看实现效果,最终串口打印的转换数据如下。adc转换数据以字为单位进行传输,传输顺序为:(adc3的转换通道<<16)|(adc2的转换通道<<8)|adc1的转换通道;(adc3的转换通道<<16)|(adc2的转换通道<<8)|adc1的转换通道……图24. adc dma模式4实验结果
案例 adc dma模式5
功能简介
adc主从组合模式下的普通通道转换数据需经dma传输。dma支持多种模式,不同模式数据的传输规则存在明显差异。当选择不适用的dma模式传输转换数据时,会因传输不及时导致数据溢出等问题。因此应用中adc主从组合模式与dma模式需要按照rm要求搭配使用。dma模式5适用adc组合模式如下:普通同时模式(双从机)、普通位移模式(双从机)本案例将以“dma模式5+普通同时模式(双从机)”为基础进行使用示范。
资源准备
1) 硬件环境对应产品型号的at-start boardpa4 and pa7 and pc0——3.3vpa5 and pb0 and pc2——gndpa6 and pb1 and pc3——1.5v左右2) 软件环境project\at_start_f4xx\examples\adc\combine_mode_ordinary_smlt_twoslave_dma5
软件设计
1) 配置流程
配置adc使用的gpio
配置用于触发的tmr(tmr1_ch1 event)
配置用于普通通道数据传输的dma
adc相关配置及设定
等待触发完毕后关闭触发tmr
获取转换数据
2) 代码介绍
gpio配置函数代码
tmr配置函数代码
dma配置函数代码
adc配置函数代码
中断服务函数代码
main函数代码
实验效果
可通过串口打印查看实现效果,最终串口打印的转换数据如下。adc转换数据以字为单位进行传输,传输顺序为:(adc2第一个转换通道<<16)|adc1第一个转换通道;adc3第一个转换通道;(adc2第二个转换通道<<16)|adc1第二个转换通道;adc3第二个转换通道;(adc2第三个转换通道<<16)|adc1第三个转换通道;adc3第三个转换通道(adc2第一个转换通道<<16)|adc1第一个转换通道……图25. adc dma模式5实验结果
案例 adc侦测vref电压
功能简介
实际应用场景中,受外部电路等因素影响,adc的模拟参考电压可能出现波动,导致adc转换结果出现失真。当无法优化硬件时,可尝试如下解决办法。adc通道adc1_in17连接到了mcu的内部参考电压,该内部参考电压是经ldo输出的稳定的1.2v电压值。故可通过adc1_in17的转换数据来反推当前的实际模拟参考电压值。再以获取的模拟参考电压进行adc转换通道数据的计算。本例将示例如何以adc1_in17的转换结果来反推当前的模拟参考电压值。
资源准备
1) 硬件环境:对应产品型号的at-start board2) 软件环境project\at_start_f4xx\examples\adc\current_vref_value_check
软件设计
1) 配置流程
配置adc使用的gpio
配置用于普通通道数据传输的dma
adc相关配置及设定
普通通道软触发
获取转换数据反推当前vref值
2) 代码介绍
dma配置函数代码
adc配置函数代码
中断服务函数代码
main函数代码
实验效果
可通过串口打印查看实现效果,测试未独立外接vref,并使用at-link供电,可以看到实际vref电压固定保持3.32v左右。图26. adc侦测vref电压实验结果关于雅特力雅特力科技于2016年成立,是一家致力于推动全球市场32位微控制器(mcu)创新趋势的芯片设计公司,专注于arm cortex-m4/m0+的32位微控制器研发与创新,全系列采用55nm先进工艺及arm cortex-m4高效能或m0+低功耗内核,缔造m4业界最高主频288mhz运算效能,并支持工业级别芯片工作温度范围(-40°~105°)。雅特力目前已累积相当多元的终端产品成功案例:如微型打印机、扫地机、光流无人机、热成像仪、激光雷达、工业缝纫机、伺服驱控、电竞周边市场、断路器、adas、t-box、数字电源、电动工具等终端设备应用,广泛地覆盖5g、物联网、消费、商务及工控等领域。

利用FPGA设计技术降低功耗,如何实现设计解决方案
单结晶体管的管脚判别
一文带你彻底了解NAT技术
小米平板3通过了3C认证:3月或发布,注定又是难抢的货!
软件详细设计文档在动态单元测试过程中的应用
AT32讲堂042 | AT32F435/437 ADC使用指南
单相电压型PWM整流电路原理分析与仿真
清风侠S60ATX机箱高清图集
LED恒流源的电子负载测试电路设计
USB2.0智能读卡器芯片——RTS5169-VEC-GR
HP Unix系统维护基本命令
制作电压控制LC振荡器原理及实现
PCB板星点渗镀问题探讨
iphone8两个版本售价超7000,为什么要买?肾还有吗?
机器狗制作全过程图解
华硕ZenFone2怎么样 值不值得买
安科瑞电力监控系统的应用案例
泰克和Optametra共同挑战解决100G光测量
Xilinx Zynq All Programmable SoC:Smarter Vision的最明智选择
称重传感器精度等级的测试及确定