基于微控制器MSC1210的CSR電源控制系統(tǒng)設(shè)計
關(guān)鍵詞:MSC1210; 模數(shù)轉(zhuǎn)換器; 電源;控制系統(tǒng)
引言
MSC1210美國德州儀器公司(TI)生產(chǎn)的高集成混合信號處理器件。它集成了一個增強型8051內(nèi)核,8路24位高精度Δ-ΣA/D轉(zhuǎn)換,21個中斷源,16位PWM,全雙工UART(并兼容有SPI功能),32K字節(jié)FLASH,片內(nèi)SRAM可達1.2K字節(jié)。MSC1210具有高的模擬和數(shù)字集成度,體積小,測量精度高,應(yīng)用靈活等特點,因而該芯片可廣泛應(yīng)用于工業(yè)控制過程、智能發(fā)射機、智能傳感器等領(lǐng)域。
1 微控制器MSC1210的工作原理
微控制器MSC1210是TI推出的一種集模擬、數(shù)字、閃速存儲器于一體的高性能微控制系統(tǒng)。其應(yīng)用范圍十分廣泛。使用增強的數(shù)字處理內(nèi)核和高速閃存并帶有高性能模擬和外圍部件,可以實現(xiàn)優(yōu)越的系統(tǒng)性能。MSC1210包含閃存、片內(nèi)SFR、SRAM、閃存、暫存和Boot ROM。其存儲器在物理結(jié)構(gòu)上有四個存儲空間:片內(nèi)、片外程序存儲器,片內(nèi)、片外數(shù)據(jù)存儲器。由不同的尋址指令對0000H~FFFFH共64KB的空間進行尋址。由于采用不同的尋址方式,程序段和數(shù)據(jù)段可以重疊。程序存儲器由MCU自動讀取,也可使用指令MOVC指定所要讀取的程序區(qū),這通常用來查找表格。數(shù)據(jù)存儲區(qū)使用指令MOVX進行讀取,這條指令提供了多種尋址方式以指定目的地址,對64KB數(shù)據(jù)存儲器進行讀取。當(dāng)片內(nèi)存儲器使能時,片內(nèi)范圍的操作將對片內(nèi)存儲器進行讀取,片外范圍的操作將通過P0和P2口讀取外部存儲器。用戶可以靈活配置程序和數(shù)據(jù)存儲空間的大小。分區(qū)大小通過硬件配置位來確定,可以通過串行或并行的方式來編程確定。在用戶應(yīng)用模式下,程序和數(shù)據(jù)Flash存儲空間都可讀可寫。
2硬件系統(tǒng)設(shè)計
國家"九五"重大科學(xué)工程HIRFL-CSR(蘭州重離子加速器冷卻儲存環(huán))電源控制系統(tǒng)的主要功能是通過電源與計算機的通信模塊完成與中央控制中心的信息交換,接收遠程控制中心的各種監(jiān)測與遙控命令,并將電源的各種狀態(tài)信息反饋給控制中心。控制系統(tǒng)通信模塊的設(shè)計是組建開關(guān)電源控制系統(tǒng)的關(guān)鍵,所設(shè)計的通信模塊與計算機通信,實現(xiàn)了計算機與電源的主從總線1∶N(本系統(tǒng)N=26)通信方式,并且采用了RS232C和RS485雙串行通信總線標準接口。計算機通過該通信模塊可以實時對電源進行開關(guān)電源控制回路,開關(guān)電源主回路,開關(guān)電源,電源故障復(fù)位,電源極性轉(zhuǎn)換,讀電源當(dāng)前狀態(tài),單讀電源當(dāng)前電流值,多讀電源當(dāng)前電流值,寫電源電流值等指令操作。實時獲取電源好,負載故障,電源冷卻水故障,輸出過流,快熔狀態(tài),IGBT狀態(tài),交流缺相,輸入過壓,輸入過流和電源溫度的狀態(tài)檢驗信息。
3軟件設(shè)計
軟件設(shè)計的開發(fā)平臺是Keil公司的Keil C7.0. 為了實現(xiàn)對微控制器MSC1210Y5進行命令操作,應(yīng)用 C1210語言編寫的CSR電源控制系統(tǒng)的主要程序代碼如下。
void serial_init (void) file://串行口初始化
{
PCON |=0x80;
SCON = 0x52;
TMOD |= 0x20;
file://TH1 = 0xfe;
TH1 = 0xff;
TR1 = 1;
IE=0x80;
ES0 = 1;
CON_TXD=0;
}
void read_cmd(char i_cmd_buf) file://讀命令操作
{
··· ···
}
··· ···
void init_I_O(void) file://初始化I/O口
{
P0DDRL= 0x55; file://P0 是輸出模式
P0DDRH= 0x55;
P2DDRL= 0xff; file://P2 是輸入模式
P2DDRH= 0xff;
P3DDRH= 0x55;
P0=0xff;
P3 |=0xc0;
}
void init_dac_adc(void) file://初始化 DAC 和ADC
{
int decimation=1728;
/* Timer Setup */
CKCON = 0;
USEC= 10;
/* ADC-Vref, SPI and Systimers */
PDCON = 0x1b;
PDCON &= 0x14;
SPICON = 0x06;
SPITCON = 0x28;
ACLK = 9;
/* Set up Aux interrupt */
AIE=0x40;
EAI=1 ;
/* Setup ADC */
PDCON &=0x0f7;
ADMUX=0x78;
ADCON0=0x00;
ADCON2=decimation &0xff;
ADCON3=(decimation >>8)&0x07;
ADCON1=0x41;
AI=CLEAR;
SSCON=0x00;
SSCON=0xDB;
}
void dacout (unsigned int val) file://DAC輸出
{
Sync = SET;
Sync = CLEAR;
SPIDATA = 0;
SPIDATA = (char)(val>>8 & 0x00ff);
SPIDATA = (char)(val & 0x00ff);;
}
serial () interrupt 4 using 2 { file://寄存器組2用于中斷
unsigned char c,i;
if (RI) { // 如果接收器產(chǎn)生中斷
c = SBUF; file://讀數(shù)據(jù)
RI = 0; file://清除中斷請求標志位
if(!(cmd_err==0&&cmd_finish==1&&addr_ok==1)){
switch (c) { file://處理數(shù)據(jù)
··· ···}
ADCcmd_proc() interrupt 6 using 3 file://ADC命令處理
{
unsigned long sum;
sum = ((unsigned long int)SUMR3 << 24)
+ ((unsigned long int)SUMR2 << 16)
+ ((unsigned long int)SUMR1 << 8)
+ (unsigned long int)SUMR0;
adcsum[adcin_p]=(float)(sum*LSB);
adcin_p++;
adcin_p=adcin_p&7;
AI=CLEAR;
SSCON=0x00;
SSCON=0xDB; file://acc shift enable, accum 16x, right shift 4
}
4 結(jié)語
美國TI公司的帶24位A/D轉(zhuǎn)換的51內(nèi)核混合信號處理器MSC1210具有很高的性能、很高的集成度、很大的靈活性。帶可編程增益放大的24位A/D轉(zhuǎn)換器可以實現(xiàn)非常高精度的模數(shù)轉(zhuǎn)換。經(jīng)過幾個月的運行表明,該電源控制系統(tǒng)工作穩(wěn)定,較好地完成了系統(tǒng)的實時監(jiān)控和顯示任務(wù)。
參考文獻
[1]聶麗斌,余愛民.帶有8051和閃存的高性能ADC芯片 MSC1210[J].國外電子元器件,2002,(11):36~38.
[2]魏小龍,等.帶24位A/D轉(zhuǎn)換的51單片機MSC1210及其應(yīng)用[J].電子產(chǎn)品世界,2003(2):45~47.
[3]朱海君,敬嵐. 微控制器及其在控制系統(tǒng)中的應(yīng)用[J].電子元器件應(yīng)用,2004(1):39~42.
[4]朱海君,敬嵐,陸軍. 基于MSC1210單片機的串口通訊設(shè)計[J].微計算機信息,2004,(4):48~36.
[5]敬嵐,朱海君,張碩成,等.加速器控制系統(tǒng)中的32路數(shù)字I/O模塊設(shè)計[J].
電氣自動化,2003,25(Z06):59~60.