1 引言
在混合信號(hào)單片機(jī)中,,美國(guó)Cygnal公司新推出的C8051F06X系列高集成度混合信號(hào)單片機(jī)可謂一枝獨(dú)秀,。C8051F06X是高度集成的片上系統(tǒng)單片機(jī),,它有多達(dá)59個(gè)數(shù)字I/O口,采用與8051兼容的內(nèi)核CIP-51,,速度高達(dá)25MI/s,。該系列單片機(jī)有C8051F060/2型和C8051F061/3型,與同家族的其他單片機(jī)相比,,其模擬外設(shè)性能優(yōu)異,,除有一個(gè)帶可編程放大器和多路選擇器的8路10位ADC外,還有兩路采樣速度可達(dá)1 MS/s的16位ADC,,兩路12位DAC,,3個(gè)電壓比較器,1個(gè)片內(nèi)溫度傳感器和參考電壓源等,。本文僅以C8051F060型為例,,著重介紹其高速、高精度模/數(shù)轉(zhuǎn)換器的使用方法,。
2 高精度模/數(shù)轉(zhuǎn)換器
模/數(shù)轉(zhuǎn)換接口由2路16位逐次逼近式ADC,、集成采樣保持器、一個(gè)可編程窗口檢測(cè)器,、一個(gè)DMA接口組成,。ADC0/ADC1可配置成單端或差分輸入方式。模/數(shù)轉(zhuǎn)換的工作方式,,窗口檢測(cè)器和DMA接口均可通過特殊功能寄存器由軟件控制,,模/數(shù)轉(zhuǎn)換器及其采樣保持電路也可通過特殊功能寄存器單獨(dú)設(shè)置,如圖1所示,。顯然,,轉(zhuǎn)換啟動(dòng)方式靈活,軟件事件,、外部硬件信號(hào)和周期性的定時(shí)溢出都能用作觸發(fā)信號(hào),,轉(zhuǎn)換結(jié)束后,16位的結(jié)果鎖存在SFR中,,可由DMA接口將其存入片內(nèi)或片外RAM,。
2.1 單端/差分輸入方式
ADCO和ADC1既可編程為單端輸入方式獨(dú)立工作,也可以設(shè)置為互相配合接收差分輸入信號(hào),。采用單端輸入方式時(shí),,ADC可配置為同步采樣,或采用不同的轉(zhuǎn)換速度,。采用差分輸入時(shí),,ADC1服從于ADC0,除零點(diǎn)和增益校準(zhǔn)外,,它的配置均基于ADC0,。通道選擇寄存器AMXOSL的DIFFSEL位用于選擇單端和差分輸入方式。差分輸入時(shí),,輸入到ADC的是一個(gè)偽差分信號(hào),,每個(gè)ADC的實(shí)際測(cè)量電壓等于引腳AIN和引腳AINDG之間的電壓。AINDG必須在-0.2V~0.6V之間,,在大多數(shù)系統(tǒng)中,,AINDG接到AGND,否則,,AINDG信號(hào)會(huì)產(chǎn)生一個(gè)微小的負(fù)向偏置,,建議用內(nèi)部的校準(zhǔn)功能解決。AINOG和AIN1G要可靠連接在一起,,為了得到精確的轉(zhuǎn)換結(jié)果,,在兩種方式下,AINn電位均應(yīng)高于AINnG,。
2.2 參考電壓
ADC0和ADC1可以配置不同的參考電壓電路,,既可以使用片內(nèi)精密參考電壓源,也可以使用片外參考電壓源,。片內(nèi)參考電壓源電路由一個(gè)獨(dú)立的溫度穩(wěn)定式帶隙參考電壓發(fā)生器產(chǎn)生1.25 V電壓,,再由一個(gè)緩沖放大器將其放大2倍,其最大負(fù)載電流不能大于100μA,,建議在VREF端和VRGND端外接0.1μF和47 μF的旁路電容器,。每個(gè)參考電壓電路可由參考電壓控制寄存器(REFnCN)分別控制,其中,,BIASEn位控制參考電壓發(fā)生器的使能,,REFBEn位控制乘2緩沖器的使能。當(dāng)禁止時(shí),,內(nèi)部參考電壓電路的耗電量為1μA,,緩沖放大器呈高阻抗?fàn)顟B(tài);當(dāng)使用內(nèi)部參考電壓源時(shí),,這兩個(gè)控制位均須置l,;當(dāng)使用外部參考電壓源時(shí),控制位REFBEn應(yīng)置0,。應(yīng)該注意,,不論使用何種參考電壓源,當(dāng)使用模/數(shù)轉(zhuǎn)換器時(shí),,BIASEn位必須置1,,不使用模/數(shù)轉(zhuǎn)換器時(shí),BIASEn位置0,,以有利于降低能耗,。
2.3 工作方式
ADC0和ADC1的最大轉(zhuǎn)換速度為1 MS/s,,轉(zhuǎn)換時(shí)鐘由系統(tǒng)時(shí)鐘分頻產(chǎn)生,并由ADCnCF型寄存器的ADCnSC位設(shè)定,。
2.3.1 轉(zhuǎn)換啟動(dòng)方式
對(duì)于ADC0,,模/數(shù)轉(zhuǎn)換的啟動(dòng)方法有4種,由ADC0CN型寄存器中的轉(zhuǎn)換啟動(dòng)方式位AD0CMl/AD0CM0決定,,這4種方式分別是給ADC0CN的AD0BUSY位寫1,;定時(shí)器2的溢出;定時(shí)器3的溢出,;檢測(cè)到外部ADC轉(zhuǎn)換啟動(dòng)信號(hào)CNVSTR0的上跳沿,。對(duì)于ADC1,模/數(shù)轉(zhuǎn)換的啟動(dòng)方法有5種,,由寄存器ADC1CN中的轉(zhuǎn)換啟動(dòng)方式位AdlCM12-AD1CM0決定,,這5種方式分別是給ADC1CN的AD1BUSY位寫l;定時(shí)器2的溢出,;定時(shí)器3的溢出,;檢測(cè)到外部ADC轉(zhuǎn)換啟動(dòng)信號(hào)CNVSTR的上跳沿;給ADC0CN的AD0BUSY位寫1,。
在模/數(shù)轉(zhuǎn)換過程中,,ADnBUSY位被置1,轉(zhuǎn)換結(jié)束后,,該位被清零,,如果允許中斷,ADnBUSY信號(hào)的下降沿將觸發(fā)中斷,,并置位ADnINT的中斷標(biāo)志位ADCnON.5,。在單端方式,模/數(shù)轉(zhuǎn)換的結(jié)果數(shù)據(jù)存放在ADCnH和ADCnL中,;在差分方式,,模/數(shù)轉(zhuǎn)換的結(jié)果數(shù)據(jù)是ADC0與ADC1之和,存放在ADC0H和ADC0L中,。當(dāng)用給ADC0CN的AD0BUSY位寫1的方法啟動(dòng)模/數(shù)轉(zhuǎn)換時(shí),,應(yīng)該查詢ADnINT位,以便確定模/數(shù)轉(zhuǎn)換何時(shí)完成,,建議查詢步驟為給ADnINT寫0,;給ADnBUSY寫1;查詢ADnINT位是否為l,;處理ADC數(shù)據(jù),,當(dāng)在差分方式且以外部信號(hào)啟動(dòng)模/數(shù)轉(zhuǎn)換時(shí),應(yīng)將引腳CNVSTR0和引腳CNVSTR1連接起來,。
2.3.2 采樣保持方式
模/數(shù)轉(zhuǎn)換的采樣保持方式由ADCnCN型寄存器的ADCnTM位控制,,一旦ADCn被啟動(dòng),,其輸入將被連續(xù)采樣,而這時(shí)轉(zhuǎn)換尚未開始,,當(dāng)AdnTM位為1,,轉(zhuǎn)換開始進(jìn)行,一個(gè)采樣周期由18個(gè)SAR時(shí)鐘組成,。當(dāng)用CNVSTRn信號(hào)啟動(dòng)轉(zhuǎn)換時(shí),ADC一直采樣,,直到引腳CNVSTRn上出現(xiàn)一個(gè)上跳沿為止,。將AdnTM位置為1,就能保證在模擬輸入端接外部多路選擇器時(shí),,滿足必要的建立時(shí)間,。
2.3.3 建立時(shí)間
如果ADC的輸入為高速快變信號(hào),如外部多路選擇器的切換或其他跳變信號(hào),,則在進(jìn)行轉(zhuǎn)換之前需要一個(gè)最小跟隨時(shí)間,,這個(gè)時(shí)間取決于ADC的輸入電阻,采樣電容,,外部等效電阻及所期望的轉(zhuǎn)換精度,,等效時(shí)間常數(shù)對(duì)單端輸入和差分輸入都是一樣的,給定精度所需要的建立時(shí)間可由下式來估算:
其中A為所需精度,,取LSB的小數(shù)部分,;t為所需的建立時(shí)間(秒);n為ADC的位數(shù)(16),;RT為ADC的輸入電阻和外部等效電阻的總和,;Cs為采樣電容。
2.4 校準(zhǔn)
模/數(shù)轉(zhuǎn)換器在生產(chǎn)廠已經(jīng)通過非線性,、零點(diǎn)偏移和增益誤差校準(zhǔn),,但也能在系統(tǒng)中單獨(dú)對(duì)ADC0和ADC1的這些參數(shù)分別進(jìn)行校準(zhǔn)。校準(zhǔn)是通過ADC0型和ADC1型配置寄存器的相應(yīng)位來進(jìn)行的,,校準(zhǔn)參數(shù)可用ADC校準(zhǔn)指示寄存器(ADC0CPT)和ADC校準(zhǔn)參數(shù)寄存器(ADC0CCF)讀寫,,ADC0CFF的CPTR位用于ADC0CCF讀寫特定的校準(zhǔn)參數(shù)。一般情況下,,不必再進(jìn)行非線性校正,,若要進(jìn)行這種校正,將ADCnLCAL位置1即可啟動(dòng),,校正完成后,,由硬件對(duì)ADCnLCAL位置0 ,校正參數(shù)存放在修正單元中,。進(jìn)行零點(diǎn)和增益校準(zhǔn)時(shí),,可以使用內(nèi)部或外部的電壓源作為校準(zhǔn)源,,由ADCnSCAL位來設(shè)定。為了保證精度,,建議先進(jìn)行零點(diǎn)校準(zhǔn),,后進(jìn)行增益校準(zhǔn),零點(diǎn)校準(zhǔn)可由ADCnOCAL位的置1采啟動(dòng),,校準(zhǔn)完成后,,由硬件對(duì)ADCnOCAL位置0,零點(diǎn)校準(zhǔn)可以補(bǔ)償?shù)钠普`差為滿量程的±3.125%,,偏移值在ADC的數(shù)字化之前加到AINnG輸入中,;增益校準(zhǔn)可通過將ADCnGCAL位的置l來啟動(dòng),校準(zhǔn)完成后,,由硬件對(duì)ADCnGCAL位置0,,增益校準(zhǔn)可以補(bǔ)償?shù)姆蔷€性誤差約為±3.125%,增益值加到ADC的VREF通路中,,用以改變轉(zhuǎn)換器傳遞函數(shù)的斜率,。
2.5 可編程窗口檢測(cè)器
ADC0有一個(gè)可編程窗口檢測(cè)器,它能連續(xù)地將ADC0的輸出與用戶設(shè)定的限位值進(jìn)行比較,,并監(jiān)測(cè)系統(tǒng)的超值條件是否滿足,。這一點(diǎn)在中斷觸發(fā)系統(tǒng)中特別有用,既可以節(jié)約代碼空間和CPU的占用帶寬,,又能提供快速的響應(yīng)時(shí)間,。窗口檢測(cè)器的中斷標(biāo)志也可用于查詢方式,該標(biāo)志即特殊功能寄存器(ADC0CN)中的AD0INT位,。參考字的高低字節(jié)被分別裝入ADC下限(大于)和上限(小于)寄存器(ADC0GTH/ADC0GTL和ADC0LTH/ADC0LTL)中,。單端和差分方式都可以使用窗口檢測(cè)器,在單端方式中,,窗口檢測(cè)器對(duì)寄存器(ADC0GTx/ADC0LTx)與ADC0的輸出進(jìn)行比較,,而差分方式是將ADC0和ADC1的組合輸出用于比較。應(yīng)該注意,,窗口檢測(cè)器標(biāo)志可以在監(jiān)測(cè)到數(shù)據(jù)落在設(shè)定的限位值之內(nèi)或之外時(shí)置位或復(fù)位,,這取決于對(duì)寄存器(ADC0GTx和ADC0LTx)的編程。
3 應(yīng)用舉例
圖2所示是一個(gè)微型彈簧自動(dòng)測(cè)試分選系統(tǒng)的原理框圖,,單片機(jī)(C8051F060)是該系統(tǒng)的控制中心,,通過12位DAC的輸出產(chǎn)生一個(gè)直流電壓,送到加力器,,加力器將使彈簧產(chǎn)生變形位移,,由位移傳感器測(cè)出位移量,傳感器的輸出電壓送到Ain輸入端,經(jīng)過16位A/D轉(zhuǎn)換得到位移量,,根據(jù)物理學(xué)胡克定理公式:F=-kS,,單片機(jī)即可計(jì)算出彈簧的彈性系數(shù)k值。圖中,,LED陣列用于不同k值的指示,,由于C8051F060型單片機(jī)有多達(dá)59個(gè)數(shù)字I/O口,所以,,液晶顯示LCD接口,。LED指示矩陣接口及鍵盤掃描接口等,均不需要太多的外擴(kuò)電路,,簡(jiǎn)化了系統(tǒng),,提高了可靠性。
4 結(jié)束語
近年來,,隨著大規(guī)模集成電路制造技術(shù)的不斷發(fā)展,混合信號(hào)單片機(jī)的模擬接口性能進(jìn)一步提高,,特別是ADC的功能更加完善,,精度從10位、12位,、直到16位甚至24位,,但綜合考慮采樣速度等因素,C8051F06X系列單片機(jī)以16位精度和1 MS/s的采樣速度,,以及其他靈活多樣的可配置功能,,成為目前屈指可數(shù)的片上系統(tǒng)混合信號(hào)單片機(jī)??梢灶A(yù)見,,該系列單片機(jī)必將在數(shù)據(jù)采集及智能化儀器儀表等方面得到廣泛的應(yīng)用。