• 沒有找到結果。

類比數位轉換器

N/A
N/A
Protected

Academic year: 2022

Share "類比數位轉換器"

Copied!
8
0
0

加載中.... (立即查看全文)

全文

(1)

類比數位轉換器 ADC

1. ADC 的控制

SPCE061A 有 8 個 10 位 ADC 通道,其中一個通道(MIC_In)用於語音輸入,

類比訊號 經過自動增益控制器和放大器放大後進行 A/D 轉換。其餘 7 個通道 (Line_In 1-7)和 IOA[0~6]接腳共用,可以將輸入的類比電壓訊號轉換為數位訊號。

SPCE061A 的 A/D 轉換範圍是整個輸入範圍,即 0V~AVdd 。無效的 A/D 類比 信號 (超過 VDD+0.3V 或是低於 VSS–0.3V)將影響轉換電路的工作範圍,從而 降低 ADC 的性能,電路製作時須加以避免。由於 Line_In 通道 [1~7]和 IOA[0~6]

接腳共用,建議使用者選擇其他的 IO 接腳(非 IOA[0~6])當做 GPIO 使用,以 避免由於無效的 IO 訊號造成電壓不穩 (超過 VDDIO+0.7V 或低於 VSSIO–0.7V) 而降低 ADC 的性能。

圖 2.1、 ADC 輸入介面的結構

(2)

圖 2.2、 ADC 電路示意圖

2.

系統時脈頻率與 ADC 轉換速率

3. ADC 直流電氣特性

(3)

註:

[1] LSB 表示為最小有效單位,在 VRT=3V 的情況下,1LSB 為 2.93 mv。

[2] 此由最大取樣率(Sample rate max) 得來,即 Sample rate max =ADC 最 高轉換時脈/16=1536KHz/16=96KHz。

4. ADC 和 DAC 相關暫存器

 ADC 的控制埠

在 ADC 內,由數位至類比轉換器 DAC0 和逐次逼近暫存器 SAR 組成逐 次逼近式類比至數位轉換器,向 P_ADC_Ctrl(寫)($7015H)單元第 0 位元(ADE) 寫入“1”用以啟動 ADC。系統內定設置為 ADE=0,即遮罩 ADC。

ADC 採用自動方式工作。硬體 ADC 的最高速率限定為(Fosc/32/12)Hz,如果速 率超過此值, 當從 P_ADC(讀)($7014H)單元讀出資料時會發生錯誤。

 P_ADC_Ctrl 暫存器

(4)

註:

[1] 此為 DAC_I 的內定選擇。

[2] b15 只用於 MIC_IN 通道輸入。

[3] 當類比信號通過麥克風的 MIC_IN 通道輸入時,可選擇 AGCE 為‘1’,

即運算放大器的增益可在其線性區域內自動調整。AGCE 內定選擇為‘0’,即 取消自動增益控制功能。

[4] 寫入時需注意 b5 = 1, b4=1, b3 =1 和 b1=0。

在 ADC 被啟用後,會產生出一個啟動信號,即 RDY=0。此時,DAC0 的 電壓模擬量輸出值與外部的電壓類比量輸入值進行比較,以儘快找出外部電壓類 比量的數位量輸出值。逐次逼近式控制首先將 SAR 中資料的最高有效位元試設 為‘1’,而其他位則全設為‘0’,即 100000 0000B。這時,DAC0 輸出電 壓 VDAC0(1/2 滿電壓)就會與輸入電壓 Vin 進行比較。如果 Vin>VDAC0,則保 持原先設置為‘1’的位(最高有效位)仍為‘1’;否則,該位會被清‘0’。接 著,

逐次逼近式控制又將下一位試設為‘1’,其餘低位依舊設為‘0’,即 110000 0000B,VDAC0 與 Vin 進行比較的結果若 Vin>VDAC0,則仍保持原先設置位 的值,否則便清‘0’該位。這個逐次 逼近的過程一直會延續到 10 位中的所有 位都被測試之後,A/D 轉換的結果保存在 SAR 內。

當 10 位 A/D 轉換完成時,RDY 會被置‘1’。此時,用戶通過讀取

(5)

P_ADC (7014H)或 P_ADC_MUX_Data(702CH) 可以獲得 10 位元 A/D 轉換的資 料。而從該單元讀取資料後,又會使 RDY 自動清‘ 0 ’來重新開始進行 A/D 轉換。若未讀取 P_ADC(7014H)或 P_ADC_MUX_Data(702CH)單元中的資料,

RDY 仍保持為‘1’,則不會啟動下一次的 A/D 轉換。

外部信號由 LIN_IN[1~7]即 IOA[0~6]或通道 MIC_IN 輸入。從 LIN_IN[1~7]

輸入的類比信號直接被送入緩衝器 P_ADC_MUX_Data(702CH);從 MIC_IN 輸 入的類比信號則要經過緩衝器和放大器。AGC 功能將通過 MIC_IN 通道輸入的 類比信號的放大值控制在一定範圍內,然後放大 信號經取樣-保持模組被送至比 較器參與 A/D 轉換值的確定,最後送入 P_ADC (7014H)。

 ADC 多通道控制單元 P_ADC_MUX_Ctrl (讀/寫)

註 :

[1] Ready_MUX 只用於 Line_in[7:1].

[2] 一般情況下,該位元總為‘0’。以下情況除外:由於 MIC_IN 的優先順序 高於 AD LINE_IN,所以在 LIN_IN AD 轉換過程裏又有 MIC_IN 時,若 AD 切換到 MIC 輸入,原 LINE_IN 的資料會出現問題,此時 FAIL 被置為

‘1’。 MIC AD 完成之後,該位元被清為‘0’。

 LINE_IN 輸入與 IOA[0~6]

 類比電壓輸入的儲存單元 P_ADC_MUX_Data(讀) ($702CH)

(6)

P_ADC_MUX_Data 單元用於讀出 LINE_IN[7:1]10 位元 ADC 轉換的數位資 料,即:

10 位元 ADC 轉換的數位資料存放格式

b15 b14 b13 b12 b11 b10 b9 b8 b7 b6

D9 D8 D7 D6 D5 D4 D3 D2 D1 D0

範例一: 電壓信號從 IOA0 (lin_in1) 輸入由 B Port LED 顯示二進制值。

電路圖如下圖所示。

#include "SPCE061V004.H"

void Init_B_Port();

main() {

unsigned int ADV;

Init_B_Port(); //規劃 B Port 為同相的低電位輸出 *P_ADC_MUX_Ctrl = 0x0001; //LINE_IN---IOA0 *P_ADC_Ctrl = 0x0001; //ADC 致能

while (1) {

ADV = *P_ADC_LINEIN_Data; //ADC start, dummy read

(7)

while ( !(*P_ADC_MUX_Ctrl & 0x8000) ) ; //等待,直到 ADC 完成

ADV = (*P_ADC_LINEIN_Data) & 0xFFC0; //讀取 10 bit ADC 資料,右半邊 6 bit 不要 ADV >>= 6; // 右 移 6 bit

*P_IOB_Buffer = ADV; //*P_IOB_Data = ADV;

*P_Watchdog_Clear = 0x0001; //清看門狗 }

}

//============================================

void Init_B_Port() {

*P_IOB_Dir = 0xffff; //規劃 B Port 為同相的低電位輸出 *P_IOB_Attrib = 0xffff;

*P_IOB_Data = 0;

}

練習 1.

電路圖如下圖所示,做出四個 ADC 顯示在 LCD 上,顯示如下所示(X)為輸 入的類比電壓值。比方說,輸入的電壓是 2.3V,則會顯示,AD1: 2.3v,

注意,你必須要把數位的 10 位元值轉換回相對應的電壓值,求到電壓小數第一 位。四個電阻調整將會個別改變相對的電壓值。

A D 1 : X . X

v

A D 1 : X . X

v

A D 3 : X . X

v

A D 3 : X . X

v

(8)

材料需求表:

61*1、LED*16、電阻 330*16、LCD 顯示器*1、可變電阻 10k*4、麵包板*1、單 心線適量。

參考文獻

相關文件

[r]

[r]

[r]

單晶片電路接受到 A/D 轉換器的信號後,即將此數位信號由顥示器 顯示。此時單晶片 IC 並將此一 A/D 轉換器與指撥設定開關做比較,A/D 轉換器的信號高於設定值時,即由 OUT CONTROL

3個NOT 1個VCC 1個AND2

[r]

具備 (凌陽格式 ) 串列 SRAM 介面. 7 通道10位元電壓類比/數位轉換器 (ADC) 單通道聲音類比/數位轉換器

有一個二位數,個位數字與十位數字之和為 15,若將個位數與十位數調換,所得新數比原數 大