ADC简介
ADC控制器的功能极其强大。其包含但不限于以下内容
图1. ADC1框图
ADC功能解析
时钟及状态
功能介绍ADC的时钟分为数字时钟与模拟时钟。其统一通过CRM_APB2EN的ADCxEN位使能。
软件接口ADC时钟使能,软件由单独的函数接口实现,其软件实例如下:当ADC时钟使能后,软件即可开始进行ADC的一些相关配置。ADC模拟时钟源选择,其软件实例如下:ADC预分频设定,软件由ADC公共部分结构体配置完成,其软件实例如下:此项实际用于设定ADC模拟部分的时钟,其由HCLK或PLLCLK分频而来。注意:1)模拟部分的ADCCLK由HCLK分频而来,其不可大于80MHz;2)ADC数字部分挂在PCLK2上,为避免同步问题,ADCCLK频率不可高于PCLK2;3)当选择PLLCLK作为ADC模拟时钟源时,此时必须保证系统时钟SCLKSEL选择PLL/2。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基础偏差,以保障转换数据的准确性。校准值有两种获取方式:
自校准的软件流程如下
软件接口完整的校准及设定分辨率需由组合命令实现,依据校准值设定方式可区分如下两种自校准方式,其软件实例如下:写经验值校准方式,其软件实例如下:注意:校准值的存放不会置位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. 序列模式2、反复模式ADC支持反复模式设定,开启反复模式后,当检测到触发后就即会反复不断地转换普通通道组。图3. 反复模式+抢占自动转换模式分割模式ADC支持分割模式设定。对于普通通道组,分割模式可依据设定将通道组分割成长度较小的子组别。一次触发将转换子组别中的所有通道。每次触发会依序选择不同的子组别进行转换。对于抢占通道组,分割模式直接以通道为单位进行分割,一次触发将转换单个通道。每次触发会依序选择不同的通道进行转换。图4. 分割模式3、抢占自动转换模式ADC支持抢占自动转换模式设定,开启抢占自动转换模式后,当普通通道转换完成后,抢占通道将自动接续着转换,而不需要进行抢占通道的触发。图5. 抢占自动转换模式软件接口ADC序列模式和反复模式设定,由ADC基础部分结构体配置完成,其软件实例如下:注意:序列模式对普通及抢占通道组均有效;反复模式仅对普通通道组有效,抢占通道组不具备反复模式功能;反复模式与分割模式不可共用;反复模式可与抢占自动转换模式共用,将实现依次反复的转换普通通道序列及抢占通道序列。ADC分割模式设定,软件由单独的函数接口实现,其软件实例如下:注意:分割模式对普通及抢占通道组均有效;抢占通道组分割模式子组别长度不可设定,其固定为单个通道;分割模式与反复模式、抢占自动转换模式不可共用,普通通道与抢占通道的分割模式不可共用。抢占自动转换模式设定,软件由单独的函数接口实现,其软件实例如下:注意:抢占自动转换模式仅对抢占通道组有效;抢占自动转换模式与分割模式不可共用。
不同优先权的通道
功能介绍ADC设计有具备不同优先权的两种通道组:普通通道组与抢占通道组。
通常用于执行常规的数据转换。支持最多配置32个通道,转换将按照设定的通道顺序依次进行。其不具备抢占能力。
通常用于执行相对紧急的数据转换。支持最多配置4个通道,转换将按照设定的通道顺序依次进行。其具备抢占能力,即抢占通道组的转换可以打断正在执行的普通通道转换,待抢占通道组转换完毕后再恢复执行被打断的普通通道组转换。
软件接口普通通道组设定,软件包括通道数量、通道数值、转换顺序、采样周期的设定,其软件实例如下:抢占通道组设定,软件包括通道数量、通道数值、转换顺序、采样周期的设定,其软件实例如下:注意:不同通道可以设定不同的采样周期;同一通道可以被反复编排进转换序列进行转换;序列模式下,普通通道组从OSN1开始转换,抢占通道组是从PSNx开始转换(x=4-PCLEN)。
多种独立的触发源
功能介绍ADC支持多种触发源,包含软件写寄存器触发(ADC_CTRL2的OCSWTRG与PCSWTRG)以及外部触发。外部触发包含定时器触发与引脚触发,外部触发可设定触发极性(触发极性可选择禁止边沿触发、上升沿触发、下降沿触发或任意边沿触发)。表1. 普通通道和抢占通道触发源软件接口软件写寄存器触发设定,软件由单独的函数接口实现,其软件实例如下:在ADC Ready后,软件即可执行adc_ordinary_software_trigger_enable(ADC1,TRUE);/adc_preempt_software_trigger_enable(ADC1,TRUE);来进行普通/抢占通道的触发。外部触发设定,软件由单独的函数接口实现,其软件实例如下:在ADC Ready后,TMR1CH1的上升沿事件就会触发普通通道组转换,TMR3CH4的上升沿事件就会触发抢占通道组转换。注意:触发间隔需要大于通道组转换的时间,转换期间发生的相同通道组的触发会被忽略;使用软件写寄存器触发时,对应触发极性必须选择禁止边沿触发;抢占通道转换优先权最高,不管当前是否有普通通道转换,其触发后就会立即开始响应转换;普通触发具备记忆功能,在抢占转换时执行普通触发,该触发会被记录并在抢占转换完毕后响应。
数据后级处理
功能介绍
ADC具备专有的数据寄存器,普通通道转换完成后数据存储于普通数据寄存器(ADC_ODT),抢占通道转换完成后数据存储于抢占数据寄存器x(ADC_PDTx)。数据寄存器内存储的是经过处理后的数据。该处理包括数据对齐、抢占数据偏移。
分左对齐和右对齐。分辨率CRSEL为6位时,数据存储方式以字节为基准摆放,其余皆以半字为基准摆放。
抢占通道的数据会减去抢占数据偏移寄存器x(ADC_PCDTOx)内的偏移量,因此抢占通道数据有可能为负值,以SIGN作为符号。图6. 数据内容处理软件接口数据对齐设定,软件由ADC基础部分结构体配置完成,其软件实例如下:抢占数据偏移设定,软件由单独的函数接口实现,其软件实例如下:
转换中止
功能介绍ADC具备转换中止功能。在ADC转换过程中,用户可利用ADC_CTRL2的ADABRT使ADC停止转换。停止转换后,转换顺序回归第一个通道,用户即可重新编排通道顺序,再次触发ADC将从头开始执行新序列的转换。图7. 转换中止时序软件接口转换中止设定,软件由单独的函数接口实现,其软件实例如下:注意:转换中止命令对普通及抢占通道转换都有效;转换中止功能类似ADC重上电,但是转换中止不会使ADC掉电,不存在ADC上电唤醒时间;转换中止的执行需要时间,在执行转换中止命令后一定要等待ADABRT位被硬件清除后才可进行后续的触发转换。
过采样器
功能介绍ADC具备过采样功能。一次过采样是透过转换多次相同通道,累加转换数据后作平均实现的。
若平均后数据大于16位,只取靠右16位数据,放入16位数据寄存器。使用过采样时,忽视数据对齐及抢占数据偏移的设定,数据一律靠右摆放。表2. 最大累加数据与过采样倍数及位移系数关系
普通通道过采样中途被抢占通道转换打断后的恢复方式由OOSRSEL设定
图8. 普通过采样被打断后的恢复方式
普通通道过采样的触发模式由OOSTREN设定
此模式下,中途被抢占通道触发打断后,须重新触发普通通道才会恢复转换普通通道过采样。图9. 普通过采样触发模式
抢占过采样可与普通过采样同时使用,也可分别使用。抢占过采样不影响到普通过采样的各种模式。图10. 抢占自动转换下的过采样模式软件接口过采样率、过采样移位及过采样使能设定,软件由单独的函数接口实现,其软件实例如下:普通通道过采样被打断后的恢复方式设定,软件由单独的函数接口实现,其软件实例如下:普通通道过采样触发模式设定,软件由单独的函数接口实现,其软件实例如下:电压监测1、功能介绍ADC具备电压监测功能。用以监控输入电压与设定阈值的关系。当转换结果大于高边界ADC_VMHB[11:0]寄存器或是小于低边界ADC_VMLB[11:0]寄存器时,电压监测超出标志VMOR会置起。透过VMSGEN选择对单一通道或是所有通道监测。对单一通道监测的话,由VMCSEL配置通道。2、软件接口监测单一通道,软件由单独的函数接口实现,其软件实例如下:监测所有通道,软件由单独的函数接口实现,其软件实例如下:注意:电压监测一律以转换的原始数据与12位边界寄存器做比较,无视分辨率、抢占偏移量与数据对齐的设定;若使用过采样器,则是以ADC_VMHB[15:0]与ADC_VMLB[15:0]完整的16位寄存器与过采样数据作比较。
中断及状态事件
功能介绍
ADC含有多种中断及状态标志。应用需要结合这些标志进行程序设计。
指示ADC状态,只读位,软件不可清除,无产生中断能力。
ADC上电完毕后会置位,只有RDY标志置位后,才可进行校准及触发转换。
指示ADC转换数据溢出,标志由软件对其自身写零清除,有产生中断能力。
无独立的溢出检测使能位,在使能DMA传输或者EOCSFEN=1时有效,当上一笔转换数据未被读走,下一笔转换数据已产生时就会置位此标志。标志清除后的转换恢复分如下两种情况:此标志置位后,当前转换停止,转换序列不被清零,因此可不用复位ADC,直接清除标志再次触发转换即可。
指示普通通道转换开始,由软件对其自身写零清除,无产生中断能力。
指示抢占通道转换开始,由软件对其自身写零清除,无产生中断能力。
指示抢占通道组转换完成,由软件对其自身写零清除,有产生中断能力。
在抢占通道组转换完成后置位,通常应用使用此标志来读取抢占通道组的转换数据。
指示普通通道转换完成,由软件对其自身写零或读ODT寄存器清除,有产生中断能力。
在普通通道转换完成后置位,应用可使用此标志来读取普通通道的转换数据(EOCSFEN=1)。
注意:DMA读取转换数据会同步清除OCCE标志,因此在使用DMA时禁止再使用OCCE标志。
指示通道电压超出设定阈值,由软件对其自身写零清除,有产生中断能力。
在ADC的通道转换数据超过设定阈值后置位,通常应用使用此标志来监控通道电压。
软件接口中断使能设定,软件由单独的函数接口实现,其软件实例如下:标志状态获取,软件由单独的函数接口实现,其软件实例如下:标志状态清除,软件由单独的函数接口实现,其软件实例如下:多种转换数据的获取方式功能介绍
ADC具备多种转换数据的获取方式。不同通道类型、不同组合模式可支持的数据获取方式不同。
抢占通道不具备DMA能力,因此不管什么组合模式,抢占通道数据均由CPU读取抢占数据寄存器x(ADC_PDTx)获得。
软件设置ADC_CTRL2的EOCSFEN位让每次普通数据寄存器更新时置位OCCE标志,软件通过OCCE标志读取转换数据。
普通通道数据存储于ADC自己独立的数据寄存器中。软件设置OCDMAEN及OCDRCEN位让每次普通数据寄存器更新时产生DMA请求,DMA在每次收到DMA请求时读取转换数据。软件接口CPU读取抢占通道数据,软件由单独的函数接口实现,其软件实例如下:CPU读取普通通道数据,软件由单独的函数接口实现,其软件实例如下:
DMA读取普通通道数据,软件由单独的函数接口实现,其软件实例如下:注意:使用CPU读取普通转换数据时,为避免溢出,通道采样周期需要足够大。
ADC配置解析
以下对ADC的配置流程及数据获取方法进行说明。
ADC配置流程
ADC的配置一般包括如下内容
使能对应中断,包括溢出中断、普通通道转换结束中断、抢占通道组转换结束中断、电压检测超过范围中断中的一个或多个。
至此,ADC的初始化配置就算全部完成。随后,可通过软件或使能硬件触发源进行触发转换。
ADC数据获取方法
ADC支持多种数据获取方法,通常可概括为如下几种
全部0条评论
快来发表一下你的评论吧 !