一種新型51內(nèi)核單片機(jī)MSC1210及其應(yīng)用
實際應(yīng)用系統(tǒng)往往需要進(jìn)行高精度的測量,同時還必須進(jìn)行實時快速控制,提高其開發(fā)效率。為此人們常采用高精度A/D芯片加帶ISP開發(fā)功能的單片機(jī)系統(tǒng)來實現(xiàn)。德州儀器(TI)的MSC1210單片機(jī)解決了上述問題。它集成了一個增強(qiáng)型8051內(nèi)核、高達(dá)33 MHz的時鐘周期、8路24位高精度∑-△A/D轉(zhuǎn)換器、Flash存儲器等,其系統(tǒng)功能和結(jié)構(gòu)框圖如圖1所示。
MSC1210具有以下主要特性:
◇ 3個16位的定時器,16位PWM波輸出;
◇ 多達(dá)21個中斷源;
◇ 32個數(shù)字輸入/輸出端口,帶有看門狗;
◇ 8路ADC提供24位分辨率可編程的無丟失碼解決方案;
◇ 可編程增益放大(PGA)在1~128之間可調(diào),極大提高了ADC精度;
◇ 供電電源2.7~5.25 V,在3 V時功耗低于4 mW,停止方式電流小于1μA;
◇ 內(nèi)核兼容8051,指令與8051完全兼容,可以使用原有8051開發(fā)系統(tǒng);
◇ 時鐘頻率可達(dá)33 MHz,單周期指令執(zhí)行速度達(dá)8 MIPS,執(zhí)行速度比標(biāo)準(zhǔn)8051快3倍;
◇ 高達(dá)32 KB的Flash存儲器,SRAM達(dá)1.2 KB,外部可擴(kuò)展至64 KB存儲器;
◇ Flash在電壓低達(dá)2.7 V時仍可串行或并行編程,可10萬次擦除/寫操作;
◇ 具有32位累加器;
◇ 有電源管理功能,能夠進(jìn)行低電壓檢測,在片上電復(fù)位;
◇ 帶FIFO的SPI端口,雙UART;
◇ 64TQFP封裝,MSC1210系列的硬件和引腳完全兼容,必要時可以互換。
1 內(nèi)核兼容8051但速度更快功能更強(qiáng)
MSC1210系列的所有指令功能與標(biāo)準(zhǔn)8051相同,對位、標(biāo)志和寄存器的影響相同,但時序不同。MSC120單片機(jī)使用精簡的8051內(nèi)核,在同樣的外部時鐘作用下,其執(zhí)行速度比標(biāo)準(zhǔn)8051快1.5~3倍(每條指令有4個時鐘周期與12個時鐘周期的區(qū)別)。在同樣的指令和時鐘下,速度提高到2.5倍以上。因此,一個時鐘為33 MHz的MSC1210執(zhí)行速度與一個時鐘為82.5 MHz的標(biāo)準(zhǔn)8051相同,其區(qū)別可以從圖2看出;而且MSC1210的定時器和計數(shù)器可以選擇每12個或4個時鐘周期計數(shù)一次。
MSC1210提供了雙數(shù)據(jù)指針(DPTR)加速數(shù)據(jù)塊的移動速度,它能根據(jù)外部存儲器的速度調(diào)節(jié)讀寫速度,在2~9個指令周期之間變化;它還提供給外部存儲器16位地址總線(P0和P2)。低位地址通過P0口復(fù)用得到,硬件可以控制P0和P2口是作為地址線還是作為通用的I/O。
為了更好地提高效率,外圍設(shè)備也在8051基礎(chǔ)上作了改進(jìn)。如SPI端口就增加了FIFO,使得傳輸數(shù)據(jù)有了緩沖區(qū)間。32位累加器的使用在處理ADC采樣或其它數(shù)據(jù)源來的多字節(jié)數(shù)據(jù)時將大大減輕CPU的負(fù)擔(dān),使得24位加法和移位可以在幾個指令周期內(nèi)完成,而無需通過軟件用數(shù)百個指令周期來完成。
MSC1210系列的硬件和引腳完全兼容,對用戶而言,唯一的區(qū)別在于內(nèi)存配置不同。MSC1210Y2上編寫的程序代碼可以直接在MSC1210Y3、MSC1210Y4、MSC1210Y5上執(zhí)行。用戶可以在軟件功能上增減并配以不同的CPU型號,MSC1210已成為一個擁有幾個不同應(yīng)用平臺的標(biāo)準(zhǔn)設(shè)備。
MSC1210的開發(fā)工具與8051的開發(fā)系統(tǒng)完全兼容,用戶可以使用原有的8051開發(fā)系統(tǒng),也可以使用DEMO板帶的開發(fā)系統(tǒng)或者第三方支持者提供的開發(fā)工具。
2 24位高分辨率ADC通道
?。?)ADC的輸入多路復(fù)用器及輸入緩沖
輸入多路復(fù)用器允許不同輸入信號通過選擇輸入通道進(jìn)行組合,如AIN0被選為ADC輸入正端,其它任何通道可以選為ADC輸入負(fù)端。用這種方式可以組成8個完整的ADC輸入通道,也可以在差分輸入通道間切換極性。片上的二極管可以提供溫度測量,當(dāng)輸入多路復(fù)用器的寄存器置為全“1”時,二極管被接入ADC通道的輸入端開始測量溫度。
MSC1210在沒有緩沖區(qū)時輸入電阻為5M/PGA,緩沖區(qū)由ADC控制寄存器中的BUF位控制。當(dāng)沒有選擇輸入緩沖區(qū)時,模擬輸入阻抗與時鐘頻率(ACLK)和增益(PGA)有關(guān)。
其模擬輸入通道的等效結(jié)構(gòu)如圖3所示。
?。?)可編程增益放大器PGA
?、?PGA:可編程增益放大PGA可以設(shè)為1、2、4、8、16、32、64、128,使用PGA確實能提高ADC的分辨率。當(dāng)PGA=1,量程范圍為5 V時,ADC能分辨到1μV;當(dāng)PGA=128,量程范圍為40 mV時,ADC能分辨到75 nV;而在PGA=1時,在5 V量程范圍內(nèi)需要一個26位的ADC才能分辨到76 nV。
② PGA偏移DAC:ODAC寄存器是8位,它能將輸入到PGA的模擬信號偏移PGA滿量程的一半,其最高位為符號位,低7位提供偏移量。由于ODAC給PGA引入的是模擬量而不是數(shù)字量偏移,所以并不影響測量結(jié)果的精度。
(3)電壓參考基準(zhǔn)
MSC1210的電壓參考可以是內(nèi)部的也可是外部的,上電復(fù)位以后的電壓參考是內(nèi)部的2.5 V,參考電壓的選擇通過ADCON0控制。片上內(nèi)部參考電壓有1.25 V和2.5 V兩種可選,其精度可達(dá)0.2 %,溫漂僅為5×10-6/℃,可大大提高測量精度。如果沒有用到內(nèi)部參考電壓,就應(yīng)該將其關(guān)掉以減少噪聲和功耗。VREFOUT引腳處應(yīng)該放一個0.1μF去耦電容。外部參考電壓為REF IN+與REF IN-之間的差值,引腳上的絕對電壓在AGND與AVDD之間,但其差分電平不能超過2.6 V。
3 片內(nèi)存儲器
MSC1210包括片上1.2 KB SRAM ,256字節(jié)DARAM,2KB啟動ROM,32 KB Flash存儲器。
MSC1210用內(nèi)存尋址表來區(qū)分程序存儲空間和數(shù)據(jù)存儲空間。程序空間由單片機(jī)自動讀取,通過指令MOVC來讀程序空間;數(shù)據(jù)空間通過指令MOVX來讀寫。當(dāng)片上存儲使能時,在片內(nèi)范圍內(nèi)的讀寫將在片內(nèi)存儲器上進(jìn)行,片外存儲器通過P0和P2尋址來實現(xiàn)。HCR1寄存器的第0位和第1位設(shè)為0就可以訪問外部存儲器,此時可以通過P0和P2口訪問所有片內(nèi)和片外存儲空間。為了安全起見,在訪問片內(nèi)存儲器期間,P0口全部置位為0。
MSC1210包含1.2 KB片上SRAM。SRAM起始地址位“0”,通過MOVX指令讀寫。SRAM也可以從8400H開始,既可作程序空間又可作數(shù)據(jù)空間。
MSC1210有256字節(jié)DARAM,地址為0000H~00FFH,其中128字節(jié)為128個SFR,地址為0080H~00FFH。SFR寄存器用做控制和狀態(tài),標(biāo)準(zhǔn)的8051功能和MSC1210的附加功能是通過SFR實現(xiàn)的。從沒有定義的SFR寄存器將得到“0”,寫入沒有定義過的SFR得到的結(jié)果無法確定。DARAM的另一個用途,是通過SFR的堆棧指針作為堆棧使用。
在串行或并行編程時,有2KB啟動ROM控制運行。在用戶模式下,BOOT ROM位于F800H~FFFFH;在編程模式下,BOOT ROM位于程序空間的起始2K。
Flash存儲器既可用做程序存儲空間又可用做數(shù)據(jù)存儲空間,用戶可以靈活配置程序和數(shù)據(jù)存儲空間的大小。分區(qū)大小通過硬件配置位來確定,可以通過串行或并行的方式來編程確定。在用戶應(yīng)用模式下,程序和數(shù)據(jù)Flash存儲空間都可讀可寫。
4 Flash編程應(yīng)用
可編程的Flash存儲器分為4個部分:128字節(jié)的配置部分、復(fù)位向量、程序存儲空間、數(shù)據(jù)存儲空間。
Flash編程模式有串行和并行兩種模式,通過上電復(fù)位過程當(dāng)中的ALE和信號狀態(tài)確定。當(dāng)ALE=1,=0時,選擇串行編程模式;當(dāng)ALE=0,=1時,選擇并行編程模式。當(dāng)ALE和都為高電平時,MSC1210運行在用戶模式下;當(dāng)ALE和都為低電平時,MSC1210沒有定義。
MSC1210的Flash存儲器初始值全部為“1”,并行編程模式包括一個專用的編程器,串行編程方式通常為在線編程,用戶應(yīng)用模式允許對Flash程序和數(shù)據(jù)存儲器編程。對Flash編程的實際代碼不能從Flash執(zhí)行,而必須從BOOT ROM或RAM處開始執(zhí)行。
MSC1210有兩個硬件配置存儲器(HCR0、HCR1),在Flash編程模式下可編程。用戶通過對這兩個存儲器編程可以在程序存儲空間(PM)和數(shù)據(jù)存儲空間(DM)之間定義分區(qū),如表1所列。
表1 MSC1210的Flash分區(qū)
HCR0 | MSC1210Y2 | MSC1210Y3 | MSC1210Y4 | MSC1210Y5 | ||||
DFSEL | PM/KB | DM/KB | PM/KB | DM/KB | PM/KB | DM/KB | PM/KB | DM/KB |
000 | 0 | 4 | 0 | 8 | - | - | - | - |
001 | 0 | 4 | 0 | 8 | - | - | 0 | 32 |
010 | 0 | 4 | 0 | 8 | 0 | 16 | 16 | 16 |
011 | 0 | 4 | 0 | 8 | 8 | 8 | 24 | 8 |
100 | 0 | 4 | 4 | 4 | 12 | 4 | 28 | 4 |
101 | 2 | 2 | 6 | 2 | 14 | 2 | 30 | 2 |
110 | 3 | 1 | 7 | 1 | 15 | 1 | 31 | 1 |
111(缺省) | 4 | 0 | 8 | 0 | 16 | 0 | 32 | 0 |
注:當(dāng)程序空間選擇0KB時,程序在片外執(zhí)行;"一"表示保留。
用戶可以通過MOVX指令來讀寫Flash存儲器,而不論Flash存儲器是被定義為程序存儲器還是數(shù)據(jù)存儲器。這意味著用戶可以將全部空間分為程序存儲空間,并將程序空間當(dāng)數(shù)據(jù)存儲空間用。當(dāng)PC指針指向的程序空間實際上存放的是數(shù)據(jù)時,將會導(dǎo)致不可預(yù)知的后果。因此,當(dāng)要用Flash存儲數(shù)據(jù)時,一定要求使用Flash分區(qū),F(xiàn)lash分區(qū)禁止在數(shù)據(jù)存儲空間執(zhí)行程序。同樣,也禁止程序空間的擦寫而允許在數(shù)據(jù)存儲空間讀寫。
5 結(jié) 論
MSC1210作為一款高性能的內(nèi)核兼容8051的單片機(jī),其開發(fā)的方便、靈活和高精度ADC的使用滿足了使用者的要求,其指令執(zhí)行速度更是實時系統(tǒng)所渴求的,可廣泛用于工業(yè)過程控制、醫(yī)療儀器、智能傳感器等各個領(lǐng)域。
評論