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