發(fā)電機(jī)狀態(tài)監(jiān)測儀中CAN適配卡的設(shè)計方案
3 伸裁方式
雙口RAM通信方式的關(guān)鍵是處理好爭用現(xiàn)象,避免因此而產(chǎn)生的讀寫錯誤。IDT7132能夠提供硬件判優(yōu)方式,并可利用BUSY引腳的信號來提高系統(tǒng)的靈活性。在圖2的硬件電路中,由于IDT7132內(nèi)含硬件判優(yōu)電路且兩邊端口都有BUSY引腳。因此為兩端口爭用同一地址單元時,其片內(nèi)硬件電路可根據(jù)兩邊的地址、片選以及讀寫信號到達(dá)選后順序來裁決哪個端口有使用權(quán)。
由此可知,BUSY信號可直接至支持插入等待時序的CPU如80C196的READY引腳,而無需軟件支持。在本卡中,由于89C52沒有READY信號,因而在89C52發(fā)出讀寫IDT7132命令時將鎖存BUSYR信號,而只需讀P1.6口的值就可判斷剛才對IDT7132讀寫時是否存在沖突。當(dāng)P1.6的值為1時,剛才詢門不存在沖突;當(dāng)1.6的值為0時,剛才詢問存在沖公安廳。此時要重發(fā)讀寫IDT7132的命令。由于ISA總線沒有READY信號,也沒有通用的I/O引腳,因而可將來自IDT7132的BUSYL信號接至數(shù)據(jù)線的最低位D0。但因?yàn)槌瞬樵傿USYL引腳電平時外,BUSYL不應(yīng)接到D0,因而應(yīng)采用三態(tài)門74L125。BUSYL接三態(tài)門的輸入端,三態(tài)門輸出端接ISA總線數(shù)據(jù)線D0位,其門控信號由A9~A5產(chǎn)生,故將占用ISA總線一個I/O端口。設(shè)計時應(yīng)該選用一個空閑的端口號,這里選用330H(雙口RAM側(cè),PC機(jī)則需換碼),即將A9~A5譯碼為11001.具體電路如圖3所示。
4 適配卡的軟件設(shè)計
適配卡主要用來承擔(dān)上位計算機(jī)和CAN節(jié)點(diǎn)之間的數(shù)據(jù)轉(zhuǎn)發(fā)任務(wù),其軟件設(shè)計也包括兩部分:第一部分是PC機(jī)端的應(yīng)用程序接口(API)函數(shù),負(fù)責(zé)完成PC機(jī)端與雙口RAM之間的通信,該部分可以采用可視化的編程工具如C++Builder編寫。PC機(jī)端軟件功能主要包括向適配卡上的雙口RAM發(fā)送控制命令、數(shù)據(jù)命令和請求數(shù)據(jù)命令,還將接收到的數(shù)據(jù)進(jìn)行后處理(如,顯示、報表等);第二部分是卡上單片機(jī)端的程序設(shè)計,負(fù)責(zé)單片機(jī)與雙口RAM以主導(dǎo)CAN控制器之間的通信,該部分可以采用匯編語言ASM51或Franklin C51編寫.軟件設(shè)計的主要任務(wù)是向CAN控制器轉(zhuǎn)發(fā)來自PC機(jī)的命令,并由CAN控制器進(jìn)一步轉(zhuǎn)發(fā)至CAN節(jié)點(diǎn);同時,將CAN控制器接收的來自CAN節(jié)點(diǎn)的數(shù)據(jù)、狀態(tài)信息送到雙口RAM。
5 需要說明的問題
CAN的協(xié)議規(guī)范(CAN Specification 2.0A/B)只是一個低層的規(guī)范。因而還需要一個高層/應(yīng)用層的協(xié)議,CAN的能力是由高層協(xié)議來選定和限制的。目前國際上CAN的應(yīng)用層協(xié)議很多,如DeviceNet、CANopen、CANKingdom等,但用戶可以定制更簡單的應(yīng)用層協(xié)議。應(yīng)用層協(xié)議的任務(wù)一方面是對將要發(fā)送的數(shù)據(jù)進(jìn)行分類、拆卸、合并,并確定發(fā)送對象,然后根據(jù)CAN的數(shù)據(jù)鏈路層協(xié)議規(guī)范填寫CAN的各個信息幀。另一方面是解釋接收到的數(shù)據(jù)的具體含義并對其進(jìn)行相應(yīng)的處理。
評論