亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,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)通信的可靠性。本文通過對(duì)嵌入式系統(tǒng)中的SPI通信機(jī)制的研究與分析,設(shè)計(jì)了一種高可靠性的SPI通信機(jī)制。這種SPI通信機(jī)制的高可靠性通過系統(tǒng)長期的現(xiàn)場(chǎng)應(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í)鐘信號(hào)由主端(Master)產(chǎn)生。接收數(shù)據(jù)的外設(shè)使用時(shí)鐘對(duì)串行比特流的接收進(jìn)行同步化[1-2]。

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

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

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

        圖1 SPI通信示意圖

        由以上SPI通信過程的描述可知,時(shí)鐘信號(hào)SCK完全由主端設(shè)備控制。標(biāo)準(zhǔn)的串行通信一次連續(xù)傳輸至少8位數(shù)據(jù),而SPI通信因?yàn)闀r(shí)鐘信號(hào)SCK完全由主端設(shè)備控制,所以通信過程中數(shù)據(jù)是可以一位一位傳輸?shù)?,若沒有主端設(shè)備的時(shí)鐘跳變SCK,通信就會(huì)暫停,這樣主端設(shè)備就可以通過控制時(shí)鐘信號(hào)SCK進(jìn)而控制整個(gè)數(shù)據(jù)的通信,這是SPI通信的一個(gè)優(yōu)點(diǎn)[3]。SPI通信還有個(gè)優(yōu)點(diǎn),即數(shù)據(jù)輸出和數(shù)據(jù)輸入彼此獨(dú)立,采用不同的信號(hào)線,可以同時(shí)完成數(shù)據(jù)的輸入與輸出,實(shí)現(xiàn)全雙工高速通信。此外,相對(duì)于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ù)?這些都是不得而知的。

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

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

        SPI通信過程有必要加入握手、應(yīng)答和數(shù)據(jù)校驗(yàn)等環(huán)節(jié),以保證SPI主端和從端通信的可靠性。一般來說,對(duì)任何機(jī)制的改進(jìn)都不會(huì)是憑空想象,都是建立在原型的基礎(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通信主端對(duì)從端就緒狀態(tài)的探測(cè),步驟③和④才是真正的數(shù)據(jù)交互。步驟①、②中,當(dāng)SPI從端未就緒時(shí),SPI主端無法收到從端的應(yīng)答,那么SPI主端就需要進(jìn)行超時(shí)重傳,重新傳送之前的命令頭,重傳次數(shù)達(dá)到上限后就不再重傳,否則會(huì)浪費(fèi)系統(tǒng)資源。步驟③、④中,SPI主端會(huì)對(duì)從端發(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)行比對(duì),如果不一致,那么主端有必要進(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)答有兩種:一種是主端探測(cè)從端時(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)值比對(duì),不一致,則命令重傳,超過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)研究
        基于加窗插值FFT的PMU校驗(yàn)方法
        鍋爐安全閥在線校驗(yàn)不確定度評(píng)定
        數(shù)據(jù)鏈路層的選擇重傳協(xié)議的優(yōu)化改進(jìn)
        MPTCP中一種減緩緩存阻塞的重傳策略
        91青青草视频在线播放| 久久精品免费观看国产| 欧洲成人午夜精品无码区久久| 国产精品久久码一区二区| 国产精品香蕉网页在线播放| 国产精品成人午夜久久| 99久久超碰中文字幕伊人| 婷婷综合缴情亚洲狠狠| 扒开双腿操女人逼的免费视频| 亚洲码无人客一区二区三区| 亚洲国产综合人成综合网站| 19款日产奇骏车怎么样| 国产美女精品视频线免费播放软件 | 精品人妻中文字幕一区二区三区| h视频在线免费观看视频| 欧美性色欧美a在线播放| 又大又粗又爽18禁免费看| 欧美肥胖老妇做爰videos| 亚洲精品久久国产高清情趣图文| 在线视频中文字幕乱人伦| 一二区视频免费在线观看| 偷偷夜夜精品一区二区三区蜜桃| 日本女优中文字幕在线播放| 亚洲第一狼人天堂网亚洲av| 中文字幕一区二区三区人妻少妇| 亚洲精品亚洲人成在线下载| 亚洲成人色黄网站久久| 亚洲美女毛多水多免费视频| 精品国产yw在线观看| 午夜dy888国产精品影院 | 国内久久婷婷六月综合欲色啪| 欧美牲交a欧美牲交aⅴ免费下载 | 亚洲av人片在线观看调教| 日本九州不卡久久精品一区| av免费网址在线观看| 永久免费av无码网站性色av| 国产精彩视频| 亚洲素人av在线观看| 国产一区二区三区激情视频 | 日韩精品一区二区三区视频| 国产日本精品一二三四区|