周宇,胡昕睿,曾宇航,鄧力,劉和平
(重慶大學 電氣工程學院,重慶400044)
?
周宇,胡昕睿,曾宇航,鄧力,劉和平
(重慶大學 電氣工程學院,重慶400044)
以TMS320F28027為代表的TI C28x Piccolo系列微處理器采用了以SOC為基礎(chǔ)的ADC,其配置方式不同于TI其他系列MCU基于Sequencer的ADC。在TMS320F28027的基礎(chǔ)上,詳細介紹了其ADC的工作原理,以及順序采樣和同步采樣兩種采樣方式的配置方法。
TI C28x Piccolo系列微處理器;基于SOC的ADC;順序采樣;同步采樣
TI C28x Piccolo系列微處理器,因其低功耗、高性能的特點,被廣泛應(yīng)用在太陽能逆變器、白色家電設(shè)備、混合動力汽車電池、電力線通信和 LED照明等控制領(lǐng)域。A/D 轉(zhuǎn)換實現(xiàn)了模擬量到數(shù)字量的轉(zhuǎn)換,是控制應(yīng)用中必不可少的環(huán)節(jié)之一。A/D轉(zhuǎn)換的精度和速度直接關(guān)系到控制系統(tǒng)的準確性和快速性。
相比于TI其他類型微處理器,TI C28x Piccolo系列內(nèi)部集成了新一代的基于SOC的ADC。此ADC的內(nèi)核包含一個12位轉(zhuǎn)換器,此轉(zhuǎn)換器由兩個采樣保持電路供源。這兩個采樣保持電路可同時或者順序采樣。對于用戶來講,可以很容易地從一個單觸發(fā)來創(chuàng)建一系列的轉(zhuǎn)換。但此ADC在寄存器設(shè)置和配置方式上與基于Sequencer 的ADC有很大的不同,主要體現(xiàn)在控制寄存器ADCCTRL的數(shù)量和功能位設(shè)置、中斷和工作方式的配置方式等方面,更新后的寄存器設(shè)置可以參見TI的相關(guān)文獻[5]。
1.1 工作原理
對基于SOC的ADC,其核心在于對16個SOC(Start Of Conversion)的配置,單個SOC對應(yīng)單個A/D轉(zhuǎn)換過程,SOC的配置數(shù)量取決于應(yīng)用中需要A/D轉(zhuǎn)換的數(shù)目。每個SOC中都有三種配置項:啟動轉(zhuǎn)換的觸發(fā)源、采樣通道以及采樣窗口時間。
其中,觸發(fā)源可選擇軟件、PWM、GPIO,以及CPU定時器等多種觸發(fā)方式,采樣通道可根據(jù)采樣方式的不同選擇ADCINA1~8、ADCINB1~8共16個或8對采樣通道,采樣窗口時間也可根據(jù)需要設(shè)置。
對于單個轉(zhuǎn)換,ADC的工作過程為:在收到相應(yīng)的觸發(fā)信號后,即開始按設(shè)置的采樣窗口時間對指定通道進行采樣,隨后,采樣值與參考電壓進行比較,得到轉(zhuǎn)換值。同時,在轉(zhuǎn)換開始時或轉(zhuǎn)換完成時觸發(fā)與SOC編號對應(yīng)的EOC(End Of Conversion)脈沖,標志轉(zhuǎn)換結(jié)束。轉(zhuǎn)換的結(jié)果存儲在與SOC編號對應(yīng)的ADCRESULT寄存器中。
1.2 轉(zhuǎn)換結(jié)果的計算
若在初始化中選擇內(nèi)部參考,ADC將會選擇其內(nèi)部的帶隙電路產(chǎn)生參考電壓。此時ADC的轉(zhuǎn)換范圍為0~3.3 V,轉(zhuǎn)換結(jié)果的計算公式如下:
若選擇外部電壓參考,則需要從VREFHI/VREFLO引腳引入?yún)⒖茧妷海藭rADC的轉(zhuǎn)換范圍為0~VREFHI,轉(zhuǎn)換上限為參考電壓值,轉(zhuǎn)換結(jié)果的計算公式如下:
1.3 初始化和中斷設(shè)置
使用ADC時,應(yīng)進行4步初始化操作:設(shè)置ADC校準;內(nèi)部各電路上電;選擇內(nèi)部或外部采樣參考;打開ADC。一般情況下ADC校準可使用廠家設(shè)定值,調(diào)用函數(shù)Device_cal()即可。
若選擇默認校準值和內(nèi)部參考電壓,ADC的初始化程序如下:
EALLOW;
SysCtrlRegs.PCLKCR0.bit.ADCENCLK=1;
(*Device_cal)();
//調(diào)用廠家設(shè)定的校準值
AdcRegs.ADCCTL1.bit.ADCBGPWD=1; //帶隙電路上電
AdcRegs.ADCCTL1.bit.ADCREFPWD=1; //參考電路上電
AdcRegs.ADCCTL1.bit.ADCPWDN=1; //采樣電路上電
AdcRegs.ADCCTL1.bit.ADCREFSEL=0; //選擇內(nèi)部參考
AdcRegs.ADCCTL1.bit.ADCENABLE=1; //打開ADC
EDIS;
以上設(shè)置在TI C2000系列v129版本的頭文件DSP2802x_Adc.c中被編譯成了函數(shù)InitAdc(),可在程序中直接調(diào)用。
ADC的每次轉(zhuǎn)換完成后都可觸發(fā)中斷,若需要使用ADC中斷,則可進行如下步驟的設(shè)置:設(shè)置中斷觸發(fā)時刻,可選擇開始轉(zhuǎn)換時觸發(fā)或轉(zhuǎn)換結(jié)果產(chǎn)生時觸發(fā);選擇中斷編號;設(shè)置中斷產(chǎn)生與中斷標志的關(guān)系,可選擇在中斷產(chǎn)生與中斷標志狀態(tài)無關(guān)或在存在中斷標志時不產(chǎn)生中斷;選擇觸發(fā)中斷的EOC信號。
若需要在SOC2的轉(zhuǎn)換結(jié)果產(chǎn)生后觸發(fā)ADCINT1中斷,且在存在中斷標志時不再產(chǎn)生中斷,配置程序如下:
EALLOW;
AdcRegs.ADCCTL1.bit.INTPULSEPOS=1;
//產(chǎn)生轉(zhuǎn)換結(jié)果后觸發(fā)中斷
AdcRegs.INTSEL1N2.bit.INT1E=1; //選擇ADCINT1中斷
AdcRegs.INTSEL1N2.bit.INT1CONT=0;
//設(shè)置中斷產(chǎn)生與標志的關(guān)系
AdcRegs.INTSEL1N2.bit.INT1SEL=2; //中斷由EOC2觸發(fā)
EDIS;
在完成對ADC的初始化設(shè)置后,即可根據(jù)應(yīng)用需要配置采樣方式和單次轉(zhuǎn)換。
2.1 順序采樣方式
順序采樣是最常用的采樣方式,即單次轉(zhuǎn)換按照觸發(fā)-采樣-轉(zhuǎn)換的順序進行。順序采樣只要按需求配置SOC即可。
ADC中共有16個SOCx,x表示編號為0~15。每個SOC可設(shè)置由不同或相同的觸發(fā)源觸發(fā),對任意采樣通道進行可調(diào)時間的采樣和轉(zhuǎn)換。用戶在設(shè)置好3個配置項后,ADC按照SOC0~SOC15的默認優(yōu)先級進行轉(zhuǎn)換。SOC的優(yōu)先級也可通過優(yōu)先級控制寄存器SOCPRICTL進行設(shè)置。
順序采樣方式的時序可以參見TI的相關(guān)文獻[5]。
在實際應(yīng)用中,通??稍O(shè)置多個SOC對同一通道進行采樣,并對采樣結(jié)果取平均值,即可有效地消除模擬信號中高頻噪聲的影響,提高A/D轉(zhuǎn)換的精度。
若要在收到定時器Timer0的觸發(fā)信號后按照通道ADCINA4、ADCINA2、ADCINA6的順序進行轉(zhuǎn)換,SOC的配置程序如下:
EALLOW;
AdcRegs.ADCSOC0CTL.bit.CHSEL=4;
//SOC0選擇ADCINA4通道
AdcRegs.ADCSOC1CTL.bit.CHSEL=2;
//SOC1選擇ADCINA2通道
AdcRegs.ADCSOC2CTL.bit.CHSEL=6;
//SOC2選擇ADCINA6通道
AdcRegs.ADCSOC0CTL.bit.TRIGSEL=1;
//SOC0由Timer0觸發(fā)
AdcRegs.ADCSOC1CTL.bit.TRIGSEL=1;
//SOC1由Timer0觸發(fā)
AdcRegs.ADCSOC2CTL.bit.TRIGSEL=1;
//SOC2由Timer0觸發(fā)
AdcRegs.ADCSOC0CTL.bit.ACQPS=6;
//SOC0采樣保持窗為6
AdcRegs.ADCSOC1CTL.bit.ACQPS=6;
//SOC1采樣保持窗為6
AdcRegs.ADCSOC2CTL.bit.ACQPS=6;
//SOC2采樣保持窗為6
EDIS;
ADCINA4通道的采樣結(jié)果存儲在ADCRESULT0中,ADCINA2通道采樣結(jié)果存儲在ADCRESULT1中,ADCINA6的采樣結(jié)果存儲在ADCRESULT2中。
此外,需要指出的是,此類ADC的采樣通道在空閑時也可以作為普通I/O端口使用,這也是與其他系列不同的地方。
2.2 采樣和轉(zhuǎn)換時間的計算
通過ADCSOCxCTL寄存器的ACQPS位,可設(shè)置采樣窗口大小,即采樣時間。采樣時間設(shè)置的基本單位為一個時鐘周期,ACQPS可設(shè)置為6~63的任意數(shù)值,采樣時間可通過如下公式計算:
采樣時間=(ACQPS+1)×時鐘周期
轉(zhuǎn)換時間=13×時鐘周期
A/D轉(zhuǎn)換過程的總時間=(ACQPS+14)×時鐘周期
在某些應(yīng)用中,為保證兩個信號的采樣間隔最小,常采用同步采樣的方式。Piccolo系列MCU的ADC內(nèi)部具有雙采樣保持電路,這使對雙通道的同步采樣成為可能。
在同步采樣模式中,偶數(shù)編號的SOCx與其下一位奇數(shù)編號的SOCx組成一個采樣對,例如SOC0和SOC1、SOC2和SOC3。8位寄存器ADCSAMPLEMODE的一位SIMULENx控制一個采樣對的使能,其編號與采樣對的偶數(shù)編號相對應(yīng),例如SIMULEN0對應(yīng)SOC0和SOC1采樣對。
同步采樣模式有以下規(guī)則:
① 采樣對中任意一個SOCx的觸發(fā)都有效;
② 只有編號相同的A/B通道才能實現(xiàn)一對同步采樣;
③ A/B通道的信號會被同時采樣,但A通道會優(yōu)先轉(zhuǎn)換;
④ A通道轉(zhuǎn)換結(jié)束后可觸發(fā)偶數(shù)編號的EOCx,B通道轉(zhuǎn)換結(jié)束后可觸發(fā)奇數(shù)編號的EOCx;
⑤ A通道轉(zhuǎn)換的轉(zhuǎn)換結(jié)果會被儲存在偶數(shù)編號的ADCRESULTx中,B通道轉(zhuǎn)換的轉(zhuǎn)換結(jié)果會被存儲在奇數(shù)編號的ADCRESULTx中;
⑥ 在進行多對同步采樣時,同樣遵守SOCx的優(yōu)先級設(shè)置。
對于PWM1.ADCSOCA觸發(fā)的同步采樣,具體的配置方式如下:
AdcRegs.ADCSAMPLEMODE.bit.SIMULEN0=1;
//同步采樣模式打開
AdcRegs.ADCSOC0CTL.bit.CHSEL=2;
//通道選擇ADCINA2/ADCINB2
AdcRegs.ADCSOC0CTL.bit.TRIGSEL=5;
//觸發(fā)源選擇ePWM1.ADCSOCA
AdcRegs.ADCSOC0CTL.bit.ACQPS=6;
//采樣保持窗大小設(shè)置為6
其工作過程為:在PWM1送出ADCSOCA觸發(fā)信號后,ADCINA2通道和ADCINB2通道會同時開始采樣,采樣完成后,A通道會優(yōu)先轉(zhuǎn)換,結(jié)果存儲在ADCRESULT0寄存器中。同時,按寄存器ADCCTL1中INTPULSEPOS位的配置,EOC0脈沖會在轉(zhuǎn)換開始或轉(zhuǎn)換完成時觸發(fā)。隨后B通道開始轉(zhuǎn)換,結(jié)果存儲在ADCRESULT1寄存器中,并按相同規(guī)律觸發(fā)EOC1脈沖。工作時序圖略——編者注。
Piccolo系列微處理器內(nèi)置ADC具有采樣時間可調(diào)、轉(zhuǎn)換快速、準確度高和配置簡單的特點。本文詳細介紹了其初始化、中斷、觸發(fā)源和通道選擇的配置過程,以及采樣值、采樣時間等參數(shù)的計算方法,并給出了實現(xiàn)順序采樣方式和同步采樣方式的例程。通過實驗驗證,例程均可實現(xiàn)其功能,為該系列處理器的實際應(yīng)用奠定了良好基礎(chǔ)。
[1] 劉和平,嚴利平,張學鋒,等TMS320LF240xDSP結(jié)構(gòu)、原理及應(yīng)用[M].北京:北京航空航天大學出版社,2002.
[2] 劉和平.數(shù)字信號控制器原理及應(yīng)用-基于TMS320F2808[M].北京:北京航空航天大學出版社,2011.
[3] 劉和平,鄧力,江渝,等.數(shù)字信號處理器原理、結(jié)構(gòu)及應(yīng)用基礎(chǔ)-TMS320LF28x[M].北京:機械工業(yè)出版社,2007.
[4] 劉和平. DSP原理及電機控制應(yīng)用-基于TMS320LF240x系列[M].北京:北京航空航天大學出版社,2006.
[5] Texas Instruments. TMS320x2802x, 2803x Piccolo Analog-to-Digital Converter (ADC) and Comparator. Reference Guide, 2009.
[6] 趙宇萍,謝拴勤,郭曉康. TMS320C28x模數(shù)轉(zhuǎn)換器的精度校正[J].單片機與嵌入式系統(tǒng)應(yīng)用,2005(8):76-77.
[7] 肖琴,常越. MSP430中模數(shù)轉(zhuǎn)換器的使用方法[J].單片機與嵌入式系統(tǒng)應(yīng)用,2003(5):73-74.
[8] 呂鋒,李瑋.幾種模數(shù)轉(zhuǎn)換技術(shù)的分析比較[J].單片機與嵌入式系統(tǒng)應(yīng)用,2002(6):10-13.
Zhou Yu, Hu Xinrui, Zeng Yuhang, Deng Li, Liu Heping
(School of Electrical Engineering, Chongqing University, Chongqing 400044, China)
Contrary to previous ADC types, the ADC on TI C28x Piccolo series MCU is not sequencer-based but SOC-based, which has a quite difference on setting methods. Based on TMS320F28027, one of the typical MCU of Piccolo series is introduced in detail, and the examples of sequential sampling mode and simultaneous sampling mode are given.
TI C28x Piccolo series MCU; ADC based on SOC; sequential sampling; simultaneous sampling
TN792
A
迪娜
2013-10-29)