C8051F單片機(jī)中的ADC注意事項(xiàng)
F020的片內(nèi)有1個(gè)1.2V、15×10-6/℃的帶隙電壓基準(zhǔn)發(fā)生器和1個(gè)兩倍增益的輸出緩沖器。2.4V的基準(zhǔn)電壓(VREF)可通過外引腳分別接入ADC0、ADC1和DAC中。VREF對(duì)外帶載能力為200μA(建議在驅(qū)動(dòng)外部負(fù)載時(shí),對(duì)地接1個(gè)負(fù)載電阻)。ADC使用偏置時(shí),必須將參考源控制寄存器REFxCN中的位1置于1;如置于0,則關(guān)閉內(nèi)部偏壓,此時(shí)可通過VREF引腳(引腳12)使用外部基準(zhǔn)電壓,外部基準(zhǔn)電壓必須小于VAV±0.3V(還要大于1V)。不用ADC,也不用DAC時(shí),可將REFxCN的位0置0,使緩沖放大器處于省電方式(輸出為高阻態(tài))。
本文引用地址:http://m.butianyuan.cn/article/171762.htm設(shè)置REF0CN的位4為0時(shí),ADC0用VREF偏置,為1時(shí),用DAC0輸出偏置;設(shè)置為REF0CN的位3為0時(shí),ADC1用VREF偏置,為1時(shí),用AV+偏置。
在F020的ADC電路中,輸入多路選擇開關(guān)AMUX后面都帶有1個(gè)可用編程設(shè)置增益的內(nèi)部放大器(PGA)。當(dāng)各模擬通道之間輸入的電壓信號(hào)范圍差距較大時(shí),或需要放大一個(gè)具有較大直流偏移的信號(hào)時(shí)(在差分輸入方式,DAC可用于提供直流偏移)顯得尤為有用。設(shè)置的方式是配置ADCxCF中的位2~0(000對(duì)應(yīng)PGA的增益為1;001對(duì)應(yīng)為2;010對(duì)應(yīng)4;011對(duì)應(yīng)為8;10x對(duì)應(yīng)為16、11x對(duì)應(yīng)為0.5)。這里的增益對(duì)溫度傳感器信號(hào)也起作用。當(dāng)增益為1時(shí),VTEMP=0.002 86(V/℃)(TEMPC)℃+0.776V。
ADC的數(shù)據(jù)與控制
對(duì)應(yīng)單端輸入,ADC結(jié)果數(shù)據(jù)字格式為:0V--0000,VREF--0FFF或FFF0。
對(duì)應(yīng)差分輸入,ADC結(jié)果數(shù)據(jù)字格式為2的補(bǔ)碼:VREF--07FF,0--0000,-VREF--F800或8000。
將ADCxCN的位0置0可使結(jié)果右對(duì)齊;置1可使結(jié)果左對(duì)齊。當(dāng)差分輸入時(shí),右對(duì)齊產(chǎn)生的多余高位是符號(hào)擴(kuò)展位。
C8051F系列單片機(jī)內(nèi)還設(shè)有數(shù)據(jù)相關(guān)窗口中斷發(fā)生器或稱可編程窗口檢測器,也叫ADC上(下)數(shù)據(jù)寄存器ADC0G(L)TH(L),用后臺(tái)方式監(jiān)視一個(gè)關(guān)鍵電壓。當(dāng)轉(zhuǎn)換數(shù)據(jù)位于規(guī)定的窗口之內(nèi)(或之外)時(shí),向控制器申請轉(zhuǎn)換結(jié)束中斷。要求在窗口之內(nèi)中斷時(shí),上限寄存器LT裝入高位窗口數(shù),下限寄存器GT裝入低位窗口數(shù);若要求在窗口之外中斷時(shí),則在下限寄存器GT中裝入高位窗口數(shù),在上限寄存器LT中裝入下限窗口數(shù)。
復(fù)位時(shí),ADC部分的狀態(tài)為:內(nèi)部電壓基準(zhǔn)緩沖器關(guān)閉、內(nèi)部偏壓關(guān)閉、內(nèi)部傳感器關(guān)閉、ADC禁止、轉(zhuǎn)換結(jié)果數(shù)據(jù)寄存器右對(duì)齊、12位的端口均為單端輸入、端口指向AIN0、SAR轉(zhuǎn)換時(shí)鐘為33個(gè)系統(tǒng)時(shí)鐘、內(nèi)部放大器增益為1、下限數(shù)據(jù)寄存器為FFFFH、上限數(shù)據(jù)寄存器為0000H。
綜合F020中與ADC相關(guān)的各要素,要想正確應(yīng)用ADC功能,應(yīng)按下列順序編程:設(shè)置參考電壓>設(shè)置允許ADC>設(shè)置跟蹤(啟動(dòng))方式>設(shè)定數(shù)據(jù)對(duì)齊>配置通道>選擇通道>設(shè)置轉(zhuǎn)換時(shí)鐘和增益>設(shè)定窗口檢測上、下限>啟動(dòng)轉(zhuǎn)換。操作SFR的順序(以12位為例)為:REF0CN>ADC0CN>AMX0CF>AMUX0SL>ADC0CF>ADC0GTH>ADC0GTL>ADC0LTH>ADC0LTL>ADC0CN或其它啟動(dòng)方式。 C8051F020(簡稱F020)是美國德州Cygnal 公司推出的一種混合信號(hào)SOC型8位單片機(jī)。它屬于C8051F系列中的F02X子系列。其性能價(jià)格比在目前應(yīng)用領(lǐng)域極具競爭力。F020具有8路12位A/D轉(zhuǎn)換(簡稱ADC)接口和8路8位在線可編程(ISP)的ADC電路,片上的特殊功能寄存器(簡稱SFR)有15個(gè)與ADC的控制相關(guān),它們是:
AMUX0SL-AMUX0通道選擇寄存器,復(fù)位值為00000000;
AMX0CF-AMUX0配置寄存器,復(fù)位值為00000000;
ADC0CF-ADC0配置寄存器,復(fù)位值為11111000;
ADC0CN-ADC0控制寄存器,復(fù)位值為00000000;
ADC0H-ADC0數(shù)據(jù)字MSB寄存器,復(fù)位值為00000000;
ADC0L-ADC0數(shù)據(jù)字LSB寄存器,復(fù)位值為00000000;
ADC0GTH-ADC0下限數(shù)據(jù)高字節(jié)寄存器,復(fù)位值為11111111;
ADC0GTL-ADC0下限數(shù)據(jù)低字節(jié)寄存器,復(fù)位值為11111111;
ADC0LTH-ADC0上限數(shù)據(jù)高字節(jié)寄存器,復(fù)位值為00000000;
ADC0LTL-ADC0上限數(shù)據(jù)低字節(jié)寄存器,復(fù)位值為00000000;
AMX1SL-AMUX1通道選擇寄存器,復(fù)位值為00000000;
ADC1CN-ADC1控制寄存器,復(fù)位值為00000000;
ADC1CF-ADC1配置寄存器,復(fù)位值為11111000;
ADC1-ADC1數(shù)據(jù)字寄存器,復(fù)位值為00000000;
REF0CN-基準(zhǔn)電壓控制寄存器,復(fù)位值為00000000;
ADC是混合信號(hào)控制器的重要功能,如欲在應(yīng)用編程中得心應(yīng)手,就必須對(duì)其相關(guān)的要素有較清晰的整體認(rèn)識(shí)。
1) ADC的精度與通道
F020采用TQFP100封裝,芯片引腳有8個(gè)(引腳18-25)專用于模擬輸入,是8路12位ADC的輸入端。每路12位的轉(zhuǎn)換精度都是其自身的±1LSB(最低位)。實(shí)際上,對(duì)應(yīng)12位逐次逼近寄存器型(SAR)ADC只有1個(gè),在它與各輸入端之間有1個(gè)具有9 通道輸入的多路選擇開關(guān)(可配置模擬多路開關(guān)AMUX)。AMUX的第9通道連接溫度傳感器。在F020是中,12位ADC稱為ADC0,另有8路8位在系統(tǒng)可編程(ISP)的ADC電路稱為ADC1。其8個(gè)外接引腳與P1口復(fù)用,片內(nèi)結(jié)構(gòu)與ADC0相近,只是轉(zhuǎn)換的位數(shù)為8位,轉(zhuǎn)換精度為8位的±1LSB。
ADC0端口的每一對(duì)均可用編程設(shè)置成分別地單端輸入或差分輸入。差分輸入時(shí)的端口配對(duì)為0-1、2-3、4-5、6-7,此設(shè)置由通道選擇寄存器AMUX0SL的低4位和通道配置寄存器AMUX0CF的低4位確定。在AMX0CF中,位3~0各對(duì)應(yīng)2個(gè)引腳通道。位值=0,表示是獨(dú)立的單端輸入(復(fù)位值均為單端輸入);位值=1,表示是差分輸入對(duì)。對(duì)應(yīng)AMX0CF選差分輸入時(shí),AMUX0SL中只有在選雙數(shù)(含0)通道時(shí)才有效(注:AMUX0SL低4位為1xxx時(shí),不論AMX0CF低4位為何值,均選溫度傳感器)。
將REF0CN的位3置1時(shí),允許使用溫度傳感器;置 0時(shí),溫度傳感器的輸出為高阻態(tài)。溫度傳感器的值可用于修正參數(shù)的非線性或記錄、調(diào)整與溫度相關(guān)的數(shù)據(jù)。
2) ADC的速率與啟動(dòng)
C8051F系列單片機(jī)中ADC的速率都是可用編程設(shè)置的,但最少要用16個(gè)系統(tǒng)時(shí)鐘。一般在轉(zhuǎn)換之前還自動(dòng)加上3個(gè)系統(tǒng)時(shí)鐘的跟蹤/保持捕獲時(shí)間(>1.5μs)。設(shè)置F020內(nèi)ADC速率的方法是通過配置寄存器ADCxCF(x為0或1)的位7~3來進(jìn)行的,其復(fù)位值為11111(位7~3=SYSCLK/CLKSAR-1)。
一般在啟動(dòng)ADC之前都要處于跟蹤方式,控制寄存器ADCxCN的位6如果為0,則一直處于跟蹤方式(此時(shí)啟動(dòng)4種啟動(dòng)方式都可比跟蹤啟動(dòng)快3個(gè)系統(tǒng)時(shí)鐘);如為1,則有4種跟蹤啟動(dòng)方式可選擇,即對(duì)ADCxCN中的位3~2賦值;00為向ADBUSY寫1時(shí)跟蹤(軟件命令);01為定時(shí)器3溢出跟蹤;10為CNVSTR上升沿跟蹤(外部信號(hào));11為定時(shí)器2溢出跟蹤。
復(fù)位時(shí),ADCxCN的位7為0,處于關(guān)斷狀態(tài)。每次轉(zhuǎn)換結(jié)束時(shí),ADCxCN的位5為1,位4(忙標(biāo)志)的下降沿觸發(fā)結(jié)束中斷,也可用軟件查詢這些狀態(tài)位。
評(píng)論