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