1 引言 MSC1210美國德州儀器公司(TI)生產(chǎn)的高集成混合信號(hào)處理器件。它集成了一個(gè)增強(qiáng)型8051內(nèi)核,8路24位高精度Δ-ΣA/D轉(zhuǎn)換,21個(gè)中斷源,16位PWM,全雙工UART(并兼容有SPI功能),32K字節(jié)FLASH,片內(nèi)SRAM可達(dá)1.2K字節(jié)。MSC1210具有高的模擬和數(shù)字集成度,體積小,測(cè)量精度高,應(yīng)用靈活等特點(diǎn),因而該芯片可廣泛應(yīng)用于工業(yè)控制過程、智能發(fā)射機(jī)、智能傳感器等領(lǐng)域。 2 微控制器MSC1210的工作原理 微控制器MSC1210是TI推出的一種集模擬、數(shù)字、閃速存儲(chǔ)器于一體的高性能微控制系統(tǒng)。其應(yīng)用范圍十分廣泛。使用增強(qiáng)的數(shù)字處理內(nèi)核和高速閃存并帶有高性能模擬和外圍部件,可以實(shí)現(xiàn)優(yōu)越的系統(tǒng)性能。MSC1210包含閃存、片內(nèi)SFR、SRAM、閃存、暫存和Boot ROM。其存儲(chǔ)器在物理結(jié)構(gòu)上有四個(gè)存儲(chǔ)空間:片內(nèi)、片外程序存儲(chǔ)器,片內(nèi)、片外數(shù)據(jù)存儲(chǔ)器。由不同的尋址指令對(duì)0000H~FFFFH共64KB的空間進(jìn)行尋址。 由于采用不同的尋址方式,程序段和數(shù)據(jù)段可以重疊。程序存儲(chǔ)器由MCU自動(dòng)讀取,也可使用指令MOVC指定所要讀取的程序區(qū),這通常用來查找表格。數(shù)據(jù)存儲(chǔ)區(qū)使用指令MOVX進(jìn)行讀取,這條指令提供了多種尋址方式以指定目的地址,對(duì)64KB數(shù)據(jù)存儲(chǔ)器進(jìn)行讀取。當(dāng)片內(nèi)存儲(chǔ)器使能時(shí),片內(nèi)范圍的操作將對(duì)片內(nèi)存儲(chǔ)器進(jìn)行讀取,片外范圍的操作將通過P0和P2口讀取外部存儲(chǔ)器。用戶可以靈活配置程序和數(shù)據(jù)存儲(chǔ)空間的大小。分區(qū)大小通過硬件配置位來確定,可以通過串行或并行的方式來編程確定。在用戶應(yīng)用模式下,程序和數(shù)據(jù)Flash存儲(chǔ)空間都可讀可寫。 3 硬件系統(tǒng)設(shè)計(jì) 國家"九五"重大科學(xué)工程HIRFL-CSR(蘭州重離子加速器冷卻儲(chǔ)存環(huán))電源控制系統(tǒng)的主要功能是通過電源與計(jì)算機(jī)的通信模塊完成與中央控制中心的信息交換,接收遠(yuǎn)程控制中心的各種監(jiān)測(cè)與遙控命令,并將電源的各種狀態(tài)信息反饋給控制中心。控制系統(tǒng)通信模塊的設(shè)計(jì)是組建開關(guān)電源控制系統(tǒng)的關(guān)鍵,所設(shè)計(jì)的通信模塊與計(jì)算機(jī)通信,實(shí)現(xiàn)了計(jì)算機(jī)與電源的主從總線1∶N(本系統(tǒng)N=26)通信方式,并且采用了RS232C和RS485雙串行通信總線標(biāo)準(zhǔn)接口。計(jì)算機(jī)通過該通信模塊可以實(shí)時(shí)對(duì)電源進(jìn)行開關(guān)電源控制回路,開關(guān)電源主回路,開關(guān)電源,電源故障復(fù)位,電源極性轉(zhuǎn)換,讀電源當(dāng)前狀態(tài),單讀電源當(dāng)前電流值,多讀電源當(dāng)前電流值,寫電源電流值等指令操作。實(shí)時(shí)獲取電源好,負(fù)載故障,電源冷卻水故障,輸出過流,快熔狀態(tài),IGBT狀態(tài),交流缺相,輸入過壓,輸入過流和電源溫度的狀態(tài)檢驗(yàn)信息。 4 軟件設(shè)計(jì) 軟件設(shè)計(jì)的開發(fā)平臺(tái)是Keil公司的Keil C7.0. 為了實(shí)現(xiàn)對(duì)微控制器MSC1210Y5進(jìn)行命令操作,應(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://清除中斷請(qǐng)求標(biāo)志位 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 } 5 結(jié)語 美國TI公司的帶24位A/D轉(zhuǎn)換的51內(nèi)核混合信號(hào)處理器MSC1210具有很高的性能、很高的集成度、很大的靈活性。帶可編程增益放大的24位A/D轉(zhuǎn)換器可以實(shí)現(xiàn)非常高精度的模數(shù)轉(zhuǎn)換。經(jīng)過幾個(gè)月的運(yùn)行表明,該電源控制系統(tǒng)工作穩(wěn)定,較好地完成了系統(tǒng)的實(shí)時(shí)監(jiān)控和顯示任務(wù)。 |