摘 要: 針對(duì)弧光保護(hù)系統(tǒng)的實(shí)際需要,設(shè)計(jì)了一種基于SPI的雙機(jī)通信系統(tǒng)。簡(jiǎn)要闡述了該系統(tǒng)的設(shè)計(jì)思路,并給出了具體的實(shí)現(xiàn)方法。實(shí)驗(yàn)表明,采用該方法能夠滿足實(shí)際工程中的需求,對(duì)于其他SPI的應(yīng)用也有很好的借鑒價(jià)值。
關(guān)鍵詞: 弧光保護(hù);SPI;LPC1788;協(xié)議
0 引言
在一些重要的用戶變電站和發(fā)電廠的廠用電系統(tǒng)中[1],弧光短路是中、低壓開(kāi)關(guān)柜內(nèi)部最嚴(yán)重的故障,由于電弧電阻的原因,短路電流往往達(dá)不到速斷整定值而不能快速動(dòng)作切斷故障,造成嚴(yán)重的后果。據(jù)統(tǒng)計(jì)資料表明,近年來(lái),每年每1 000臺(tái)開(kāi)關(guān)柜就有7臺(tái)遭到損壞,故障率為0.7%,農(nóng)村配電網(wǎng)的概率更高,達(dá)1.2%。有的甚至發(fā)展成“火燒連營(yíng)”的事故,這些配電網(wǎng)事故處理不當(dāng)甚至?xí)U(kuò)大發(fā)展為輸電網(wǎng)事故,造成重大的經(jīng)濟(jì)損失。2010年,云南電網(wǎng)下發(fā)了《關(guān)于在中低壓開(kāi)關(guān)柜加裝電弧光保護(hù)的通知》,要求在所有的35 kV和10 kV開(kāi)關(guān)柜中加裝電弧光保護(hù),目前南方電網(wǎng)已在逐漸推廣。
中國(guó)能源建設(shè)集團(tuán)華東電力設(shè)備制造廠研制的ZHG-1A型智能弧光保護(hù)系統(tǒng)采用紫外光弧光檢測(cè)和過(guò)電流檢測(cè)雙判據(jù)原理,具有保護(hù)動(dòng)作速度快、可靠性高等特點(diǎn)。它是一個(gè)模塊化系統(tǒng),包括主控單元、電流單元、弧光單元,系統(tǒng)構(gòu)成示意圖如圖1所示。
1 弧光保護(hù)系統(tǒng)主控系統(tǒng)通信結(jié)構(gòu)原理與設(shè)計(jì)
主控單元是電弧光保護(hù)系統(tǒng)的核心部件,負(fù)責(zé)輸入量的采集、測(cè)量、計(jì)算及邏輯判斷,實(shí)現(xiàn)系統(tǒng)的各項(xiàng)保護(hù)邏輯、與站內(nèi)監(jiān)控系統(tǒng)通信等功能。主控系統(tǒng)采用DSP+雙ARM結(jié)構(gòu),其中一塊ARM(A片)采用NXP公司的LPC178x芯片負(fù)責(zé)與站內(nèi)系統(tǒng)通信,另一塊ARM(B片)同樣采用LPC178x芯片負(fù)責(zé)液晶顯示與DSP通信。在與站內(nèi)監(jiān)控系統(tǒng)通信時(shí),A片ARM要把相關(guān)數(shù)據(jù)通過(guò)B片ARM傳遞給DSP,為此兩塊ARM之間要進(jìn)行通信。主控系統(tǒng)通信結(jié)構(gòu)如圖2所示。
2 SPI通信設(shè)計(jì)與實(shí)現(xiàn)
2.1 SPI硬件實(shí)現(xiàn)
LPC178x/177x系列的SSP是一個(gè)同步串行端口(SSP)控制器[2],可控制SPI、4線SSI或Microwire總線的操作。SSP可以與總線上的多個(gè)主機(jī)或從機(jī)交互。但在一次給定的數(shù)據(jù)傳輸過(guò)程中,總線上只能有一個(gè)主機(jī)與一個(gè)從機(jī)進(jìn)行通信。數(shù)據(jù)傳輸原則上是全雙工模式,4~16位數(shù)據(jù)的幀由主機(jī)發(fā)送到從機(jī)或由從機(jī)發(fā)送到主機(jī)。SSP控制器共用以下4個(gè)管腳:
?。?)SCK:串行時(shí)鐘管腳,用來(lái)同步數(shù)據(jù)傳輸?shù)臅r(shí)鐘信號(hào)。它由主機(jī)驅(qū)動(dòng),從機(jī)接收。無(wú)論主機(jī)往從機(jī)寫數(shù)據(jù)還是從從機(jī)讀數(shù)據(jù),它的時(shí)鐘信號(hào)都是由主機(jī)的SCK管腳產(chǎn)生,從機(jī)不產(chǎn)生時(shí)鐘信號(hào)。
?。?)SSEL:幀同步/從機(jī)選擇管腳,當(dāng)作主機(jī)時(shí)此管腳可作為普通的I/O使用;當(dāng)作從機(jī)時(shí)此管腳不可用作普通I/O口,只作為SSP的從機(jī)選擇。主機(jī)其他的普通I/O管腳也可與從機(jī)的SSEL管腳相連,用作從機(jī)的片選。
?。?)MISO:主機(jī)輸入從機(jī)輸出。MISO信號(hào)使串行數(shù)據(jù)從從機(jī)傳輸?shù)街鳈C(jī)。
(4)MOSI:MOSI信號(hào)使串行數(shù)據(jù)從主機(jī)傳輸?shù)綇臋C(jī)。
另外,本系統(tǒng)在兩片ARM之間預(yù)留了兩根聯(lián)絡(luò)線,以便通信不穩(wěn)定時(shí)便于調(diào)整。
2.2 SPI軟件實(shí)現(xiàn)
在雙機(jī)通信過(guò)程中,主機(jī)發(fā)送采用查詢方式,從機(jī)接收采用中斷方式。主機(jī)發(fā)送數(shù)據(jù)的同時(shí)也在接收數(shù)據(jù),從機(jī)接收數(shù)據(jù)的同時(shí)也在發(fā)送數(shù)據(jù)。通過(guò)配置SSP寄存器,選擇SPI模式、設(shè)置數(shù)據(jù)長(zhǎng)度和通信速率。由于設(shè)置從機(jī)接收到第4個(gè)數(shù)據(jù)時(shí)FIFO產(chǎn)生一次接收中斷,因此,主機(jī)每次發(fā)送一組40個(gè)數(shù)據(jù),從機(jī)只取前37個(gè)數(shù)據(jù)為有效數(shù)據(jù),后3個(gè)數(shù)據(jù)接收但作為假數(shù)據(jù)不用;主機(jī)接收的前4個(gè)數(shù)據(jù)也為假數(shù)據(jù)不用,后36個(gè)數(shù)據(jù)為有效數(shù)據(jù)。當(dāng)一組數(shù)據(jù)接收完成時(shí),調(diào)用數(shù)據(jù)處理函數(shù)進(jìn)行處理。主機(jī)SPI流程圖如圖3所示。
在SPI通信中,主機(jī)向從機(jī)發(fā)送數(shù)據(jù),如何判斷數(shù)據(jù)發(fā)送正確及接收完成SPI協(xié)議本身并未提供任何規(guī)范。在設(shè)計(jì)中,固定數(shù)據(jù)發(fā)送的個(gè)數(shù),定義表1所示的SPI數(shù)據(jù)幀結(jié)構(gòu),可以很好地解決這個(gè)問(wèn)題[3]。
表1中,起始字節(jié)表明一幀傳輸?shù)拈_(kāi)始,這里定義為0XFF;標(biāo)志字節(jié)表明此次傳輸?shù)臄?shù)據(jù)類型,根據(jù)特定的應(yīng)用類型作具體的規(guī)定;數(shù)據(jù)長(zhǎng)度表明此次傳輸?shù)臄?shù)據(jù)長(zhǎng)度,用字節(jié)數(shù)表示;應(yīng)用服務(wù)數(shù)據(jù)為所要傳輸?shù)木唧w應(yīng)用數(shù)據(jù)。
當(dāng)所有數(shù)據(jù)接收完成時(shí),根據(jù)SPI軟件協(xié)議,標(biāo)志字節(jié)為0XAA表明此組數(shù)據(jù)為偽數(shù)據(jù),可以不作處理,直接丟棄。當(dāng)起始字節(jié)不是0XFF時(shí),即表示此組數(shù)據(jù)接收數(shù)據(jù)有誤。在通信中,主機(jī)每隔一段時(shí)間向從機(jī)發(fā)送數(shù)據(jù),從機(jī)根據(jù)標(biāo)志字節(jié)判定是控制命令還是運(yùn)行狀態(tài)數(shù)據(jù)[4]。當(dāng)從機(jī)接收的是控制命令時(shí),從機(jī)等待主機(jī)下一幀數(shù)據(jù)發(fā)送的同時(shí),把相應(yīng)的數(shù)據(jù)發(fā)給主機(jī)。
下面給出從機(jī)的SSP1口初始化和SSP1的收發(fā)函數(shù)代碼。
?。?)SSP1口初始化代碼
void Slave_SSP1Init(void)
{uint8_t i;
uint8_t uiDummy=uiDummy=0;
LPC_SC->PCONP|=(0x1<<10);
LPC_IOCON->P0_7 &=~0x07;//SSP CLK
LPC_IOCON->P0_7|=0x02;
LPC_IOCON->P0_6&=~0x07;
LPC_IOCON->P0_6|=0x02;
LPC_IOCON->P0_8&=~0x07;
LPC_IOCON->P0_8|=0x02;//SSP MISO
LPC_IOCON->P0_9&=~0x07;
LPC_IOCON->P0_9|=0x02;//SSP MOSI
LPC_SSP1->CR0=0x07<<0|//數(shù)據(jù)長(zhǎng)度為8位
0x00<<4|//幀格式為SPI
0x00<<6|//CPOL為0
0x01<<7|//CPHA為1
0x1D<<8;
LPC_SSP1->CPSR=0x2;//時(shí)鐘預(yù)分頻
for(i=0;i<8;i++)
{//清0接收FIFO
uiDummy=LPC_SSP1->DR;
}
//從機(jī)模式
if(LPC_SSP1->CR1&SSPCR1_SSE)
{LPC_SSP1->CR1&=~SSPCR1_SSE;}
LPC_SSP1->CR1=SSPCR1_MS;
LPC_SSP1->CR1|=SSPCR1_SSE;
LPC_SSP1->IMSC=0x04;
NVIC_EnableIRQ(SSP1_IRQn);
NVIC_SetPriority(SSP1_IRQn,4);
return;
}
?。?)SSP1收發(fā)函數(shù)代碼
uint8_t SSP1RWFrames(Chip_SSP_DATA_SETUP_T *xf_setup)
{
uint8_t rdat;
uint8_t i,uiDummy;
LPC_SSP1->ICR=0x03;while((LPC_SSP1->SR&(SSPSR_RNE))!=SSPSR_RNE);*(xf_setup->rx_data+xf_setup->rx_cnt)=
LPC_SSP1->DR;
xf_setup->rx_cnt++;
while((LPC_SSP1->SR&(SSPSR_TNF|SSPSR_BSY))!=SSPSR_TNF);LPC_SSP1->DR=*(xf_setup->tx_data+xf_setup->tx_cnt);
xf_setup->tx_cnt++;
…
}
3 結(jié)論
本設(shè)計(jì)中,兩個(gè)ARM的主頻都為100 MHz,使用公共外設(shè)PCLK時(shí)鐘,通過(guò)SSP時(shí)鐘分頻器產(chǎn)生SPCLK時(shí)鐘。在實(shí)驗(yàn)中也考慮過(guò)其他方案,由于SPI的接收中斷處理方式且又要實(shí)現(xiàn)主從機(jī)收發(fā)同時(shí),發(fā)現(xiàn)本方案可行。目前測(cè)試結(jié)果表明,SPI能很好地滿足它們之間高速的雙向數(shù)據(jù)傳輸要求,其最高傳輸速率可達(dá)5 Mb/s,解決了實(shí)際應(yīng)用中的雙機(jī)如何可靠通信等問(wèn)題,已成功應(yīng)用于弧光保護(hù)系統(tǒng),也可用于其他需要雙機(jī)通信的場(chǎng)合。
參考文獻(xiàn)
[1] 李從飛,陳凡,魯雅斌,等.DPR360ARC弧光保護(hù)系統(tǒng)設(shè)計(jì)[J].電力系統(tǒng)保護(hù)與控制,2010,38(12):125-128.
[2] NXP.LPC178x/7x用戶手冊(cè)[EB/OL].[2011-07-06].http://www.cn.nxp.com/documents/other/LPC177x-178x_UM_Simp CHN.pdf.
[3] 王杰,王小鵬,趙國(guó)輝.采用SPI接口實(shí)現(xiàn)雙DSP雙向通信和同步[J].微型機(jī)與應(yīng)用,2010,29(24):96-98.
[4] 高振,羅秋鳳.SPI接口與CRC算法在雙DSP數(shù)據(jù)通信中的應(yīng)用[J].電子產(chǎn)品世界,2011,18(1):46-49.