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