SPCE061A在溫度檢測中的應(yīng)用文章來源:凌陽大學(xué)計劃網(wǎng)站 作者:凌陽大學(xué)計劃網(wǎng)站 發(fā)布時間:2003-5-30 9:30:31 摘 要:本文主要介紹以臺灣凌陽科技公司研制、開發(fā)的一款芯片——SPCE061A為基礎(chǔ),實現(xiàn)溫度的采集、轉(zhuǎn)換。 關(guān)鍵詞: SOC( System On Chip),SPCE061A 引 言: 傳統(tǒng)的溫度檢測結(jié)構(gòu)如圖(1)所示。它基本上由三個部分構(gòu)成:溫度傳感器、專用的A/D轉(zhuǎn)換芯片(例:AD0809或其它轉(zhuǎn)換速度更高的芯片)、微控制器。這類結(jié)構(gòu)軟件實現(xiàn)相對麻煩,硬件上的連線也給設(shè)計者帶來了很大的不便,使用成本相對較高給用戶帶來了潛在的經(jīng)濟損失。  圖 1.1 傳統(tǒng)溫度檢測硬件框架
那么怎樣解決上述的問題呢?將AD轉(zhuǎn)換部分嵌入到MCU的內(nèi)部已經(jīng)成為目前的發(fā)展趨勢。臺灣凌陽公司開發(fā)的SPCE061A芯片內(nèi)部就集成了AD轉(zhuǎn)換功能,下面便主要介紹SPCE061A在溫度采集、轉(zhuǎn)換中的應(yīng)用。 芯片特性簡介: 主控芯片采用凌陽SPCE061A單片機它具有以下主要特性: 工作速度:0.32MHz~49.152MHz(2.6V~3.6V); 2K字SRAM和32K字FLASH僅占一頁存儲空間; 32位可編程的多功能I/O端口; 兩個16位定時器/計數(shù)器; 低電壓復(fù)位/監(jiān)測功能; 8通道10位模/數(shù)轉(zhuǎn)換輸入功能并內(nèi)置自動增益控制功能的麥克風輸入; 雙通道10位DAC方式的音頻輸出功能; 指令系統(tǒng)提供具有較高運算速度的16位×16位的乘法運算指令和內(nèi)積運算指令,為其應(yīng)用增添了DSP功能; UART,SIO功能; 內(nèi)置有在線仿真接口。 系統(tǒng)總體方案介紹 借助于SPCE061A可將A/D轉(zhuǎn)換結(jié)構(gòu)簡化。圖 3.1中僅畫出一路溫度采集轉(zhuǎn)換線路,其余的幾路結(jié)構(gòu)相同。 圖 3.1 溫度傳感電路
系統(tǒng)硬件設(shè)計 如前所述SPCE061A內(nèi)置8通道10位模-數(shù)轉(zhuǎn)換器,其中7個通道用于將模擬量信號(例如電壓信號)轉(zhuǎn)換為數(shù)字量信號,這7個通道與7個I/O口(IOA0~IOA6)復(fù)用,每路采集的模擬信號可以通過引線直接從對應(yīng)的端口輸入;另外一個通道只用于語音輸入,即麥克風輸入通道(MIC_IN)。A/D的轉(zhuǎn)換結(jié)果為10位數(shù)據(jù),分辨率為1024位;在系統(tǒng)的頻率為49MHz時,A/D的響應(yīng)率為1536KHz,此時的A/D轉(zhuǎn)換率為96KHz;另外此A/D轉(zhuǎn)換具有精度高的特點。A/D轉(zhuǎn)換的內(nèi)部結(jié)構(gòu)如圖3所示:由數(shù)模轉(zhuǎn)換器DAC0和逐次逼近寄存器SAR組成逐次逼近式模-數(shù)轉(zhuǎn)換器。其中有幾個寄存器控制A/D的轉(zhuǎn)換過程:P_ADC_Ctrl 用于轉(zhuǎn)換的模式控制,P_ADC_MUX_Ctrl用于A/D的通道選擇,P_ADC用于存儲最后的A/D轉(zhuǎn)換數(shù)值。  圖 4.1 A/D轉(zhuǎn)換原理圖
在ADC自動方式被啟用后,會產(chǎn)生出一個啟動信號,即RDY=0。此時,DAC0的電壓模擬量輸出值與外部的電壓模擬量輸入值進行比較,以盡快找出外部電壓模擬量的數(shù)字量輸出值。逐次逼近式控制首先將SAR中數(shù)據(jù)的最高有效位試設(shè)為‘1’,而其它位則全設(shè)為‘0’,即10 0000 0000B。這時,DAC0輸出電壓VDAC0(1/2滿量程)就會與輸入電壓Vin進行比較。如果Vin>VDAC0,則保持原先設(shè)置為‘1’的位(最高有效位)仍為‘1’;否則,該位會被清‘0’。接著,逐次逼近式控制又將下一位試設(shè)為‘1’,其余低位依舊設(shè)為‘0’,即110000 0000B,VDAC0與Vin進行比較的結(jié)果若Vin>VDAC0,則仍保持原先設(shè)置位的值,否則對該位清‘0’。這個逐次逼近的過程一直會延續(xù)到10位中的所有位都被測試之后,A/D轉(zhuǎn)換的結(jié)果保存在SAR內(nèi)。用戶可以]通過P_ADC單元讀取AD轉(zhuǎn)換的結(jié)果。 系統(tǒng)軟件設(shè)計 圖 5.1
[注意] 通過模擬量輸入口LINE_IN輸入電壓值,通過讀取P_ADC_MUX_Data單元可以獲得10位A/D轉(zhuǎn)換的數(shù)據(jù)。而從該單元讀取數(shù)據(jù)后,又會使RDY自動清'0'來重新開始進行A/D轉(zhuǎn)換。若未讀取P_ADC_MUX_Data單元中的數(shù)據(jù)RDY仍保持為'1',則不會啟動下一次的A/D轉(zhuǎn)換。 [編程實例] .include hardware.inc .CODE .public _main _main: r1=0xffff [P_IOA_ATTRI]=r1 //IOA口設(shè)置為懸浮式輸出口 r1=0x0000 [P_IOA_DIR]=r1 //IOA口設(shè)置方向為輸入 [P_IOA_DATA]=r1 //初始化IOA的數(shù)據(jù)寄存器為0x0000 R1=0x0001 //選擇通道LINE1為IOA0 [P_ADC_MUX_Ctrl]=R1 R1 = 0x0001 [P_ADC_Ctrl] = R1 //設(shè)置P_ADC_Ctrl單元,允許A/D轉(zhuǎn)換 r2=0x0000 //r2的初值為0x0000 CONVERT_AD: r1=[P_ADC_MUX_Ctrl] //讀寄存器[P_ADC_MUX_Ctrl]的B15位判斷是否轉(zhuǎn)換完畢 test r1,0x8000 jz CONVERT_AD //否,繼續(xù)轉(zhuǎn)換 r1=[P_ADC_MUX_DATA] //是,則讀出[P_ADC_MUX_DATA]轉(zhuǎn)換結(jié)果同時觸發(fā)A/D重新轉(zhuǎn)換 JMP CONVERT_AD //跳轉(zhuǎn)到_AD處 結(jié)語 無論是從軟件還是硬件來說,使用SPCE061A實現(xiàn)對溫度的檢測操作簡單,使用成本低。當然也可用于其他模擬信號的轉(zhuǎn)換,應(yīng)用十分廣泛。 |