MSC1210是德州儀器公司推出的系統(tǒng)級高精度ADC芯片系列,,內(nèi)置24位低功∑—ΔADC前端信號調(diào)理電路—多路模擬開關,、緩沖器,、PGA、電壓參考,,且集成了高性能8051處理器內(nèi)核,、Flash存儲器和32位累加器、兼容SPI串口等多片上外設,。對于要求何種小,、集成度高、精度高的測量系統(tǒng),MSC1210是理想的選擇,。
MSC1210的系統(tǒng)結構框圖如圖1所示,。
1 MSC1210中高性能8051內(nèi)核介紹
MSC1210系列芯片的所有指令與標準801兼容,相同各標志位,、功能寄存器的功能也是一致的,。但MSC1210在速度上有很大的提高:對于同樣的外部時鐘,指令執(zhí)行速度提高1.5~3倍,,這就使用戶可以使用較低的外部時鐘,,以降低系統(tǒng)的哭聲和功耗。此外,,MSC1210相對8051單片機還新增了一些功能寄存器,,以完成對外設的控制功能。如可編程看門狗定時器,,對系統(tǒng)程序的運行進行監(jiān)控,,確保系統(tǒng)可靠運行。片上具有兩個全雙工的UART,,使得在開發(fā)模式有一個串口被占用的情況下,,仍有一個可留給用戶使用。增加的帶有FIFO的SPI接口和PWM,,為特定應用提供了極大的方便,。
MSC1210還提供了雙數(shù)據(jù)指針,可以加速整塊數(shù)據(jù)的移動,。在訪問外部數(shù)據(jù)存儲器時,,還可以使訪問周期延展2~9個指令周期,以適應不同的外設速度,。32位的累加器也可顯著地減少系統(tǒng)開銷,。它可在幾個指令周期內(nèi)完成24位ADC結果的加法或移位操作,而同樣的操作用軟件完成則需要上百個指令周期,。
MSC1210內(nèi)部的時鐘控制電路可以方便地設置不同的時鐘信號,。其秒、毫秒,、微秒定時中斷寄存器可以為系統(tǒng)定時控制提供方便,,如設置內(nèi)部Flash擦除時間、寫入時間,。MSC1210的所有I/O口都可以通過寄存器,,配置成標準8051(上拉)、CMOS輸出,、漏極開路輸出,、輸入四種方式中的一種。
2 MSC1210中存儲器配置和使用
MSC1210的片內(nèi)存儲器包括:特殊功能豁口(SFR),F(xiàn)lash寄存器,,Scratchpad RAM,Boot Rom和SRAM,。MSC1210內(nèi)置256字節(jié)的片內(nèi)數(shù)據(jù)存儲器和128字節(jié)的SFR,這與8051內(nèi)核單片機是相同的,;唯一的區(qū)別是MSC1210定義了更多的特殊功能寄存器,。MSC1210的位地址空間也與8051相同,內(nèi)部RAM中的20H~2FH以及SFR中以0或8結尾的字節(jié),,都是可位尋址的,。
MSC1210中還有2KB的Boot Rom,用來控制串/并行編程時的操作。當Boot Rom使能時,,其中的程序在用戶模式下是可以訪問的,,這時,它的程序被定位在F800H~FFFFH,;而在編程模式下,,Boot Rom被定位在程序存儲器開始的2KB中。Boot Rom中含有一些調(diào)試編程常用的程序,,如:
void autobaud(void);//設置波特率
char write_flash_chk(int fadd,char fdat,char fdm);//寫Flash并校驗
根據(jù)型號的不同,,MSC1210系列有4KB到32KB的Flash存儲器,。此外,,片內(nèi)還提供1KB的SRAM作為數(shù)據(jù)存儲器。它也是通過MOVX指令訪問的,。SRAM的地址可從0000H或8000H開始,,而Flash數(shù)據(jù)存儲器的地址緊接SRAM。
Flash存儲器作為數(shù)據(jù)存儲器使用前,,首先要對硬件寄存器0(HCR0)的低3位進行設置,,分配數(shù)據(jù)存儲空間的大小。根據(jù)晶振頻率,,設置MSEC和USEC寄存器來提供Flash存儲器的擦除和寫時間,。擦除和寫入可以直接調(diào)用Boot Rom中的程序,編程示意代碼如下:
#include
#include
#include“rom1210.h”
#define PAGESTART 0x0400 //定義進行改寫的頁面
#define PAGESIZE 0x80
char xdata*Pflashpage;定義指向此頁面的指針
char xdata buffer[PAGESIZE];//在XRAM里開辟緩沖區(qū)
int main()
{char result;unsigned char i;
autobaud();//調(diào)用BootRom中子程序,,自動設置波特率,,與計算機通信,返回調(diào)試信息
Pflashpage=(char xdata*)PAGESTART
USEC=12-1;MSEC=12000-1; //以12MHz晶振為例,,設置
………… //毫秒,、微秒寄存器
for(i=0;i
buffer[i]=*Pflashpage++;
buffer[0]+=1; //改變首字節(jié)值以重新寫入
page_erase(PAGESTART,0XFF,DATA_FLASH);//擦除頁面內(nèi)容,BootRom內(nèi)帶程序
result=0;
for(i=0;i
result=result|write_flash_chk(pagestart+i,buffer[i],DATA_FLASH);//將修改后的數(shù)據(jù)寫入,,Boot Rom內(nèi)帶程序
3 高性能24位ADC及其應用
MSC1210內(nèi)帶8路24位模數(shù)轉換器,,自身可實現(xiàn)溫度檢測、輸入源泉開路短路檢測、增益和漂移校準等,。內(nèi)核中的32位累加器可實現(xiàn)24位結果的快速累加計算,。
輸入多路轉換器將切換多路模擬輸入信號到輸入緩沖器。共有9路輸入信號,,其中1路為片內(nèi)溫度傳感器信號,,其余8路每路輸入可設置單極性輸入或差分輸入,通過ADMUX寄存器可隨意配置其輸入信號的正確與負端,。片內(nèi)配置有模擬輸入緩沖,,當使用輸入緩沖時,典型輸入阻抗為10GΩ,;當不使用模擬輸入緩沖時,,輸入阻抗(單位為Ω)由時鐘頻率與增益決定:
PGA的增益可以設置為2 n(n=0~7)。通過PGA的使用,,可以用效提高A/D轉換結果的分辨率,。如輸入信號幅度為40mV,設置PGA=128,,最小分辨率可達75nV,。PGA的模擬輸入可以通過設置ODAC寄存器進行偏置,最大偏置為輸入范圍的一半,。
ADC的轉換結果存儲在ADRESH(高字節(jié)),、ADRESM(中字節(jié))、ADRESL(低字節(jié))中,,配合總和寄存器和移位寄存器,,可以方便地實現(xiàn)多次測量結果的累加和平均??偤图拇嫫魇?個32位的值,,被分為SUMR0(LSB)、SUMR1,、SUMR2,、SUMR3(MSB),可以進行最大256次測量結果的累加和平均,。當然,要得到測量結果的平均值,,應當使累加次數(shù)和平均次數(shù)一致,。通過SSCON寄存器,,可以設置成以下4種工作方式,。
方式0:手動累加,,每次測量完畢,將測量結果寫入總和寄存器,,完成累加。
方式1:ADC自動累加,,根據(jù)SSCON中設置的累加次數(shù),自動將測量結果累加到總和寄存器,。
方式2:手動求平均值,將總和寄存器中的值除以次數(shù),,得到測量結果。
方式3:ADC自動累加后求平均,,根據(jù)SSCON中設置的累加次數(shù),自動完成測量結果的累加后求平均值,。
下面的示意代碼完成ADC高精度測量過程。單次測量結果可以通過直接讀取ADRESH,、ADRESM、ADRESL得到。
//設置ADC
PDCON&=0x0f7; //打開轉換器,,系統(tǒng)時鐘開啟
ACLK=9; //設置ACLK頻率
ADMUX=0x08; //選擇第一通道正極性,,AINCON負極性
ADCON0=0x30;//選擇片內(nèi)參考電壓1.25V,關閉緩沖器,,PGA=1
ADCON1=0x41;//單極性,濾波器自動模式,,自校準
for(i=0;i<4;i++) //四個采樣周期自校準
{while(!(AIE&0X20));
resultl=ADRESL;
resultm=ADRESM;
resulth=ADRESH;}
SSCON=0XDB; //方式3,ADC自動累加后求平均,,采樣16次累加
While(!(AISTAT&0X40));//等待16次采樣結果被累加完成
SMU=(SUMR3〈〈24〉+(SUMR2〈〈16〉+(SUMR1<<8)+SUMR0;
MSC1210可以通過串口對Flash編程,,內(nèi)部Boot Rom中提供了調(diào)試用的相關函數(shù),,避免了購買昂貴的開發(fā)設備,使基于MSC1210的開發(fā)變得非常簡單,。
硬件方面需要在開發(fā)板上加一個RS232轉換芯片,將MSC1210的串口和計算機串口之間連接起來,;同時,設置上電時ALE和PSEN的狀態(tài)來確定其編程/工作方式,。MSC1210有串行和并行兩種編程模式:PSEN=0、ALE=1時,,為串行模式,即在線編程,;PSEN=1、ALE=0時,,為并行模式,要用到第三方的編程器,。當二者皆為高電平時,,為一般用戶模式。一般用戶模式允許對Flash程序存儲器和Flash數(shù)據(jù)存儲器編程,。如復位時檢測到一般模式,則編程模式結束,。
軟件方面,,TI公司提供了TI Downloader插件,,可以直接與Keil配置使用。安裝完成TI download后,,打開Keil,在Tools里面選擇Customize Tools Menu,添加TI Downloader插件,并對其進行配置,,如圖2所示。
在Argument選項中,,可以填入的參數(shù)為[/Ffilename][/Xcrystal freq.][/Poort][/Bbaud reat][/Hhwdconfig][/Tterm]
/Ffile:目標文件(.hex格式),,在Keil環(huán)境中會自動用項目的目標文件代替(必選項)。
/Xfeq:MSC1210晶振頻率(必選),,X11指11.0592MHz。
/Pport:PC串口選擇(必選須),。
/Bbaud:波特率(可選項)。
/H:如果設置該選項,,則硬件寄存器被編程,。
/T:如果設置該選項,下載完成后將弱出調(diào)試終端窗口(可選項),。
硬件配置寄存器(HCR0/HCR1)只能在編程模式下進行改寫。此時,,HCR0的地址為代碼區(qū)807FH,,HCR1的地址為807EH,。通過如下程序進行配置(HCR0,、HCR1各內(nèi)容參見MSC1210 Datasheet):
CSEG AT0807EH ,;代碼區(qū)地址設定
DB 0FCH ,;HCR1的配置內(nèi)容
DB 0FFH ;HCR0的配置內(nèi)容
5 總結
MSC1210以其優(yōu)越的模擬和數(shù)字性能,,可以輕松地構建高精度測量系統(tǒng)。我們以MSC1210為核心,,輔以少量的外圍設備,設計了發(fā)電機轉子繞組接地位置檢測儀,。充分利用了MSC1210的高精度優(yōu)勢,使故障定位的準確度有了很大提高,??梢灶A見,,MSC1210是便攜式高精度測量系統(tǒng)的最佳選擇。
4 MSC1210調(diào)試方式