国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

一種改進(jìn)型SPI高可靠通信機(jī)制設(shè)計(jì)*

2014-08-12 08:46:15韋小剛
關(guān)鍵詞:重傳字節(jié)校驗(yàn)

韋小剛

(1. 國網(wǎng)電力科學(xué)研究院 南京 210003;2. 南瑞集團(tuán)公司)

一種改進(jìn)型SPI高可靠通信機(jī)制設(shè)計(jì)*

韋小剛1,2

(1. 國網(wǎng)電力科學(xué)研究院 南京 210003;2. 南瑞集團(tuán)公司)

SPI通信作為一種全雙工高速通信方式,電路實(shí)現(xiàn)簡單、占用資源少,在工業(yè)嵌入式系統(tǒng)中應(yīng)用十分廣泛。但是,通信過程中沒有握手、應(yīng)答和數(shù)據(jù)校驗(yàn),影響了系統(tǒng)通信的可靠性。本文通過對嵌入式系統(tǒng)中的SPI通信機(jī)制的研究與分析,設(shè)計(jì)了一種高可靠性的SPI通信機(jī)制。這種SPI通信機(jī)制的高可靠性通過系統(tǒng)長期的現(xiàn)場應(yīng)用得到了驗(yàn)證。

SPI接口;可靠性;改進(jìn);外設(shè)

引 言

串行外圍設(shè)備(SPI)接口是由Motorola公司開發(fā)的,用來在微控制器MCU和外圍設(shè)備芯片之間以串行方式實(shí)現(xiàn)數(shù)據(jù)交換的,低成本、易使用的接口。其中,外圍設(shè)備包括顯示驅(qū)動(dòng)器、網(wǎng)絡(luò)控制器、A/D轉(zhuǎn)換器、內(nèi)存及微控制器MCU(如DSP、ARM、加密芯片等)等。與標(biāo)準(zhǔn)的串行接口不同,SPI是一個(gè)同步協(xié)議接口,全雙工通信,所有的傳輸都參照一個(gè)共同的時(shí)鐘,這個(gè)同步時(shí)鐘信號由主端(Master)產(chǎn)生。接收數(shù)據(jù)的外設(shè)使用時(shí)鐘對串行比特流的接收進(jìn)行同步化[1-2]。

SPI通信采用主從方式進(jìn)行,一般情況下,通過4根線完成通信,分別為兩根數(shù)據(jù)線(主輸出從輸入MOSI和主輸入從輸出MISO)、一根時(shí)鐘線(SCK)和一根片選線(CS)。其中,時(shí)鐘信號SCK由主端發(fā)出,片選信號用于由主設(shè)備控制外設(shè)芯片使能。

1 SPI通信機(jī)制優(yōu)缺點(diǎn)的分析

SPI通信示意圖如圖1所示。微控制器MCU采用SPI通信時(shí),片選信號CS(一般情況下為低電平)使能外圍設(shè)備。主端提供時(shí)鐘脈沖SCK,數(shù)據(jù)以串行方式傳輸,主端數(shù)據(jù)輸出通過MOSI,而數(shù)據(jù)輸入通過MISO,從端數(shù)據(jù)輸出通過MISO,而數(shù)據(jù)輸入通過MOSI,傳輸一位數(shù)據(jù)需要一個(gè)時(shí)鐘信號SCK,這樣傳輸一個(gè)字節(jié)數(shù)據(jù)至少需要8個(gè)時(shí)鐘信號SCK。

圖1 SPI通信示意圖

由以上SPI通信過程的描述可知,時(shí)鐘信號SCK完全由主端設(shè)備控制。標(biāo)準(zhǔn)的串行通信一次連續(xù)傳輸至少8位數(shù)據(jù),而SPI通信因?yàn)闀r(shí)鐘信號SCK完全由主端設(shè)備控制,所以通信過程中數(shù)據(jù)是可以一位一位傳輸?shù)?,若沒有主端設(shè)備的時(shí)鐘跳變SCK,通信就會暫停,這樣主端設(shè)備就可以通過控制時(shí)鐘信號SCK進(jìn)而控制整個(gè)數(shù)據(jù)的通信,這是SPI通信的一個(gè)優(yōu)點(diǎn)[3]。SPI通信還有個(gè)優(yōu)點(diǎn),即數(shù)據(jù)輸出和數(shù)據(jù)輸入彼此獨(dú)立,采用不同的信號線,可以同時(shí)完成數(shù)據(jù)的輸入與輸出,實(shí)現(xiàn)全雙工高速通信。此外,相對于ISO7816通信和I2C總線通信等其他接口通信方式,SPI通信實(shí)現(xiàn)起來較為簡單,就是主端和從端的8位SPI寄存器進(jìn)行數(shù)據(jù)的傳輸。

由于SPI通信有著諸多的優(yōu)點(diǎn),所以工業(yè)嵌入式系統(tǒng)開發(fā)中用到的很多芯片都支持SPI接口。但是,SPI通信的缺點(diǎn)也很明顯,通信過程中沒有握手,沒有應(yīng)答,沒有數(shù)據(jù)校驗(yàn)。SPI主端設(shè)備向從端設(shè)備發(fā)出數(shù)據(jù)后,從端設(shè)備有沒有收到數(shù)據(jù)?SPI從端設(shè)備收到的數(shù)據(jù)是否與SPI主端設(shè)備發(fā)出的數(shù)據(jù)完全一致?如果不一致,SPI主端設(shè)備是否應(yīng)該向從端重傳數(shù)據(jù)?這些都是不得而知的。

通信可靠性對于工業(yè)嵌入式系統(tǒng)來說至關(guān)重要,直接決定工業(yè)嵌入式系統(tǒng)是否有應(yīng)用價(jià)值,一個(gè)可靠性欠缺的工業(yè)嵌入式系統(tǒng)可能會給企業(yè)、社會乃至國家?guī)砟蟮膿p失。由此可知,SPI通信機(jī)制完全有必要改進(jìn)。

2 改進(jìn)型SPI通信機(jī)制的設(shè)計(jì)

SPI通信過程有必要加入握手、應(yīng)答和數(shù)據(jù)校驗(yàn)等環(huán)節(jié),以保證SPI主端和從端通信的可靠性。一般來說,對任何機(jī)制的改進(jìn)都不會是憑空想象,都是建立在原型的基礎(chǔ)之上。在SPI通信機(jī)制改進(jìn)時(shí),筆者參考了TCP連接的三次握手機(jī)制[4]和ISO7816協(xié)議的應(yīng)答機(jī)制[5-6]。

2.1 通信流程

改進(jìn)型SPI通信的流程如圖2所示,SPI通信由主端控制,主端通過片選引腳使能從端并向從端發(fā)出時(shí)鐘脈沖,從端以應(yīng)答的方式與主端進(jìn)行交互,過程如下:

① SPI主端向從端發(fā)出命令頭,該命令頭有5個(gè)字節(jié);

② SPI從端向主端發(fā)出應(yīng)答數(shù)據(jù),該數(shù)據(jù)為之前收到的命令頭的第二個(gè)字節(jié)(標(biāo)志字節(jié));

③ SPI主端向從端發(fā)出數(shù)據(jù)幀,該數(shù)據(jù)幀由幀頭、實(shí)際數(shù)據(jù)、校驗(yàn)值及幀尾表示;

④ SPI從端向主端發(fā)出應(yīng)答數(shù)據(jù),該數(shù)據(jù)為標(biāo)志字節(jié)、數(shù)據(jù)長度、實(shí)際數(shù)據(jù)、校驗(yàn)值及狀態(tài)字(兩個(gè)字節(jié))組成。

圖2 SPI通信流程(無數(shù)據(jù)重傳環(huán)節(jié))

以上過程中,步驟①和②可以看作是SPI通信主端對從端就緒狀態(tài)的探測,步驟③和④才是真正的數(shù)據(jù)交互。步驟①、②中,當(dāng)SPI從端未就緒時(shí),SPI主端無法收到從端的應(yīng)答,那么SPI主端就需要進(jìn)行超時(shí)重傳,重新傳送之前的命令頭,重傳次數(shù)達(dá)到上限后就不再重傳,否則會浪費(fèi)系統(tǒng)資源。步驟③、④中,SPI主端會對從端發(fā)過來應(yīng)答數(shù)據(jù)中的實(shí)際數(shù)據(jù)進(jìn)行校驗(yàn)并得出一個(gè)校驗(yàn)值,將該校驗(yàn)值與從端發(fā)過來的應(yīng)答數(shù)據(jù)中的校驗(yàn)值進(jìn)行比對,如果不一致,那么主端有必要進(jìn)行重傳,如圖3所示。

圖3 SPI通信流程(有數(shù)據(jù)重傳環(huán)節(jié))

2.2 通信數(shù)據(jù)格式

SPI通信過程中,主端發(fā)給從端的數(shù)據(jù)分為兩類,即命令頭和數(shù)據(jù)幀:

① 命令頭。由ISO7816協(xié)議中的APDU(Application Protocol Data Unit)命令格式組成,即CLA、INS、P1、P2、Len[5-6]。

② 數(shù)據(jù)幀。一個(gè)完整的數(shù)據(jù)幀由幀頭、實(shí)際數(shù)據(jù)、校驗(yàn)值及幀尾組成,如表1所列。

表1 SPI通信數(shù)據(jù)幀的組成

SPI通信過程中,從端給主端發(fā)出的應(yīng)答有兩種:一種是主端探測從端時(shí)從端響應(yīng)給主端的標(biāo)志,另一種就是實(shí)際通信中的應(yīng)答,這個(gè)完整的應(yīng)答報(bào)文由標(biāo)志字節(jié)、數(shù)據(jù)長度、實(shí)際數(shù)據(jù)、校驗(yàn)值及狀態(tài)字組成,如表2所列。

表2 SPI通信應(yīng)答報(bào)文的組成

3 改進(jìn)型SPI通信機(jī)制的實(shí)現(xiàn)

按照上述的流程,SPI通信過程中主端的代碼如下所示,讀者可以依此寫出SPI從端的代碼。

int SpiMaster(unsigned char *rxbuf, unsigned char *in, int len, unsigned char *out){

int i = 0, cnt = 0;

unsigned char cmd[5] = {0xA0, 0xE0, 0x80, 0x00, len};

CMD_RESEND1:

SendCmdHeader(cmd, rxbuf); //發(fā)送命令頭

RcvINS(rxbuf,cmd[1]); //接收標(biāo)志字節(jié)

if(errorTimeout){ //超時(shí)全局變量

//超時(shí)重傳,超過3次則結(jié)束

errorTimeout = 0;

if(cnt<3){

cnt++;

goto CMD_RESEND1;

}

else{

printf("Timeout ERROR! ");

return -1;

}

}

cnt = 0;

CMD_RESEND2:

SendData(cmd, rxbuf+1, in, len);//發(fā)送實(shí)際數(shù)據(jù)及校驗(yàn)碼

RcvINS(cmd,rxbuf,cmd[1]); //接收標(biāo)志字節(jié)

RcvLenL(cmd,rxbuf+1, cmd[3]*0x0100+cmd[4]+1);

//接收長度

RcvData(cmd, rxbuf+3); //接收實(shí)際數(shù)據(jù)及校驗(yàn)碼

RcvSW(cmd, rxbuf+3+len+1, 0x90); //接收狀態(tài)字

//計(jì)算接收到數(shù)據(jù)的CRC校驗(yàn)值

if(get_crc7(rxbuf+3, rxbuf[1]*0x100+rxbuf[2]-1)

!= rxbuf[rxbuf[1]*0x100+rxbuf[2]+1+1]){

//CRC校驗(yàn)值比對,不一致,則命令重傳,超過3次,結(jié)束

if(cnt<3){

cnt++;

goto CMD_RESEND2;

}

else{

printf("CRC check ERROR! ");

return -1;

}

}

for(i=0; i< len; i++){

out[i]=rxbuf[i+3];

}

return 0;

}

結(jié) 語

[1] Motorola.SPI Block Guide V03.06. Original Release Date: 21 JAN 2000Revised: 04 FEB,2003.

[2] 馬鳴錦,蔣烈輝,杜威,等. 基于M-CORE微控制器的嵌入式系統(tǒng)[M]. 北京:國防工業(yè)出版社,2003.

[3] 喬贊麗. 高可靠性SPI通信機(jī)制及其應(yīng)用探討[J].信息通信,2013(8):202-203.

[4] TCP/IP協(xié)議原理與應(yīng)用 [M].3版. 張長富, 等譯. 北京: 清華大學(xué)出版社, 2009.

[5] ISO/IEC 7816-3 —2006 Smart Card Standard, Part3 Electronic Signals and Transmission Protocols[S].

[6] ISO/IEC 7816-4—2005 Smart Card Standard, Part4 Interindustry Commands for Interchange[S].

韋小剛(碩士),主要研究方向?yàn)殡娏ο到y(tǒng)信息網(wǎng)絡(luò)安全。

Design of Improved High-reliability Communication Mechanism with SPI

Wei Xiaogang1,2

(1.State Grid Electric Power Research Institute, Nanjing 210003, China;2.Mary Group Corporation)

a full-duplex high-speed communication mode,SPI has simple circuit and low resource consumption,and it is widely used in embedded systems of industry. However, there are no handshake, response and data checking in communication so that the reliability of system communication is reduced. By the research and analysis of SPI communication mechanism in embedded systems, a high-reliability SPI communication mechanism is designed, which is validated in long-term practical applications.

SPI interface;reliability;improvement;peripheral equipment

* 項(xiàng)目來源:國網(wǎng)電力科學(xué)研究院智能電網(wǎng)終端安全防護(hù)項(xiàng)目。

TP393.8

A

2014-02-12)

猜你喜歡
重傳字節(jié)校驗(yàn)
No.8 字節(jié)跳動(dòng)將推出獨(dú)立出口電商APP
No.10 “字節(jié)跳動(dòng)手機(jī)”要來了?
面向異構(gòu)網(wǎng)絡(luò)的多路徑數(shù)據(jù)重傳研究?
爐溫均勻性校驗(yàn)在鑄鍛企業(yè)的應(yīng)用
簡談MC7字節(jié)碼
大型電動(dòng)機(jī)高阻抗差動(dòng)保護(hù)穩(wěn)定校驗(yàn)研究
電測與儀表(2015年1期)2015-04-09 12:03:02
基于加窗插值FFT的PMU校驗(yàn)方法
鍋爐安全閥在線校驗(yàn)不確定度評定
數(shù)據(jù)鏈路層的選擇重傳協(xié)議的優(yōu)化改進(jìn)
MPTCP中一種減緩緩存阻塞的重傳策略
民和| 灵台县| 庄河市| 邯郸县| 安多县| 通州市| 汉阴县| 泰宁县| 贡嘎县| 客服| 法库县| 武冈市| 汉阴县| 贵德县| 尤溪县| 随州市| 乐至县| 墨脱县| 石门县| 佛冈县| 渝北区| 平乐县| 崇阳县| 黄山市| 荃湾区| 平昌县| 淮阳县| 泗洪县| 江孜县| 临泉县| 龙里县| 建昌县| 天柱县| 和顺县| 新邵县| 遵义市| 顺平县| 嘉荫县| 榆社县| 察哈| 合山市|