AD转换时间指的是完成一次AD转换所需的时间,即从启动信号开始到转换结束并得到稳定的数字输出量所需要的时间。
不知道大家平时使用ADC有没有关注转换时间的问题,这里结合瑞萨单片机为例给大家讲述一下AD转换时间的理论推算与测量。
从RA2L1硬件手册(R01UH0853EJ0130)第1067页的电气特性“Table 41.35 A/D conversion characteristics (1) in high-speed A/D conversion mode (2 of 2) ”中的内容,看到RA2L1的AD转换时间在对应的测试条件下最小值为0.67us。
那么如果用户测试AD转换时间,是否能得到跟硬件手册中电气特性的最小AD conversion time (0.67us) 一样的结果呢?
基于上述问题,我们从理论和实际两方面做了分析和测试。
理论分析
首先,基于RA2L1硬件手册中Figure 30.25和Figure 30.26, 单次扫描模式下所选通道数为n的扫描转换时间(tSCAN)可按如下方式确定:
tSCAN = tD + tDIS × n + tDIAG + tED + tCONV × n
tSCAN: 扫描转换时间
tD: 开始扫描延迟时间
tDIS: 断线检测辅助处理时间
tDIAG 和 tDSD: 自诊断A/D转换处理时间
tCONV: A/D转换处理时间
tED: 结束扫描延迟时间
另外,参考“Table 41.35 A/D conversion characteristics (1) in high-speed A/D conversion mode (2 of 2) ”中Note 1的内容,转换时间是采样时间和比较时间的总和。也就是说,这里的转换时间指的仅仅是tCONV,而并非扫描转换时间tSCAN。测试的话测量的是扫描转换时间,所以不能以“最小0.67us” 这个数值作为参考。
接下来,我们先从理论上计算一下如何获得扫描转换时间的最小值。参考RA2L1硬件手册,选取公式中每一项的最小值和其对应的条件。
tSCAN = tD + tDIS × n + tDIAG + tED + tCONV × n
tD = 2 PCLKB + 4 ADCLK: All other, Synchronous trigger. But this does not include the time consumed in the path from timer output to trigger input.
tDIS = 0: Setting in ADNDIS[3:0] (initial value = 0x00) × ADCLK
tDIAG = 0: DIAGST[1:0] = 00 (Self-diagnosis not executed after power-on.)
tCONV = 0.67us:Operation at PCLKD = 48 MHz, High-precision channel, ADCSR.ADHSC = 0, ADSSTRn.SST[7:0] = 0x0A, ADACSR.ADSAC = 1
tED = 2 PCLKB + 3 ADCLK: PCLKB to ADCLK frequency ratio = 1:2
从而确定测试条件为:PCLKD (ADCLK) = 48MHz、PCLKB = 24MHz(PCLKB不能超过32MHz)、快速转换模式、高速A/D转换模式、AN000(高精度通道)、不使用自诊断。
基于以上测试条件,计算AD扫描转换时间的理论值为:
实际测试
对照着AD扫描转换时间的理论值为0.90us,进行了以下3个测试:
1使用GPT+ELC+ADC+中断方式进行测试
● GPT:设置周期为50ms,允许GTIOC0A输出
● ELC:设置GPT的计数值发生Overflow时触发AD转换
● ADC:设置为Single Scan模式,选择Channel 0,允许扫描完成时产生中断,在中断Callback函数中翻转端口(P301:H→L)
通过以上波形,可以得到实际测试结果为7.31us。根据测试情况进行分析,这个时间包括了中断响应时间和端口执行时间。
采用在中断中翻转端口测量ADC转换时间,结果较理论值长很多,接下来使用DTC来翻转端口。
2使用GPT+ELC+ADC+DTC方式进行测试
● GPT:设置周期为50ms,允许GTIOC0A输出
● ELC:设置GPT的计数值发生Overflow时触发AD转换
● ADC:设置为Single Scan模式,选择Channel 0,允许扫描完成时产生中断
● DTC:触发源为每次ADC扫描结束,进行DTC传送,即翻转IO口(P301:H→L)
通过以上波形,可以得到实际测量结果为1.36us (VS理论值0.67us)。根据测试情况进行分析,这个时间包括DTC的响应时间和端口执行时间。
单独测试端口执行时间,大概为0.21us。
采用单次转换测量ADC转换时间,结果较理论值偏长,接下来使用多次转换测量总时间,用来消除端口翻转时间的影响。
3使用GPT+ELC+ADC+DTC方式(500次)进行测试
● GPT:设置周期为50ms,允许GTIOC0A输出
● ELC:设置GPT的计数值发生Overflow时触发AD转换
● ADC:设置为Continuous Scan模式,选择Channel 0,允许扫描完成时产生中断
● DTC:触发源为每次ADC扫描结束,进行一次DTC传送,500次传送后,在中断Callback函数中,翻转IO口(P301:H→L)
通过以上波形,可以得到实际测量结果为337.31us/500 = 0.67us (=理论值)。根据测试情况进行分析,这个时间包括DTC的响应时间、中断响应时间和端口执行时间。
这个测试结果和理论值相符,因为这个时间还包括DTC的响应时间、中断响应时间和端口执行时间,所以可以推断实际测量结果优于电气特性中内容。
最后,总结一下AD转换时间的计算和测量。
● 手册中的“0.67 μs/channel”仅仅是采样时间和比较时间的总和,并非一个通道的全部扫描转换时间。
● 在实测③的情况下,我们可以得到比较理想并且合理的结果,一次AD扫描转换时间大概为0.67us。
● 使用FSP自动生成代码的情况下,中断响应时间是比较长的,所以建议采用DTC传送数据,或者客户采用自己的ADC中断响应函数。
-
单片机
+关注
关注
6037文章
44559浏览量
635506 -
adc
+关注
关注
98文章
6500浏览量
544717 -
瑞萨
+关注
关注
35文章
22309浏览量
86338 -
硬件
+关注
关注
11文章
3337浏览量
66233 -
AD转换
+关注
关注
3文章
168浏览量
45315
原文标题:单片机AD转换时间的理论推算与测量
文章出处:【微信号:strongerHuang,微信公众号:strongerHuang】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
评论