基于BU65170與單片機系統的RT設計與實(shí)現
1 引言:
1553B總線(xiàn)是一種時(shí)分制指令響應型串行多路數據傳輸總線(xiàn),它最早應用于70年代末美國軍用飛機的航電系統中并取得了成功,因其具有一般數據總線(xiàn)所無(wú)法比擬的高可靠性和實(shí)時(shí)性,在很多重要的科技領(lǐng)域都得到了廣泛應用。在我國,近年來(lái)1553B總線(xiàn)也廣泛應用于航空航天電子設備、地面車(chē)輛系統、艦艇系統等不同的軍事平臺上以及一些民用設備中。本文在所研制的某人造衛星有效載荷測控系統中,基于星上數據管理系統所采用的1553B總線(xiàn),選用了專(zhuān)門(mén)用于 RT模式的總線(xiàn)協(xié)議芯片BU65170,設計了BU65170與單片機控制器的硬件接口,編制了BU65170的初始化和控制軟件,最終實(shí)現了有效載荷對星上數據管理系統所發(fā)的內部指令、數據注入以及廣播時(shí)間碼的接收,同時(shí)將有效載荷測量數據打包傳輸到1553B總線(xiàn)上。
2BU65170芯片介紹
BU65170是DDC公司的第五代1553產(chǎn)品,它構成了MCU處理器與1553B總線(xiàn)間的智能接口。BU65170的內部結構如圖1所示。
圖1 BU65170 內部結構圖
如圖1所示:BU65170可選擇在12MHZ和16MHZ兩種時(shí)鐘頻率下工作。芯片內部具有4K×16靜態(tài)數據存儲器以及17個(gè)功能寄存器。還集成了編碼/解碼器,雙收發(fā)器和協(xié)議處理器,數據按一定的協(xié)議經(jīng)編碼/解碼器處理,通過(guò)雙收發(fā)器A/B來(lái)完成與1553B總線(xiàn)間的數據傳遞,數據的傳輸速度最大可達1Mbit/s。
協(xié)議控制器和存儲管理器使BU65170具有許多增強型的功能:數據的傳輸可以選擇在單消息、雙緩沖、循環(huán)緩沖模式下進(jìn)行。對這三種數傳模式的靈活運用不但能保證指令和數據收發(fā)的實(shí)時(shí)性,還支持大量的數據低誤碼率的快速傳輸;提供對消息的非法檢測功能。對于來(lái)自總線(xiàn)上的消息,協(xié)議控制器根據非法指令表初始化的內容對其進(jìn)行判斷,響應合法的消息,對無(wú)用的消息加以非法屏蔽。這樣可大大的提高系統的工作效率。
BU65170通過(guò)中斷接口邏輯的控制可產(chǎn)生多種可屏蔽中斷。芯片內部集成的中斷控制寄存器和中斷狀態(tài)寄存器。中斷控制寄存器用來(lái)允許或屏蔽不同類(lèi)型中斷,當有中斷服務(wù)請求時(shí),CPU可以通過(guò)查詢(xún)中斷狀態(tài)寄存器來(lái)判斷引發(fā)中斷的消息類(lèi)型,從而進(jìn)行相應的控制操作。
BU65170與MCU接口簡(jiǎn)單,可應用于8位或16位單片機系統中,并有多種接口方式,故在測控系統的RT設計時(shí)得到廣泛的應用。
3BU65170與單片機的硬件接口
圖2給出了我們設計的BU65170作為接口芯片與單片機及星上1553B總線(xiàn)間的硬件接口示意圖。
BU65170芯片的部分功能引腳介紹如下:
MSB/LSB:高低字節判定位;
POLARITY-SEL:在8位緩沖模式下,該腳為邏輯“0”時(shí),MSB/LSB低電平時(shí)訪(fǎng)問(wèn)低字節,高電平時(shí)訪(fǎng)問(wèn)高字節;該腳為邏輯“1”時(shí),MSB/LSB低電平時(shí)訪(fǎng)問(wèn)高字節,高電平時(shí)訪(fǎng)問(wèn)低字節;
TRIGGER-SEL:在8位緩沖模式下,TRIGGER-SEL表示一對字節的傳輸規則。該腳為邏輯“0”時(shí),讀、寫(xiě)傳輸順序為先低字節后高字節;該腳為邏輯“1”時(shí),讀、寫(xiě)傳輸順序為先高字節后低字節;
MEM/REG:寄存器和存儲器選擇位,低電平時(shí)訪(fǎng)問(wèn)寄存器,高電平時(shí)訪(fǎng)問(wèn)存儲器;
ADDR-LAT:地址鎖存,高電平時(shí),讀取地址,低電平時(shí),鎖存地址;
RD/WR:讀寫(xiě)控制信號,高電平時(shí),執行讀操作,低電平時(shí),執行寫(xiě)操作;
MSTCLR:復位端,接100ns負脈沖對芯片進(jìn)行復位;
CLKIN:時(shí)鐘信號輸入端;
INT:中斷請求信號,可程控選擇脈沖觸發(fā)和電平觸發(fā)兩種形式。脈沖觸發(fā):輸出大于
500ns的負脈沖信號,觸發(fā)中斷服務(wù)請求;電平觸發(fā)時(shí):低電平觸發(fā)中斷服務(wù)請求。
如圖2所示:為簡(jiǎn)化設計,節約線(xiàn)路板空間,本文BU65170采用與單片機相同的12M時(shí)鐘輸入。
BU65170芯片內部的寄存器和數據存儲器讀寫(xiě)時(shí)均是按16位操作的(每個(gè)寄存器占兩個(gè)字節),而本文所應用的MCU是8位單片機,故對高低字節的操作采取分時(shí)讀寫(xiě)的模式。先操作低字節,后操作高字節。為了軟件設計時(shí)尋址簡(jiǎn)單,將BU65170的MSB/LSB引腳連接到單片機的地址線(xiàn)的最低位 P0.0上。這樣單片機可以很方便的讀寫(xiě)BU65170內部寄存器或SRAM地址單元的高低字節。
當有通訊事件到來(lái)時(shí),BU65170的 腳會(huì )產(chǎn)生一個(gè)中斷信號。將該信號送給單片機的外部中斷0,并設置相應的軟件中斷優(yōu)先級,這樣就能保證通訊事件能夠及時(shí)被單片機獲知并做相關(guān)處理。
由于單片機對BU65170片內16位數據的高低字節采用分時(shí)讀寫(xiě)的操作,故其高字節數據線(xiàn)D8-D15和低字節數據線(xiàn)D0-D7均直接連接到單片機的數據總線(xiàn)P0口上。為保證通訊時(shí)的電流輸出,在P0口與兩數據線(xiàn)間使用了總線(xiàn)驅動(dòng)芯片74LS244。
BU-65170另一端是通過(guò)耦合變壓器連接到1553B總線(xiàn)上的,其中A總線(xiàn)和B總線(xiàn)連接方式相同。變壓器選用的是美國DDC公司生產(chǎn)的B-3067。
4BU65170與單片機接口軟件設計
BU65170初始上電時(shí),片內的寄存器和靜態(tài)數據存儲器的內容都是系統默認的。軟件設計上的第一步就是要對這些功能寄存器和靜態(tài)數據存儲器進(jìn)行初始化。初始化過(guò)程中對有寄存器的賦值是有先后順序的。如果順序顛倒會(huì )導致初始化的失敗。例如啟動(dòng)/復位寄存器必須要在初始化的最開(kāi)始設置。該寄存器的最后一位置1時(shí),BU65170片內所有寄存器和地址單元都復位成上電時(shí)默認的狀態(tài)。之后通過(guò)設置結構寄存器3來(lái)啟用增強型功能模式。該功能啟用后,一些 BU65170較前幾代產(chǎn)品所具有的新功能將允許被使用。以上寄存器設置完畢后,其它部分則需按照設計要求進(jìn)行相關(guān)初始化。整個(gè)初始化過(guò)程的流程圖如如3 所示:
圖3初始化子程序框圖 圖4中斷服務(wù)程序框圖
針對1553B總線(xiàn)上的不同消息類(lèi)型以及設計的要求,對于數據和指令的通訊采用三種數據傳輸模式:單消息模式、雙緩沖模式和循環(huán)緩沖模式[2]。單消息模式主要特點(diǎn)是簡(jiǎn)單,每一個(gè)接收、發(fā)送子地址都對應一固定的數據塊(該數據塊可設定),對于每條新消息主處理器可直接查詢(xún)數據塊。雙緩沖模式為主處理器提供一種接收最新、最完整有效數據的方法。該模式下,一個(gè)接收子地址對應兩個(gè)數據塊,任何時(shí)候都只有一個(gè)數據塊是激活的,下一條接收消息的數據將存儲在激活的數據塊中,當一條有效的消息結束后,BU65170將在兩個(gè)數據塊上切換。進(jìn)行大量的數據傳輸通訊采用循環(huán)緩沖模式。循環(huán)緩沖區大小在初始化中設定,最小位128字,最大為8192字。
初始化中斷屏蔽寄存器時(shí),主要打開(kāi)兩種中斷。一種是消息結束(EOM)中斷,另一種是循環(huán)緩沖翻轉中斷。為了便于消息查詢(xún),將消息描述棧指針指向棧頂。查詢(xún)表和子地址控制字初始化指定了通訊過(guò)程中數據的接收和發(fā)送所利用的子地址以及采用的數據傳輸模式。該部分是初始化軟件中最重要的環(huán)節。本文將數據注入設置在接收子地址2,內部指令設置在接收子地址8,接收方式均為單消息模式;廣播時(shí)間設置在接收子地址4,接收方式為雙緩沖模式;將測量數據打包發(fā)送給總線(xiàn)的事件設置在發(fā)送子地址9,發(fā)送方式為循環(huán)緩沖。同時(shí)對非法指令表進(jìn)行初始化,僅將以上通訊事件設置為本系統所能接受的合法消息。
在處理1553B總線(xiàn)上的通訊事件時(shí),采用中斷查詢(xún)的方法。當有外部中斷0有中斷信號時(shí),單片機控制器通過(guò)外部中斷0的入口地址跳轉到中斷服務(wù)程給出序中。如圖4所示:首先查詢(xún)是否是EOM中斷,由于消息結束后,BU65170中命令字寄存器中的內容會(huì )被修改,故查詢(xún)該寄存器。如果其中內容是內部指令或數據注入消息的命令代碼,則執行相應的總線(xiàn)數據接收控制子程序,否則繼續查詢(xún)。為防止多個(gè)事件同時(shí)到來(lái)引起中斷重疊時(shí)丟失事件響應的問(wèn)題,在內部指令和數據注入控制子程序結束后進(jìn)一步查詢(xún)中斷狀態(tài)寄存器。該寄存器的低字節第五位表征循環(huán)緩沖翻轉中斷的狀態(tài)。邏輯1表示循環(huán)緩沖區翻轉,邏輯0則循環(huán)緩沖區沒(méi)有翻轉。如果該位為高電平,則清空該位后執行相應的子程序來(lái)控制測量數據發(fā)送。
總線(xiàn)通訊中還有一種被稱(chēng)作廣播時(shí)間的通訊事件,該事件每秒鐘發(fā)生一次。由星上數據管理系統廣播發(fā)送當前時(shí)間。有效載荷接收并校對自已的時(shí)鐘系統。設計接收該類(lèi)型消息時(shí),我們采用雙緩沖模式。消息到來(lái)時(shí),不觸發(fā)中斷。初始化設置正確后,該消息的接收完全由BU65170芯片自動(dòng)完成。當測控系統使用時(shí)間時(shí),直接到循環(huán)緩沖子地址對應的數據塊中讀取。
在調試過(guò)程中,筆者發(fā)現,單片機對BU65170芯片內寄存器和靜態(tài)數據存儲器的數據存取時(shí),對操作時(shí)序要求嚴格,具體遵循以下原則:
對芯片內地址單元(雙字節)進(jìn)行寫(xiě)操作時(shí),兩次操作的間隔不應少于2.5us。
對芯片內地址單元進(jìn)行讀操作時(shí),首先應對該地址進(jìn)行一次空讀。即第一次讀取的數據不能使用,應對該地址重復讀取一遍,第二遍讀出的內容才是實(shí)際該地址中的內容。如果需要在連續的地址空間中讀取多個(gè)數據,則兩次讀操作的時(shí)間間隔也不應少于2.5us。
4 結束語(yǔ)
本文在介紹1553B總線(xiàn)協(xié)議芯片BU65170的基礎上,在以單片機為核心,以BU65170為通訊接口的有效載荷測控系統中,設計了軟硬件接口,將有效載荷作為一個(gè)RT與星上數據管理系統實(shí)現了通訊連接。在數次整星電聯(lián)試試驗中,與數據管理系統的通訊及時(shí)準確、穩定可靠。接口電路簡(jiǎn)單,易于實(shí)現,軟件設計模塊化、規范化,針對不同類(lèi)型消息采用不同通訊模式的方法大大提高了系統通訊的可靠性和穩定性。該接口方式對于嵌入式系統與1553B總線(xiàn)連接更具有廣泛的適用性。
參考文獻:
1.馬捷中等 1553B總線(xiàn)控制器遠程終端軟件設計[J] 測控技術(shù),2003
2.趙希權等 循環(huán)冗余校驗在單片機無(wú)線(xiàn)通信中的應用 微計算機信息 2005.7-2
3.飛機內部時(shí)分制指令/響應式多路傳輸數據總線(xiàn) 美國軍用標準,1978
4.李華 MCS-51系列單片機實(shí)用接口技術(shù) 北京航空航天大學(xué)出版社1993.1
評論