摘 要:本文介紹了德州儀器公司新一代16位Flash型MSP430F149系列單片機(jī)的結(jié)構(gòu)、特性和功能,闡述了基于該單片機(jī)控制系統(tǒng)的硬件組成和軟件設(shè)計(jì),并給出了該控制器在SDRAM控制系統(tǒng)中的應(yīng)用,具有功耗低、功能齊全、人機(jī)界面友好等優(yōu)點(diǎn)。
1 引言 MSP430系列微控制器是美國(guó)德州儀器(Texas Instruments)公司推出的功能強(qiáng)大的超低功耗Flash型16位RISC指令集微處理器。在運(yùn)算速度方面,MSP430系列單片機(jī)能在8MHz晶體的驅(qū)動(dòng)下,實(shí)現(xiàn)125ns的指令周期。16位數(shù)據(jù)寬度、125ns的指令周期以及多功能的硬件乘法器(能實(shí)現(xiàn)乘加)相配合,能實(shí)現(xiàn)數(shù)字信號(hào)處理的一些算法(如FFT等)。MSP430具有非常高的集成度,單片集成了多通道12bit的A/D轉(zhuǎn)換、片內(nèi)精密比較器、多個(gè)具有PWM功能的定時(shí)器、斜邊A/D轉(zhuǎn)換、片內(nèi)USART、看門狗定時(shí)器、片內(nèi)數(shù)控振蕩器(DCO)、大量的I/O端口以及大容量的片內(nèi)存儲(chǔ)器,單片可以滿足絕大多數(shù)的應(yīng)用需要。
SDRAM控制系統(tǒng)采用MSP430F149單片機(jī)。該單片機(jī)具有強(qiáng)大的處理能力、豐富的片上外圍模塊和方便高效的開(kāi)發(fā)方式, 是MSP430系列中功能最強(qiáng)大的一款。MSP430F149采用馮--紐曼結(jié)構(gòu),RAM、ROM和全部外圍模塊都位于同一個(gè)地址空間內(nèi), 具有一個(gè)硬件乘法器、6個(gè)I/O端口(每個(gè)有8個(gè)I/O口)、1個(gè)精確的模擬比較器、2個(gè)具有捕捉/比較寄存器的定時(shí)器、8路12位A/D轉(zhuǎn)換器、片內(nèi)看門狗定時(shí)器、2個(gè)串行通信接口和60KB的FlashROM,2KB RAM。MSP430F149還具有強(qiáng)大的擴(kuò)展功能,其具有48個(gè)I/O引腳,每個(gè)I/O口分別對(duì)應(yīng)輸入、輸出、功能選擇、中斷等多個(gè)寄存器,使得功能口和通用I/O口可以復(fù)用,大大增強(qiáng)了端口功能和靈活性,十分適合開(kāi)發(fā)的要求,所以選用其作為SDRAM系統(tǒng)的控制主芯片。
2 硬件系統(tǒng)組成
國(guó)家重大科學(xué)工程HIRFL-CSR(蘭州重離子加速器冷卻存儲(chǔ)環(huán))的控制系統(tǒng)由兩部分構(gòu)成:總體控制和前端控制服務(wù)器?傮w控制包括網(wǎng)絡(luò)通信支持系統(tǒng)、集群服務(wù)系統(tǒng)、數(shù)據(jù)庫(kù)系統(tǒng)。前端控制服務(wù)器用來(lái)提供對(duì)受控目標(biāo)和裝置的完全控制,它們可以接收命令和數(shù)據(jù),運(yùn)行算法,向設(shè)備送出控制信號(hào),返回設(shè)備的狀態(tài)和數(shù)據(jù),提供人機(jī)界面等。按照現(xiàn)場(chǎng)要求執(zhí)行開(kāi)環(huán)或閉環(huán)控制,從而完成對(duì)CSR電源系統(tǒng),注入引出系統(tǒng),內(nèi)靶系統(tǒng),真空系統(tǒng),溫度測(cè)控系統(tǒng), 電子冷卻系統(tǒng)等各個(gè)分系統(tǒng)的監(jiān)視測(cè)量,故障報(bào)警,操作和控制。
基于MSP430F149單片機(jī)的SDRAM控制系統(tǒng)包括:PC機(jī)、微控制器、CPLD、FPGA、SDRAM。數(shù)據(jù)通過(guò)PC傳送給微控制器MSP430F149,單片機(jī)收集到數(shù)據(jù)以后,經(jīng)過(guò)一定的算法發(fā)送適當(dāng)?shù)拿罱o雙向數(shù)據(jù)轉(zhuǎn)換器和SDRAM控制器,從而完成對(duì)SDRAM數(shù)據(jù)的讀寫和刷新等控制操作。
3軟件設(shè)計(jì)
MSP430的內(nèi)核結(jié)構(gòu)采用具有高透明格式的精簡(jiǎn)指令集(RISC)設(shè)計(jì)。指令分為硬件實(shí)現(xiàn)的內(nèi)核指令和利用這一硬件結(jié)構(gòu)的具有更高效率的模擬指令,使用起來(lái)非常方便。在本控制系統(tǒng)中,單片機(jī)完成初始化任務(wù)(設(shè)置標(biāo)志位、看門狗的工作方式)后,就進(jìn)入低功耗睡眠狀態(tài)。中斷將其喚醒,轉(zhuǎn)而進(jìn)入相應(yīng)的子程序;贛SP430F149單片機(jī)的SDRAM控制程序如下。
#include <msp430x14x.h>
void Init(void);
void Send(char* Data, unsigned int Length);
void SendAddress(unsigned int Address);
void SendData(unsigned int Data);
unsigned int ReceiveData(void);
char ReadData[20], Buffer[20];
unsigned char i=0, j, k, flag=0;
unsigned int Data;
unsigned int DisplayData;
char DisplayString[20];
void main(void)
{
WDTCTL = WDTPW + WDTHOLD; // Stop WDT
Init(); // UART1 inition
_EINT(); // enable interrupt
while(1) { DisplayData = ReceiveData();
if (DisplayData == 0) { k = 0; if (DisplayData != 0) { DisplayString[k] = 0 + DisplayData % 10;
DisplayData = DisplayData / 10;
k++; }
Send(DisplayString, k);
}
}
}
void Init(void) {
UCTL1 &= ~SWRST; // reset swrst and usart1 enable UCTL1 = 0x10; // 8-bit character UBR01 = 0x03; // 8MHz 38400 UBR11 = 0x00; // 8MHz 38400
UMCTL1 = 0x4A; // U1CLK = SMCLK=TX2 UTCTL1 = 0x10;
ME2 |= 0x30; // Enable USART1 TXD/RXD
P3SEL= 0xC0; // enable P3.6,7 USART1 TXD/RXD
P3DIR= 0x40; // P3.6 output direction
IE2 |= URXIE1; // Enable USART1 RX interrupt
}
interrupt [UART1RX_VECTOR] void UART1RX(void) // read data { if (flag == 0) // wait for strat char of 0xAA or 0xDD {
if (RXBUF1 == 0xAA) // alter flag { flag = 1; }
else if (RXBUF1 == 0xDD) // alter flag { flag = 2; }
i = 0;
}
else { ReadData = RXBUF1; if (ReadData[i++] == 0xFF) // end char of 0xFF { Data = 0; for (j=i-1; j!=0; j--) {
Data = Data * 10 + (ReadData[j] - 0);
}
if (flag == 1) // send address { SendAddress(Data); }
else if (flag == 2) // send data { SendData(Data); }
flag = 0; }
}
}
void Send(char* Data, unsigned int Length) // send data { unsigned int i; UCTL1 |= TXWAKE; TXBUF1 = 0x01; while ((UTCTL1&0x01) == 0);
UCTL1 &= ~TXWAKE;
for(i=0; i<=Length; i++) { TXBUF1 = Data; while ((UTCTL1&0x01) == 0); }
}
void SendAddress(unsigned int Address) // send address { // address buses P1DIR |= 0xE0; // P1.5-1.7 address buses
P2DIR = 0xFF; // P2.0-2.7 address buses
P3DIR |= 0x1F; // P3.0-3.5 address buses
P4DIR |= 0x1F; // P4.0-4.5 address buses
P1OUT |= (Address & 0x07);
P2OUT |= (Address & 0x7F8) >> 3;
P3OUT |= (Address & 0x1F800) >> 11;
P4OUT |= (Address & 0x7E0000) >> 17; }
void SendData(unsigned int Data) // send data { // data buses P4DIR |= 0xC0; // P4.6-4.7 data buses P5DIR |= 0x1F; // P5.0-5.5 data buses P4OUT |= (Data & 0x03); P5OUT |= (Data & 0xFC) >> 2; }
unsigned int ReceiveData(void) // send data { unsigned int Data; // data buses
P4DIR &= 0x3F; // P4.6-4.7 data buses
P5DIR &= 0xE0; // P5.0-5.5 data buses
Data = ((P5IN & 0x1F) << 2) | ((P4IN & 0xC0) >> 6); return Data; }
4 結(jié)語(yǔ)
MSP430F149是一種新型的混合信號(hào)處理器,采用了美國(guó)德州儀器(Texas Instruments)公司最新低功耗技術(shù)(工作電流為0.1~400uA)。該系列將大量的外圍模塊整合到片內(nèi),特別適合于開(kāi)發(fā)和設(shè)計(jì)單片系統(tǒng)。基于MSP430F149單片機(jī)的SDRAM控制系統(tǒng),具有較強(qiáng)的通用性和擴(kuò)展性,滿足了高速數(shù)據(jù)采集和處理的實(shí)時(shí)要求。
基金項(xiàng)目:HIRFL-CSR國(guó)家實(shí)驗(yàn)室國(guó)家“九五”重大科學(xué)工程項(xiàng)目
參考文獻(xiàn) [1] 敬嵐,朱海君,梁義海,等.基于AT89C51的云臺(tái)鏡頭監(jiān)控系統(tǒng)設(shè)計(jì)及其應(yīng)用[J].電氣自動(dòng)化,2003,25(Z06): 29~30. [2] 敬嵐,朱海君,張碩成,等.加速器控制系統(tǒng)中的32路數(shù)字I/O模塊設(shè)計(jì)[J].電氣自動(dòng)化,2003,25(Z06):59~60. [3] 敬嵐,朱海君,張碩成,等.基于MSP430F149單片機(jī)的步進(jìn)電機(jī)控制系統(tǒng)設(shè)計(jì)[J].電氣自動(dòng)化,2003,25(Z06):125~126. [4] 朱海君,敬嵐. 微控制器及其在控制系統(tǒng)中的應(yīng)用[J].電子元器件應(yīng)用,2004(1):39~42. [5] 朱海君,劉彩虹,敬嵐.智能控制芯片HD7279A及其應(yīng)用設(shè)計(jì)[J].中國(guó)儀器儀表,2004,(3):36~37. [6] 朱海君,敬嵐,陸軍. 基于MSC1210單片機(jī)的串口通訊設(shè)計(jì)[J].微計(jì)算機(jī)信息,2004,(4): 48~36. [7] 朱海君,敬 嵐,喬衛(wèi)民.SDRAM控制器的設(shè)計(jì)及其在CSR控制系統(tǒng)中的應(yīng)用[J].電氣自動(dòng)化,2004,26(Z04):43~44.
|
|