亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        1553B總線遠(yuǎn)程終端的一種設(shè)計

        2014-12-01 09:01:19姜曉莊
        科技創(chuàng)新導(dǎo)報 2014年28期
        關(guān)鍵詞:堆棧指針寄存器

        姜曉莊

        摘 要:該文首先簡要介紹了MTL-STD-1553B總線情況,然后介紹了某產(chǎn)品的總線設(shè)計,該產(chǎn)品是在BU-61580的基礎(chǔ)上設(shè)計的總線的遠(yuǎn)程中端(RT);詳細(xì)介紹了該產(chǎn)品的設(shè)計方法,并針對該產(chǎn)品總線消息幀特點,著重介紹了BU-61580消息堆棧的設(shè)計。經(jīng)驗證,產(chǎn)品能可靠地完成與總線控制器(BC)的通信。

        關(guān)鍵詞:MTL-STD-1553B RT 遠(yuǎn)程終端 消息

        中圖分類號:TP4 文獻(xiàn)標(biāo)識碼:A 文章編號:1674-098X(2014)10(a)-0051-04

        A Design of MSL-STD-1553Bs Remote Terminal

        JIANG Xiaozhuang

        (China Airbome Missile Academy,Luoyang Henan,471009,China)

        Abstract:This paper introduces the situation MSL-STD-1553B first,then introduces the bus design of one product,it is an remote terminal(RT),designed based on BU-61580.Then introduces the design method of the product in detail,and focus on the design of message stack according to the characteristics of the product. After verification,the product can communication with BUS CONTROLLER reliably.

        Key words:MTL-STD-1553B RT remote terminal message

        隨著計算機(jī)計數(shù)的發(fā)展,航空電子綜合化也在飛速的發(fā)展,綜合化系統(tǒng)中的每個子系統(tǒng)都通過總線發(fā)送和接收消息,現(xiàn)代航空電子綜合化系統(tǒng)通常采用MTL-STD-1553B多路傳輸數(shù)據(jù)總線通訊系統(tǒng),MTL-STD-1553B通信網(wǎng)絡(luò)系統(tǒng)包括終端和電纜等,總線的傳輸速度1M比特。終端類型有總線控制器(BC)、遠(yuǎn)程終端(RT)和總線監(jiān)視器(BM)。

        BU-61580是美國DDC公司生產(chǎn)的MTL-STD-1553B總線協(xié)議芯片,可以分別作為BC/RT/MT。它具有靈活的處理器/存儲器接口、幀自動重復(fù)總線控制、自動重試總線控制、可靠性高等特點,能滿足各類應(yīng)用環(huán)境的要求。本文介紹的是一種遠(yuǎn)程終端(RT)的設(shè)計。

        1 系統(tǒng)概述

        該產(chǎn)品采用dsp(TMS320F240)加BU-61580進(jìn)行總線設(shè)計,設(shè)計完成后,該產(chǎn)品可以作為通信系統(tǒng)的遠(yuǎn)程終端(RT)進(jìn)行工作。

        該產(chǎn)品總線接口協(xié)議有如下特點:該系統(tǒng)總線消息分為周期消息和事件消息,周期消息和事件消息以信息幀的形式發(fā)送,每幀發(fā)送計數(shù)到的周期消息和需要發(fā)送的事件消息。為了適應(yīng)該總線消息的特點,產(chǎn)品作為遠(yuǎn)程終端對BU-61580消息接收響應(yīng)進(jìn)行了特殊的優(yōu)化設(shè)計。

        該產(chǎn)品總線部分的功能設(shè)計主要由兩部分組成,硬件設(shè)計和軟件設(shè)計。

        2 硬件設(shè)計

        通過硬件連接,BU-61580的寄存器和數(shù)據(jù)空間被映射為dsp的外擴(kuò)存儲器,dsp通過訪問和修改其外部存儲空間,完成對BU-61580的設(shè)置及總線數(shù)據(jù)讀寫工作,其硬件鏈接如圖1所示。

        BU-61580主要管腳設(shè)計有以下內(nèi)容:

        clock in:接16 M時鐘。

        MSTCLR:控制器復(fù)位,上電后至少100ns的低電平。

        D15~D0:直接與dsp數(shù)據(jù)線D15~D0連接。

        A15~A0:BU-61580的A11~A0接dsp的A11~A0,A15~A12懸空。

        SELECT及MEM/REG:dsp的A15~A12譯碼作為SELECT和MEM/REG,完成地址空間映射dsp的0x8000和0x9000映射為61580的數(shù)據(jù)空間和寄存器空間的起始地址(此處若僅使用數(shù)據(jù)空間,則在譯碼時將dsp的DS作為譯碼條件之一)。

        RD/WR:讀寫有效信號,直接與dsp 的RD/WR連接。

        STRBD:與SELECT一起初始化控制主處理器與BU-61580的數(shù)據(jù)傳輸。此處直接與dsp的STRBD連接。

        READYD:與主機(jī)的握手信號,高電平標(biāo)識地址線數(shù)據(jù)線占用。可通過譯碼后送dsp連接,在譯碼時可加入SELECT等信號作為譯碼條件。

        INT:芯片中斷,本文直接連接dsp外部中斷1。

        TRIGGER_SEL:在16bit緩存模式下,無連接。

        MSB/LSB:在緩存模式下,MSB/LSB用來說明哪一個比特是當(dāng)前被傳輸?shù)?。M S B/L S B的邏輯功能由POLARITY_SEL輸入控制,只用于在8bit緩存模式下。此設(shè)計不用,無連接。

        ADD_LAT:CPU地址占用。此處置高電平。

        16bit/8bit:傳輸模式選擇。如果是邏輯1,表示16bit,反之則為8bit。該文為邏輯1,置高電平。

        POLARITY_SEL:POLARITY_SEL讀極性選擇,該文選擇與dsp讀寫相同,置高電平。

        ZERO_WAIT:在緩存模式下,用于選擇零狀態(tài)模式和非零狀態(tài)模式,這里置低電平,不需要確認(rèn)握手信號的連接。

        TRANSPARENT/BUFFERED:選擇透明模式或者緩存模式,該文選緩存模式,置低電平。

        SSFLAG/EXT_TRIG:子系統(tǒng)標(biāo)志或外部觸發(fā)輸入,該文不用,無連接。endprint

        TAG_CLK:外部時間標(biāo)簽時鐘,該文不使用外部時間標(biāo)簽時鐘。無連接。

        TX/RXA TX/RXB:總線通道A和B,經(jīng)過耦合器后接出。

        RTAD4-RTAD0及RTADP:終端地址及奇校驗設(shè)置,此處由上位機(jī)設(shè)置。

        3 軟件設(shè)計

        軟件主要有兩部分組成,主程序和中斷處理程序。

        主程序完成dsp的初始化、61580初始化、根據(jù)接收的消息標(biāo)志,完成消息處理,以及根據(jù)需要更新需要發(fā)送的消息,如圖2所示。關(guān)于dsp的初始化此處不再詳細(xì)描述,重點介紹61580初始化。

        消息中斷處理程序完成已接收消息的標(biāo)志置位,對于需要及時處理的消息,在中斷中完成處理,詳述見下文。

        3.1 BU-61580芯片初始化

        該產(chǎn)品總線通信協(xié)議有以下特點:消息分為兩類,周期類消息、事件消息;周期類消息每個周期打包發(fā)送;消息可雙通道通信;對于不同時間,同一個子地址消息,重點考慮最新的消息內(nèi)容。

        根據(jù)上述協(xié)議特點,對BU-61580進(jìn)行如下設(shè)置:RT增強(qiáng)模式、單消息模式、消息結(jié)束中斷等。

        其具體工作流程如下:dsp上電后,由dsp通過訪問61580的寄存器空間(本文中,其空間映射為dsp的0x9000地址為起始的數(shù)據(jù)空間)完成61580的工作模式設(shè)置。

        具體寄存器設(shè)置,可見如下代碼:

        /*定義BU-61580寄存器空間基地址*/

        unsigned int *pAceReg= (unsigned int *)0x9000;

        /*BU-61580寄存器初始化*/

        *(pAceReg+3)=0x0001;

        * pAceReg=0x2013;

        *(pAceReg+1)=0x8f80;

        *(pAceReg+2)=0x8410;

        *(pAceReg+7)=0x8080;

        *(pAceReg+8)=0x0008;

        *(pAceReg+9)=0x0000;

        dsp通過訪問61580的數(shù)據(jù)空間(映射為dsp的0x8000地址為起始的數(shù)據(jù)空間),完成堆棧指針設(shè)置,Stack Pointer A的設(shè)置(本文不使用堆棧B),查詢表設(shè)置(分配發(fā)送數(shù)據(jù)空間映射,分配接收數(shù)據(jù)的空間映射,子地址控制字配置:發(fā)送、接收消息結(jié)束中斷),待發(fā)送消息的初始化等,具體代碼參考:

        /*定義BU-61580數(shù)據(jù)空間基地址*/

        unsigned int * pAceMem= (unsigned int *)0x8000;

        /* BU-61580數(shù)據(jù)空間初始化*/

        /*清空數(shù)據(jù)空間*/

        ……

        /*配置數(shù)據(jù)空間*/

        *(pAceReg+0x0100) = 0x0000; /*堆棧指針A配置*/

        /*配置查詢表*/

        for(i=0;i<0x60;i++)

        {

        *(pAceReg+0x0140+i) = 0x0400+i*32;

        }

        for(i=0;i<0x20;i++)

        {

        *(pAceReg+0x01A0+i) = 0x0420;

        }

        /*初始化發(fā)送消息*/

        ……

        3.2 消息中斷處理設(shè)計

        在初始化中將BU-61580的中斷響應(yīng)設(shè)置為消息結(jié)束中斷,所以在每次完成消息的接受或發(fā)送后,BU-61580都會向dsp發(fā)送中斷請求,當(dāng)dsp收到中斷請求后,產(chǎn)生中斷并進(jìn)入中斷處理程序,對于需要立即處理的消息,在中斷內(nèi)直接處理,對以處理量較大消息設(shè)消息標(biāo)志,放主程序處理,主程序根據(jù)中斷標(biāo)志處理數(shù)據(jù)。

        在進(jìn)入中斷處理程序后,首先需要進(jìn)行的工作是從消息堆棧中讀出消息描述,根據(jù)消息描述進(jìn)行標(biāo)志置位及消息處理。在從消息堆棧中讀取消息時需要注意以下幾個問題。

        (1)消息堆棧長度為0x100、每個消息描述長度為4,可存儲64個消息描述,當(dāng)消息描述超過64時會產(chǎn)生溢出并循環(huán)覆蓋,當(dāng)接收將要溢出的最后一幀消息后,其堆棧指針會從0x0fc變?yōu)?x000,此時進(jìn)行消息描述讀取時需注意。

        (2)當(dāng)1553中斷請求未能及時響應(yīng),而再次接收到消息時,可能出現(xiàn)兩種情況,第一種是,當(dāng)dsp相應(yīng)中斷,準(zhǔn)備去處理第一個消息時,第二個消息已經(jīng)接收完畢,此時BU-61580的消息堆棧指針指向第二個消息的棧頂。若直接讀取堆棧指針進(jìn)行數(shù)據(jù)處理可能將前一個消息丟失;第二種情況是,當(dāng)dsp響應(yīng)中斷,準(zhǔn)備去處理第一個消息時,第二個消息正在接收,此時61580的消息堆棧指針指向第二個消息的棧頂。若直接讀取堆棧指針進(jìn)行數(shù)據(jù)處理的時不僅會丟失前一個消息,而且可能由于第二個消息未接收完畢,處理信息時還是舊信息,而有可能將最新的消息丟失。

        針對上述兩個問題,對消息處理進(jìn)行以下設(shè)計:設(shè)置指針變量PreStackTop儲存上一次處理消息時的棧頂,當(dāng)有新消息時讀取消息堆棧指針存放至StackTop,每一次中斷都循環(huán)判斷PreStackTop與StackTop是否相等,不相等時,根據(jù)PreStackTop讀取并處理消息,然后將PreStackTop加4(若PreStackTop加4后為0x100則將PreStackTop清零),循環(huán)處理,直至與StackTop相等,同時在進(jìn)行消息處理前首先判斷消息是否接收完成,若未完成則結(jié)束中斷處理,等待下一次中斷處理。原理及程序流程見圖3和圖4。

        4 結(jié)語

        為了實現(xiàn)1553B總線通信,本文設(shè)計了一種基于dsp加61580的總線遠(yuǎn)程終端,可以作為總線終端進(jìn)行通信,經(jīng)測試該系統(tǒng)能較好地完成同總線控制器(BC)的正常通信,并且在消息量較大的情況下也能穩(wěn)定工作。本文介紹了該系統(tǒng)硬件和軟件的詳細(xì)設(shè)計內(nèi)容,具有較實用的參考價值。

        參考文獻(xiàn)

        [1] 伏鹍,陳紹煒.61580芯片與DSP芯片的連接關(guān)系分析[J].信息安全與通信保密,2009(3):82-84.

        [2] 顧驤.用于1553總線控制器的存儲單元設(shè)計[J].電子科技大學(xué),2003,32(3).

        [3] 林強(qiáng).dsp在1553總線接口技術(shù)中的應(yīng)用[J].微計算機(jī)應(yīng)用,2004,25(3).

        [4] MSL-STD-1553A/B NOTICE 2 RT and BC/RT/MT,ADVANCED COMMUNICATION ENGINE (ACE)[Z].endprint

        TAG_CLK:外部時間標(biāo)簽時鐘,該文不使用外部時間標(biāo)簽時鐘。無連接。

        TX/RXA TX/RXB:總線通道A和B,經(jīng)過耦合器后接出。

        RTAD4-RTAD0及RTADP:終端地址及奇校驗設(shè)置,此處由上位機(jī)設(shè)置。

        3 軟件設(shè)計

        軟件主要有兩部分組成,主程序和中斷處理程序。

        主程序完成dsp的初始化、61580初始化、根據(jù)接收的消息標(biāo)志,完成消息處理,以及根據(jù)需要更新需要發(fā)送的消息,如圖2所示。關(guān)于dsp的初始化此處不再詳細(xì)描述,重點介紹61580初始化。

        消息中斷處理程序完成已接收消息的標(biāo)志置位,對于需要及時處理的消息,在中斷中完成處理,詳述見下文。

        3.1 BU-61580芯片初始化

        該產(chǎn)品總線通信協(xié)議有以下特點:消息分為兩類,周期類消息、事件消息;周期類消息每個周期打包發(fā)送;消息可雙通道通信;對于不同時間,同一個子地址消息,重點考慮最新的消息內(nèi)容。

        根據(jù)上述協(xié)議特點,對BU-61580進(jìn)行如下設(shè)置:RT增強(qiáng)模式、單消息模式、消息結(jié)束中斷等。

        其具體工作流程如下:dsp上電后,由dsp通過訪問61580的寄存器空間(本文中,其空間映射為dsp的0x9000地址為起始的數(shù)據(jù)空間)完成61580的工作模式設(shè)置。

        具體寄存器設(shè)置,可見如下代碼:

        /*定義BU-61580寄存器空間基地址*/

        unsigned int *pAceReg= (unsigned int *)0x9000;

        /*BU-61580寄存器初始化*/

        *(pAceReg+3)=0x0001;

        * pAceReg=0x2013;

        *(pAceReg+1)=0x8f80;

        *(pAceReg+2)=0x8410;

        *(pAceReg+7)=0x8080;

        *(pAceReg+8)=0x0008;

        *(pAceReg+9)=0x0000;

        dsp通過訪問61580的數(shù)據(jù)空間(映射為dsp的0x8000地址為起始的數(shù)據(jù)空間),完成堆棧指針設(shè)置,Stack Pointer A的設(shè)置(本文不使用堆棧B),查詢表設(shè)置(分配發(fā)送數(shù)據(jù)空間映射,分配接收數(shù)據(jù)的空間映射,子地址控制字配置:發(fā)送、接收消息結(jié)束中斷),待發(fā)送消息的初始化等,具體代碼參考:

        /*定義BU-61580數(shù)據(jù)空間基地址*/

        unsigned int * pAceMem= (unsigned int *)0x8000;

        /* BU-61580數(shù)據(jù)空間初始化*/

        /*清空數(shù)據(jù)空間*/

        ……

        /*配置數(shù)據(jù)空間*/

        *(pAceReg+0x0100) = 0x0000; /*堆棧指針A配置*/

        /*配置查詢表*/

        for(i=0;i<0x60;i++)

        {

        *(pAceReg+0x0140+i) = 0x0400+i*32;

        }

        for(i=0;i<0x20;i++)

        {

        *(pAceReg+0x01A0+i) = 0x0420;

        }

        /*初始化發(fā)送消息*/

        ……

        3.2 消息中斷處理設(shè)計

        在初始化中將BU-61580的中斷響應(yīng)設(shè)置為消息結(jié)束中斷,所以在每次完成消息的接受或發(fā)送后,BU-61580都會向dsp發(fā)送中斷請求,當(dāng)dsp收到中斷請求后,產(chǎn)生中斷并進(jìn)入中斷處理程序,對于需要立即處理的消息,在中斷內(nèi)直接處理,對以處理量較大消息設(shè)消息標(biāo)志,放主程序處理,主程序根據(jù)中斷標(biāo)志處理數(shù)據(jù)。

        在進(jìn)入中斷處理程序后,首先需要進(jìn)行的工作是從消息堆棧中讀出消息描述,根據(jù)消息描述進(jìn)行標(biāo)志置位及消息處理。在從消息堆棧中讀取消息時需要注意以下幾個問題。

        (1)消息堆棧長度為0x100、每個消息描述長度為4,可存儲64個消息描述,當(dāng)消息描述超過64時會產(chǎn)生溢出并循環(huán)覆蓋,當(dāng)接收將要溢出的最后一幀消息后,其堆棧指針會從0x0fc變?yōu)?x000,此時進(jìn)行消息描述讀取時需注意。

        (2)當(dāng)1553中斷請求未能及時響應(yīng),而再次接收到消息時,可能出現(xiàn)兩種情況,第一種是,當(dāng)dsp相應(yīng)中斷,準(zhǔn)備去處理第一個消息時,第二個消息已經(jīng)接收完畢,此時BU-61580的消息堆棧指針指向第二個消息的棧頂。若直接讀取堆棧指針進(jìn)行數(shù)據(jù)處理可能將前一個消息丟失;第二種情況是,當(dāng)dsp響應(yīng)中斷,準(zhǔn)備去處理第一個消息時,第二個消息正在接收,此時61580的消息堆棧指針指向第二個消息的棧頂。若直接讀取堆棧指針進(jìn)行數(shù)據(jù)處理的時不僅會丟失前一個消息,而且可能由于第二個消息未接收完畢,處理信息時還是舊信息,而有可能將最新的消息丟失。

        針對上述兩個問題,對消息處理進(jìn)行以下設(shè)計:設(shè)置指針變量PreStackTop儲存上一次處理消息時的棧頂,當(dāng)有新消息時讀取消息堆棧指針存放至StackTop,每一次中斷都循環(huán)判斷PreStackTop與StackTop是否相等,不相等時,根據(jù)PreStackTop讀取并處理消息,然后將PreStackTop加4(若PreStackTop加4后為0x100則將PreStackTop清零),循環(huán)處理,直至與StackTop相等,同時在進(jìn)行消息處理前首先判斷消息是否接收完成,若未完成則結(jié)束中斷處理,等待下一次中斷處理。原理及程序流程見圖3和圖4。

        4 結(jié)語

        為了實現(xiàn)1553B總線通信,本文設(shè)計了一種基于dsp加61580的總線遠(yuǎn)程終端,可以作為總線終端進(jìn)行通信,經(jīng)測試該系統(tǒng)能較好地完成同總線控制器(BC)的正常通信,并且在消息量較大的情況下也能穩(wěn)定工作。本文介紹了該系統(tǒng)硬件和軟件的詳細(xì)設(shè)計內(nèi)容,具有較實用的參考價值。

        參考文獻(xiàn)

        [1] 伏鹍,陳紹煒.61580芯片與DSP芯片的連接關(guān)系分析[J].信息安全與通信保密,2009(3):82-84.

        [2] 顧驤.用于1553總線控制器的存儲單元設(shè)計[J].電子科技大學(xué),2003,32(3).

        [3] 林強(qiáng).dsp在1553總線接口技術(shù)中的應(yīng)用[J].微計算機(jī)應(yīng)用,2004,25(3).

        [4] MSL-STD-1553A/B NOTICE 2 RT and BC/RT/MT,ADVANCED COMMUNICATION ENGINE (ACE)[Z].endprint

        TAG_CLK:外部時間標(biāo)簽時鐘,該文不使用外部時間標(biāo)簽時鐘。無連接。

        TX/RXA TX/RXB:總線通道A和B,經(jīng)過耦合器后接出。

        RTAD4-RTAD0及RTADP:終端地址及奇校驗設(shè)置,此處由上位機(jī)設(shè)置。

        3 軟件設(shè)計

        軟件主要有兩部分組成,主程序和中斷處理程序。

        主程序完成dsp的初始化、61580初始化、根據(jù)接收的消息標(biāo)志,完成消息處理,以及根據(jù)需要更新需要發(fā)送的消息,如圖2所示。關(guān)于dsp的初始化此處不再詳細(xì)描述,重點介紹61580初始化。

        消息中斷處理程序完成已接收消息的標(biāo)志置位,對于需要及時處理的消息,在中斷中完成處理,詳述見下文。

        3.1 BU-61580芯片初始化

        該產(chǎn)品總線通信協(xié)議有以下特點:消息分為兩類,周期類消息、事件消息;周期類消息每個周期打包發(fā)送;消息可雙通道通信;對于不同時間,同一個子地址消息,重點考慮最新的消息內(nèi)容。

        根據(jù)上述協(xié)議特點,對BU-61580進(jìn)行如下設(shè)置:RT增強(qiáng)模式、單消息模式、消息結(jié)束中斷等。

        其具體工作流程如下:dsp上電后,由dsp通過訪問61580的寄存器空間(本文中,其空間映射為dsp的0x9000地址為起始的數(shù)據(jù)空間)完成61580的工作模式設(shè)置。

        具體寄存器設(shè)置,可見如下代碼:

        /*定義BU-61580寄存器空間基地址*/

        unsigned int *pAceReg= (unsigned int *)0x9000;

        /*BU-61580寄存器初始化*/

        *(pAceReg+3)=0x0001;

        * pAceReg=0x2013;

        *(pAceReg+1)=0x8f80;

        *(pAceReg+2)=0x8410;

        *(pAceReg+7)=0x8080;

        *(pAceReg+8)=0x0008;

        *(pAceReg+9)=0x0000;

        dsp通過訪問61580的數(shù)據(jù)空間(映射為dsp的0x8000地址為起始的數(shù)據(jù)空間),完成堆棧指針設(shè)置,Stack Pointer A的設(shè)置(本文不使用堆棧B),查詢表設(shè)置(分配發(fā)送數(shù)據(jù)空間映射,分配接收數(shù)據(jù)的空間映射,子地址控制字配置:發(fā)送、接收消息結(jié)束中斷),待發(fā)送消息的初始化等,具體代碼參考:

        /*定義BU-61580數(shù)據(jù)空間基地址*/

        unsigned int * pAceMem= (unsigned int *)0x8000;

        /* BU-61580數(shù)據(jù)空間初始化*/

        /*清空數(shù)據(jù)空間*/

        ……

        /*配置數(shù)據(jù)空間*/

        *(pAceReg+0x0100) = 0x0000; /*堆棧指針A配置*/

        /*配置查詢表*/

        for(i=0;i<0x60;i++)

        {

        *(pAceReg+0x0140+i) = 0x0400+i*32;

        }

        for(i=0;i<0x20;i++)

        {

        *(pAceReg+0x01A0+i) = 0x0420;

        }

        /*初始化發(fā)送消息*/

        ……

        3.2 消息中斷處理設(shè)計

        在初始化中將BU-61580的中斷響應(yīng)設(shè)置為消息結(jié)束中斷,所以在每次完成消息的接受或發(fā)送后,BU-61580都會向dsp發(fā)送中斷請求,當(dāng)dsp收到中斷請求后,產(chǎn)生中斷并進(jìn)入中斷處理程序,對于需要立即處理的消息,在中斷內(nèi)直接處理,對以處理量較大消息設(shè)消息標(biāo)志,放主程序處理,主程序根據(jù)中斷標(biāo)志處理數(shù)據(jù)。

        在進(jìn)入中斷處理程序后,首先需要進(jìn)行的工作是從消息堆棧中讀出消息描述,根據(jù)消息描述進(jìn)行標(biāo)志置位及消息處理。在從消息堆棧中讀取消息時需要注意以下幾個問題。

        (1)消息堆棧長度為0x100、每個消息描述長度為4,可存儲64個消息描述,當(dāng)消息描述超過64時會產(chǎn)生溢出并循環(huán)覆蓋,當(dāng)接收將要溢出的最后一幀消息后,其堆棧指針會從0x0fc變?yōu)?x000,此時進(jìn)行消息描述讀取時需注意。

        (2)當(dāng)1553中斷請求未能及時響應(yīng),而再次接收到消息時,可能出現(xiàn)兩種情況,第一種是,當(dāng)dsp相應(yīng)中斷,準(zhǔn)備去處理第一個消息時,第二個消息已經(jīng)接收完畢,此時BU-61580的消息堆棧指針指向第二個消息的棧頂。若直接讀取堆棧指針進(jìn)行數(shù)據(jù)處理可能將前一個消息丟失;第二種情況是,當(dāng)dsp響應(yīng)中斷,準(zhǔn)備去處理第一個消息時,第二個消息正在接收,此時61580的消息堆棧指針指向第二個消息的棧頂。若直接讀取堆棧指針進(jìn)行數(shù)據(jù)處理的時不僅會丟失前一個消息,而且可能由于第二個消息未接收完畢,處理信息時還是舊信息,而有可能將最新的消息丟失。

        針對上述兩個問題,對消息處理進(jìn)行以下設(shè)計:設(shè)置指針變量PreStackTop儲存上一次處理消息時的棧頂,當(dāng)有新消息時讀取消息堆棧指針存放至StackTop,每一次中斷都循環(huán)判斷PreStackTop與StackTop是否相等,不相等時,根據(jù)PreStackTop讀取并處理消息,然后將PreStackTop加4(若PreStackTop加4后為0x100則將PreStackTop清零),循環(huán)處理,直至與StackTop相等,同時在進(jìn)行消息處理前首先判斷消息是否接收完成,若未完成則結(jié)束中斷處理,等待下一次中斷處理。原理及程序流程見圖3和圖4。

        4 結(jié)語

        為了實現(xiàn)1553B總線通信,本文設(shè)計了一種基于dsp加61580的總線遠(yuǎn)程終端,可以作為總線終端進(jìn)行通信,經(jīng)測試該系統(tǒng)能較好地完成同總線控制器(BC)的正常通信,并且在消息量較大的情況下也能穩(wěn)定工作。本文介紹了該系統(tǒng)硬件和軟件的詳細(xì)設(shè)計內(nèi)容,具有較實用的參考價值。

        參考文獻(xiàn)

        [1] 伏鹍,陳紹煒.61580芯片與DSP芯片的連接關(guān)系分析[J].信息安全與通信保密,2009(3):82-84.

        [2] 顧驤.用于1553總線控制器的存儲單元設(shè)計[J].電子科技大學(xué),2003,32(3).

        [3] 林強(qiáng).dsp在1553總線接口技術(shù)中的應(yīng)用[J].微計算機(jī)應(yīng)用,2004,25(3).

        [4] MSL-STD-1553A/B NOTICE 2 RT and BC/RT/MT,ADVANCED COMMUNICATION ENGINE (ACE)[Z].endprint

        猜你喜歡
        堆棧指針寄存器
        Lite寄存器模型的設(shè)計與實現(xiàn)
        偷指針的人
        娃娃畫報(2019年5期)2019-06-17 16:58:10
        嵌入式軟件堆棧溢出的動態(tài)檢測方案設(shè)計*
        為什么表的指針都按照順時針方向轉(zhuǎn)動
        分簇結(jié)構(gòu)向量寄存器分配策略研究*
        基于堆棧自編碼降維的武器裝備體系效能預(yù)測
        基于改進(jìn)Hough變換和BP網(wǎng)絡(luò)的指針儀表識別
        電測與儀表(2015年5期)2015-04-09 11:30:42
        ARM Cortex—MO/MO+單片機(jī)的指針變量替換方法
        高速數(shù)模轉(zhuǎn)換器AD9779/AD9788的應(yīng)用
        一種用于分析MCS-51目標(biāo)碼堆棧深度的方法
        黄色三级国产在线观看| aaa级久久久精品无码片| 国产极品美女高潮无套在线观看| 国产一起色一起爱| 高清不卡av在线播放| 亚洲gay片在线gv网站| 婷婷五月六月综合缴情| 热久久网站| 久久色悠悠亚洲综合网| 国产麻豆久久av入口| 女人和拘做受全程看视频| 日本高清一区二区三区水蜜桃| 亚洲人成网站在线播放小说| 国产性色av一区二区| 国产成人精品2021| 久久天天躁狠狠躁夜夜爽| 亚洲欧美变态另类综合| 午夜影院免费观看小视频| 天天爽夜夜爽人人爽| 亚洲国产精品久久久久秋霞1| 国产亚洲视频在线观看播放| 中文字幕亚洲精品专区| 国产动作大片中文字幕| 国产精品半夜| 亚洲成av人片在线天堂无| 亚洲av五月天一区二区| 人与禽性视频77777| 久久香蕉成人免费大片| 日本人妻系列一区二区| 久久精品第九区免费观看| 东北寡妇特级毛片免费| 人妻人妻少妇在线系列| 精品久久一区二区三区av制服| 乱人伦精品视频在线观看| 精品一区二区三区无码视频| 亚洲日本精品一区久久精品| 国产剧情一区二区三区在线| 中文字幕久久精品一二三区| 中文字幕永久免费观看| 男女啪啪动态视频在线观看| 国产成人精品2021|