一種CSR電源控制系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
引言
實(shí)際應(yīng)用系統(tǒng)往往需要進(jìn)行高精度的測(cè)量,同時(shí)還必須進(jìn)行實(shí)時(shí)快速控制,提高其開(kāi)發(fā)效率。為此人們常采用高精度A/D芯片加帶ISP開(kāi)發(fā)功能的單片機(jī)系統(tǒng)來(lái)實(shí)現(xiàn)。德州儀器(TI)的MSC1210單片機(jī)解決了上述問(wèn)題。它集成了一個(gè)增強(qiáng)型8051內(nèi)核、高達(dá)33 MHz的時(shí)鐘周期、8路24位高精度∑-△A/D轉(zhuǎn)換器、Flash存儲(chǔ)器等。
1 微控制器MSC1210的工作原理
微控制器是將微型計(jì)算機(jī)的主要部分集成在一個(gè)芯片上的單芯片微型計(jì)算機(jī)。微控制器誕生于20世紀(jì)70年代中期,經(jīng)過(guò)20多年的發(fā)展,其成本越來(lái)越低,而性能越來(lái)越強(qiáng)大,這使其應(yīng)用已經(jīng)無(wú)處不在,遍及各個(gè)領(lǐng)域。例如電機(jī)控制、條碼閱讀器/掃描器、消費(fèi)類電子、游戲設(shè)備、電話、HVAC、樓宇安全與門(mén)禁控制、工業(yè)控制與自動(dòng)化和白色家電(洗衣機(jī)、微波爐)等。微控制器(Microcontroller Unit,即MCU)可從不同方面進(jìn)行分類:根據(jù)數(shù)據(jù)總線寬度可分為8位、16位和32位機(jī);根據(jù)存儲(chǔ)器結(jié)構(gòu)可分為Harvard結(jié)構(gòu)和Von Neumann結(jié)構(gòu);根據(jù)內(nèi)嵌程序存儲(chǔ)器的類別可分為OTP、掩膜、EPROM/EEPROM和閃存Flash;根據(jù)指令結(jié)構(gòu)又可分為CISC(Complex Instruction Set Computer)和RISC(Reduced Instruction Set Computer)微控制器。
微控制器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ū),這通常用來(lái)查找表格。數(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)行讀取,片外范圍的操作將通過(guò)P0和P2口讀取外部存儲(chǔ)器。
MSC1210提供了雙數(shù)據(jù)指針(DPTR)加速數(shù)據(jù)塊的移動(dòng)速度,它能根據(jù)外部存儲(chǔ)器的速度調(diào)節(jié)讀寫(xiě)速度,在2~9個(gè)指令周期之間變化;它還提供給外部存儲(chǔ)器16位地址總線(P0和P2)。低位地址通過(guò)P0口復(fù)用得到,硬件可以控制P0和P2口是作為地址線還是作為通用的I/O.為了更好地提高效率,外圍設(shè)備也在8051基礎(chǔ)上作了改進(jìn)。如SPI端口就增加了FIFO,使得傳輸數(shù)據(jù)有了緩沖區(qū)間。32位累加器的使用在處理ADC采樣或其它數(shù)據(jù)源來(lái)的多字節(jié)數(shù)據(jù)時(shí)將大大減輕CPU的負(fù)擔(dān),使得24位加法和移位可以在幾個(gè)指令周期內(nèi)完成,而無(wú)需通過(guò)軟件用數(shù)百個(gè)指令周期來(lái)完成。
2硬件系統(tǒng)設(shè)計(jì)
國(guó)家"九五"重大科學(xué)工程HIRFL-CSR(蘭州重離子加速器冷卻儲(chǔ)存環(huán))電源控制系統(tǒng)的主要功能是通過(guò)電源與計(jì)算機(jī)的通信模塊完成與中央控制中心的信息交換,接收遠(yuǎn)程控制中心的各種監(jiān)測(cè)與遙控命令,并將電源的各種狀態(tài)信息反饋給控制中心??刂葡到y(tǒng)通信模塊的設(shè)計(jì)是組建開(kāi)關(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)接口。
3軟件設(shè)計(jì)
軟件設(shè)計(jì)的開(kāi)發(fā)平臺(tái)是Keil公司的Keil C7.0. 為了實(shí)現(xiàn)對(duì)微控制器MSC1210Y5進(jìn)行命令操作,應(yīng)用 C1210語(yǔ)言編寫(xiě)的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 */[!--empirenews.page--]
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
}
4 結(jié)語(yǔ)
美國(guó)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)過(guò)幾個(gè)月的運(yùn)行表明,該電源控制系統(tǒng)工作穩(wěn)定,較好地完成了系統(tǒng)的實(shí)時(shí)監(jiān)控和顯示任務(wù)。