瑞萨RA系列FSP库开发实战指南之ADC扫描模式和转换时间

25.3

ADC扫描模式

ADC单元0中有多达13个模拟输入通道,而在ADC 单元1中有多达16个模拟输入通道,两个ADC单元加起来总共就拥有了29个ADC通道,但是实际上ADC 单元0和ADC单元1分别有3个通道只能连接到相同的引脚,所以实际上能同时使用的通道数量为26个,加上还有内部的温度传感器输出等特殊通道。

这么多的ADC通道我们该如何使用它们呢?在这里我们引入“扫描模式”的概念,在使用ADC外设时,我们必须首先配置其扫描模式,使得ADC按照特定扫描模式的方式进行ADC转换。

ADC外设有三种扫描模式,分别为:单次扫描模式、连续扫描模式和组扫描模式。在FSP配置器中,用户可以为ADC模块设置为三种扫描模式当中的其中一种,如下图所示。

90169578-2d80-11f1-90a1-92fbcf53809c.png

点击查看大图

单次扫描模式:在单次扫描下,每一次触发将扫描一个或多个指定通道。

连续扫描模式:在连续扫描下,首先需要一次触发,然后一个或多个指定的通道会被重复连续进行扫描,直到软件调用函数R_ADC_ScanStop()停止扫描。

分组扫描模式:将所选择的模拟输入通道分为A组和B组,然后按组对所选择的模拟输入通道进行一次A/D转换。A、B组可独立选择扫描启动条件,可独立启动A、B组的A/D转换。

在每种模式中,模拟通道按通道数的升序进行转换,然后扫描温度传感器和电压传感器(如果它们也被勾选了的话)。每一种扫描模式都有着它的优点和缺点,但具体使用什么模式进行ADC转换,就需要通过我们的项目的需求需要什么样的效果来决定。

25.3.1

单次扫描模式

在单次扫描模式转换期间,我们可以通过ADST为来判断ADC是否处在工作状态,在ADC转换的期间ADST为将一直保持为1,当所有选定通道的ADST 转换完成时,将自动设置为0。然后ADC将进入一个等待状态。

当ADCSR.ADST位通过软件触发器、同步触发器输入(ELC)和异步触发器输入被置1的时候,ADC转换开始。对在ADANSA0和ADANSA1寄存器中选择的ANn通道进行A/D转换,从编号最小的n的通道开始。

每当单个信道的A/D转换完成时,A/D转换结果都被存储在关联的A/D数据寄存器(ADDRy)中。

当所有选定通道的A/D转换完成时,将生成一个ADC12i_ADI(i=0,1)中断请求。

25.3.2

连续扫描模式

在连续扫描模式下,对指定信道的模拟输入重复执行A/D转换。这里的ADCSR.ADST位不会自动清除,只要ADCSR.ADST位保持1时就会一直的重复步骤2、步骤3、步骤4,直到ADCSR.ADST位通过软件被置0时ADC单元转换才会停止,之后ADC单元进入等待状态。

当ADCSR.ADST位通过软件触发器、同步触发器输入(ELC)和异步触发器输入被置1的时候,ADC转换开始。对在ADANSA0和ADANSA1寄存器中选择的ANn通道进行A/D转换,从编号最小的n的通道开始。

每当单个信道的A/D转换完成时,A/D转换结果都被存储在关联的A/D数据寄存器(ADDRy)中。

当所有选定通道的A/D转换完成时,将生成一个ADC12i_ADI(i=0,1)中断请求。

对在ADANSA0和ADANSA1寄存器中选择的ANn通道进行A/D转换,从编号最小的n的通道开始。

25.3.3

组扫描模式

在分组扫描模式下,应用程序将通道分配给两个组:组A和组B当中的一个。可以为这些组分配不同的启动触发器,分别选择A、B两组的开始扫描条件,当接收到该组的指定ELC启动触发器时,转换开始。并且组A可以设置为优先于组B,当A组优先于B组时,A组触发器将暂停正在进行的B组扫描。

我们以ELC为例子:使用GPT作为A组的触发源,并使用A组作为B组的触发源。

当ELC0上的GPT触发ELC_ADC(A组)时,A组的ADC开始转换。

当组A扫描完成时,将生成一个ADC12i_ADI(i=0,1)中断。

B组的扫描由ELC_ADC(A组)开始。

当B组扫描完成时,如果ADCSR.GBADIE位为1时将生成一个ADC12i_GBADI(i=0,1)中断。

25.4

ADC转换时间

25.4.1

ADC时钟

当使用ADC时,ADC转换时钟(ADCLK)必须至少为1MHz。并且,在使用ADC时很多RA MCU一般也有PCLK比率限制。

RA6M5和RA4M2的AD转换时钟是由PCLKC经过分频产生,PCLKA和PCLKC(ADCLK)的分频比可以设置为1:1,2:1,4:1,8:1,1:2,1:4。当使用50 MHz时钟的时候12-bit AD转换时间为0.4μs。

RA2L1的AD转换时钟是由PCLKD经过分频产生,PCLKB和PCLKD(ADCLK)的分频比可以设置为1:1,1:2,1:4。在正常转换模式下,当使用64MHz 时钟的时候12-bit AD转换时间为0.7μs;在快速转换模式下,当使用48MHz时钟的时候12-bit AD转换时间为0.67μs。

25.4.2

采样时间

点击查看大图

扫描转换时间(tSCAN)包括:扫描开始时间(tD)、断开检测辅助处理时间(tDIS)*1、自诊断A/D转换处理时间(tDIAG和tDSD)*2、A/D转换处理时间(tCONV)、扫描结束时间(tED)。

A/D转换处理时间(tCONV)由输入采样时间(tSPL)和逐次逼近转换时间(tSAM)组成。

采样时间(tSPL)用于在A/D转换器中对采样和保持电路充电。如果由于模拟输入信号源的高阻抗而没有足够的采样时间,或者如果A/D转换时钟(ADCLK)很慢,可以使用ADSSTRn寄存器来调整采样时间。

由逐次逼近(tSAM)转换的时间如下:

12位精度需要13个ADCLK

状态10位精度需要11个ADCLK

状态8位精度需要9个ADCLK

选择通道数为n的单次描模式下的扫描转换时间(tSCAN)可确定为:

911fd470-2d80-11f1-90a1-92fbcf53809c.png

连续扫描模式下第一个周期的扫描转换时间为单次扫描减去tED的tSCAN。连续扫描模式下第二次及后续周期的扫描转换时间固定如下:

25.5

电压值转换

模拟电压经过ADC转换后,是一个12位的数字值,如果通过串口以16进制打印出来的话,可读性比较差,那么有时候我们就需要把数字电压转换成模拟电压,也可以跟实际的模拟电压(用万用表测)对比,看看转换是否准确。

一般在设计硬件原理图的时候会把ADC的输入电压范围设定在:0~3.3V。若设置ADC的分辨率是12位的,那么12位满量程对应的电压就是3.3V,12位满量程对应的数字值是:2^12,数值0对应的就是0V。假设转换后的数值为X,X对应的模拟电压为Y,那么会有这么一个等式成立:

91d01650-2d80-11f1-90a1-92fbcf53809c.png

因此在ADC转换完成之后,我们可以调用FSP库函数R_ADC_Read(),从ADC的数据寄存器里读出上述等式中X的值,从而再经过计算得出对应的电压值。

92283be6-2d80-11f1-90a1-92fbcf53809c.png

为您推荐

当前非电脑浏览器正常宽度,请使用移动设备访问本站!