RA2 MCU ADC转换时间测试方法

描述

RA2 MCU是瑞萨在2019年下半年开始推广的Cortex M23核的产品,48MHz主频,各子系列都非常有特点,如入门级的RA2E1子系列带Capacitive Sensing Unit,RA2L1子系列低功耗及带CAN总线,RA2A1子系列增强模拟功能、带16位ADC及24位Sigma-Delta ADC,RE2E2子系列主打小封装。可广泛的用于各种应用上。以下是瑞萨RA MCU Portfolio:

adc

 

之前有客户在使用瑞萨RA2 MCU时,由于测试方法不对,导致测出来的ADC转换时间比规格书中宣称的0.67us要长许多,达到了2.1us左右。后来瑞萨AE用三种方法做了详细的测试,用连续转换模式得到了比较理想并且合理的结果,一次AD扫描转换时间大概为0.67us,与规格书宣称的值相近。现将测试方法及步骤分享如下。

 

理论说明

 

1.1

基于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:结束扫描延迟时间

adc

 

1.2

参考“41. Electrical Characteristics”中Table 41.35的Note 1,转换时间是采样时间和比较时间的总和。也就是说,这里的转换时间指的仅仅是tCONV,而并非tSCAN。

adc

 

1.3

从理论上,如何获得扫描转换时间的最小值

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

 

1.4

测试条件:

PCLKD (ADCLK) = 48MHz、PCLKB = 24MHz (PCLKB不能超过32MHz)、快速转换模式、高速A/D转换模式、AN000(高精度通道)、不使用自诊断

AD扫描转换时间的理论值为:

tSCAN= tD+ tDIS×n + tDIAG+ tED+ tCONV×n

= (2 PCLKB + 4 ADCLK) + (0 cycles of ADCLK) ×1 + 0 + (2 PCLKB + 3 ADCLK) + tCONV×1 = 0.23 + 0.67 = 0.90 us

 

实测1

使用GPT+ELC+ADC+中断方式

 

GPT:周期为50ms,允许GTIOC0A输出

ELC:GPT的计数值发生Overflow时触发AD转换

ADC:Single Scan模式,选择Channel0,允许扫描完成时产生中断,在中断中翻转端口(P301:H –>L)

实际测量结果:7.31us

这个时间包括中断响应时间和端口执行时间

测试代码:(略)

考虑到中断响应时间比较长,所以后面选择使用DTC来翻转端口

adc

 

实测2

使用GPT+ELC+ADC+DTC方式

 

GPT:周期为50ms,允许GTIOC0A输出

ELC:GPT的计数值发生Overflow时触发AD转换

ADC:Single Scan模式,选择Channel0,允许扫描完成时产生中断

DTC:触发源为每次ADC扫描结束,进行DTC传送,即翻转IO口(P301:H –>L)

实际测量结果:1.36us

这个时间包括DTC的响应时间和端口执行时间

测试端口执行时间:大概为0.21us

测试代码:(略)

adcadc

 

实测3

使用GPT+ELC+ADC+DTC方式(500次)

 

GPT:周期为50ms,允许GTIOC0A输出

ELC:GPT的计数值发生Overflow时触发AD转换

ADC:Continuous Scan模式,选择Channel0,允许扫描完成时产生中断

DTC:触发源为每次ADC扫描结束,进行一次DTC传送,500次传送后,进入中断,翻转IO口(P301:H –>L)

实际测量结果:337.31us

这个时间包括DTC的响应时间、中断相应时间和端口执行时间

折合到每次的话,大概0.67us

测试代码:(略)

adc

 

结论

 

1、手册中的“0.67 μs/channel”仅仅是采样时间和比较时间的总和,并非一个通道的扫描转换时间。

2、在实测3的情况下,我们可以得到比较理想并且合理的结果,一次AD扫描转换时间大概为0.67us。

3、使用FSP自动生成代码的情况下,中断响应时间是比较长的,所以建议采用DTC传送数据,或者客户自己写中断响应函数。测过GPT中断响应时间大概是3.58us

adc

 

 

 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分