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中斷響應函數。
-
單片機
+關注
關注
6040文章
44592瀏覽量
636886 -
adc
+關注
關注
98文章
6524瀏覽量
545201 -
瑞薩
+關注
關注
35文章
22310瀏覽量
86522 -
硬件
+關注
關注
11文章
3354瀏覽量
66339 -
AD轉換
+關注
關注
3文章
168瀏覽量
45350
原文標題:單片機AD轉換時間的理論推算與測量
文章出處:【微信號:strongerHuang,微信公眾號:strongerHuang】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論