白仲斐
某飛控數(shù)據(jù)檢測設(shè)備通信接口設(shè)計
白仲斐
白仲斐 孫 科
中國飛行試驗研究院
本文基于飛機試飛中所使用的地面飛控數(shù)據(jù)檢測設(shè)備,介紹如何將檢測設(shè)備與機上飛控系統(tǒng)通過通用I/O接口進行通信,文中給出了硬件連接框圖、電路原理圖、時序圖、程序代碼和性能評價,本設(shè)計在機務(wù)地面維護中的成功應(yīng)用,可以為包括A/D轉(zhuǎn)換數(shù)據(jù)的記錄或任何其他涉及大量數(shù)據(jù)存儲設(shè)備的工程測量應(yīng)用提供一定的參考依據(jù),是一項較為實用的基礎(chǔ)設(shè)計。
隨著新一代戰(zhàn)斗機、大型客機、運輸機等軍民用飛機的試飛科目的日益復(fù)雜,數(shù)字飛控作為新型飛機不可或缺的控制系統(tǒng),對飛行安全中起著至關(guān)重要的作用,所以在地面準備過程中,對飛機飛控數(shù)據(jù)進行有效的檢測顯得尤為重要。
隨著技術(shù)的發(fā)展,檢測裝置也在發(fā)生著日新月異的變革,結(jié)合目前在某試飛領(lǐng)域最新引進的一種且在試驗機上應(yīng)用較為廣泛的檢測裝置,它的關(guān)鍵環(huán)節(jié)就是如何實現(xiàn)該檢測設(shè)備與機上飛控系統(tǒng)進行穩(wěn)定可靠的通信,考慮到實際應(yīng)用的可靠性、穩(wěn)定性和經(jīng)濟性,該通信裝置的核心部件選用應(yīng)用較成熟的C8051芯片,這就使得機上飛控系統(tǒng)的SRAM與檢測裝置的C8051之間通信連接接口的實現(xiàn)就成為迫在眉睫需要解決的問題,本文就是基于此背景,解決了SRAM與C8051通過地址鎖存器實現(xiàn)了可靠的連接,進而實現(xiàn)了兩者之間的數(shù)據(jù)和控制指令的通信。
本文以C8051F000微處理器和TC74VHC537FW為控制處理核心,其他還包括一些供電等外圍電路,實現(xiàn)了對機上飛控核心部件SRAM的讀寫控制,原理框圖如圖1所示。
圖1 記錄盤配置系統(tǒng)原理框圖
這里的微處理器和控制處理芯片是基于一個支持實時通信和嵌入式跟蹤的32位ARM7TDMI-S CPU,并帶有128KB嵌入式的高速Flash存儲器。較小的封裝和很低的功耗,以及8位ADC和10位DAC,使其特別適用于工業(yè)控制以及航空測試系統(tǒng)。
該方案設(shè)計中使用的是LY6164JL-121型高速靜態(tài)存儲器,假定對其訪問時間為10ns。如果所用SRAM的訪問時間大于45ns,則需要加入NOP指令以延長地址建立時間及讀/寫選通時間。需要的引腳數(shù)取決于所支持的地址空間。對于本設(shè)計的128K字節(jié)地址空間,需要21個引腳。
另外,本文對外部SRAM接口電路的設(shè)計方案,對任何一個通用SRAM器件都可以在類似的方式下工作。
C8051F000、SRAM、地址鎖存器之間的硬件連接框圖如圖2所示。
圖2 外部SRAM接口框圖
微處理器C8051的地址線和SRAM的地址次線分別對應(yīng)相連,進行地址的選通;“CS”、“WR”、“RD”等控制指令分別相連,進行讀、寫的控制,AD[7:0]為地址、數(shù)據(jù)復(fù)用總線,分別與鎖存器和SRAM的輸入輸出接口相連,進行相應(yīng)的地址與數(shù)據(jù)的通信。
檢測裝置C8051F000、(128k× 8)SRAM和地址鎖存器硬件電路
接口部分采用地址和數(shù)據(jù)總線復(fù)用的方式以減少所需要的端口引腳數(shù)。當(dāng)傳輸數(shù)據(jù)時低位地址保持在一個鎖存器中。圖3給出了該實現(xiàn)方案經(jīng)過驗證的電源電路圖和C8051F000、SRAM、地址鎖存器之間詳細的電路配置圖。
圖3 經(jīng)過測試的C8051F000、(128k×8 )SRAM和地址鎖存器配置
雙向端口操作
接口部分采用地址和數(shù)據(jù)總線復(fù)用的方式以減少所需要的端口引腳數(shù)。當(dāng)傳輸數(shù)據(jù)時低位地址保持在一個鎖存器中,“Data1”用作數(shù)據(jù)輸入總線輸出總線和部分地址總線,對總線的復(fù)用需要對端口的配置進行動態(tài)改變使端口按需要設(shè)置為輸入或輸出。
為了將一個端口引腳配置為輸入,必須將其相應(yīng)的端口配置寄存器位(PRTnCF.x)設(shè)置為“0”使其輸出方式為“漏極開路”,寄存器鎖存位(Pn.x)必須設(shè)置為“1”,使其輸出狀態(tài)為高阻態(tài)。例如下面的代碼將端口0的所有引腳配置為輸入:
mov PRT0CF,#00h;漏極開路輸出方式
mov P0,#0ffh;高阻抗
下面的代碼將端口0的所有引腳配置為推挽輸出方式 :
mov PRT0CF, #0ffh ;推挽輸出方式
SRAM_Read子程序(見程序代碼部分)給出改變端口方向的一個例子,在程序執(zhí)行的前一階段“DATA1”口被配置為輸出,將低字節(jié)地址輸出到端口鎖存器,在程序執(zhí)行的第二階段“DATA1”口被配置為輸入,從外部SRAM讀取數(shù)據(jù)。
該程序控制系統(tǒng)由初始化SRAM接口邏輯程序、讀外部SRAM程序、 寫外部SRAM程序等組成,功能是通過該接口電路程序?qū)崿F(xiàn)硬件間的有效連接,實現(xiàn)穩(wěn)定的通信,從而實現(xiàn)對記錄盤的各種配置以及對記錄數(shù)據(jù)進行精確管理。
軟件操作
“SRAM_Init”、“SRAM_Read”和“SRAM_ Write”是用于訪問外部SRAM的三個子程序。
“SRAM_Init”程序初始化SRAM接口邏輯和端口配置。該程序只在器件的初始化過程中被調(diào)用。該程序假定交叉開關(guān)已經(jīng)被允許(XBR2.6=1)例如:
mov XBR@, #40h ; 允許交叉開關(guān)
acall SRAM_Init ; 初始化SRAM
“SRAM_Read”程序從外部SRAM讀一個字節(jié),調(diào)用該程序之前,先將DPTR裝入16位的待讀地址,然后調(diào)用”SRAM_Read”,該程序?qū)腄PTR所指向的地址讀到的數(shù)據(jù)返回到ACC。
例如:
mov DPH, #00h ; 裝入高字節(jié)地址
mov DPL, #00h ; 裝入低字節(jié)地址
acall SRAM_Read ; 進行讀操作,數(shù)據(jù)返回到ACC
“SRAM_Write”程序?qū)CC中的一個字節(jié)寫入到外部SRAM,地址由DPTR指定,調(diào)用該程序之前,將待寫數(shù)據(jù)裝入ACC,將DPTR裝入16位的待寫地址,然后調(diào)用 “SRAM_Write”
例如:
mov DPH, #00h ; 裝入高字節(jié)地址
mov DPL, #00h ; 裝入低字節(jié)地址
mov a, #55h ; 裝入待寫數(shù)據(jù)
acall SRAM_Write ; 進行寫操作
程序代碼中的主程序概述了如何對該外部128KB SRAM的每一個字節(jié)進行讀寫,該程序向外部SRAM寫入一個字節(jié),再從寫入的地址讀回,然后比較回讀的值與寫入的值是否一致,程序接著處理下一個地址,直到整個64K的存儲塊寫完,一旦低存儲塊寫完,程序?qū)?“A16位”置1(見示例代碼中“常數(shù)和聲明”一節(jié)),切換到高存儲塊。程序?qū)⒔又鴮Ω叽鎯K的每個字節(jié)進行同樣的讀、寫和校驗操作。
時序說明
圖4和圖5分別給出按示例代碼實現(xiàn)的讀和寫時序波形。表1給出這些圖形中的時間值。
圖4 讀周期時序波形
圖5 寫周期時序波形
表1 讀和寫周期時序
讀時序說明
“tRDSU”(表1)是指從讀選通信號有效到輸出數(shù)據(jù)有效的時間。與這一時序相對應(yīng)的代碼為:
clr RD ;使讀選通有效
;NOP ;加入NOP指令延長tRDSU
mov a, DATA ;讀數(shù)據(jù)
如上所示,為了滿足SRAM的建立時間,需要在“clr RD”之后加入NOP指令。
寫時序說明
如表1所示“tWR”是指“/WR”脈沖的寬度,下面的代碼段用于產(chǎn)生這一脈沖。
clr WR ;使寫選通有效
;NOP ;加入NOP指令延長tWRSU
setb WR ;使寫選通無效
如上所示,為了滿足SRAM的建立時間,需要在“clr WR ”之后加入NOP指令。
本系統(tǒng)以較為成熟的C8051F000和TC74VHC537FW為控制處理核心,采用多路復(fù)用的并行接口方案,使用通用I/O端口,實現(xiàn)了與飛控核心部件SRMA的通信,從讀或?qū)戇^程的進入到返回,一個字節(jié)讀或字節(jié)寫占用34個SYSCLK周期,對于20MHz的SYSCLK,相當(dāng)于1.7μs。這就是說可以達到的最大傳輸率為588K字節(jié)/s,達到了較高的數(shù)據(jù)傳輸率。為類似的工程應(yīng)用提供了可行的參考途徑。
10.3969/j.issn.1001-8972.2015.02.037