基于CAN的大客飛機航電系統局域網(wǎng)通信設計
2.2 通信控制部分
CAN總線(xiàn)通信控制部分如圖4所示,主要由CAN總線(xiàn)控制器SJA1000、單片機AT89S52和雙口RAMIDT7006組成,負責整個(gè)CAN總線(xiàn)通信控制以及和PCI局部總線(xiàn)的互連。雙口RAM作為CAN總線(xiàn)和PCI局部總線(xiàn)交換數據時(shí)的一個(gè)緩沖存儲區。單片機AT89S52是該通信卡通信控制的核心,它負責與雙口RAM以及CAN控制器SJA1000之間的通信。本文引用地址:http://dyxdggzs.com/article/154762.htm
將雙口RAM的INTR和單片機的外部中斷引腳INT1相連,當PCI9052向雙口RAM傳輸完數據后,觸發(fā)雙口RAM中斷引腳INTR,進(jìn)而觸發(fā)單片機中斷,單片機執行中斷服務(wù)程序,讀取雙口RAM中的數據。為了使SJA1000和AT89S52時(shí)鐘同步,將SJA1000的CLKOUT引腳接至AT89S52的時(shí)鐘輸入端,作為AT89S52的外部時(shí)鐘輸入。SJA1000接收到新的數據后,給出中斷信號INT,通過(guò)觸發(fā)中斷信號INT0讓單片機實(shí)時(shí)處理這些數據,單片機把這些數據處理完成后,寫(xiě)入雙口RAM指定的存儲單元后,再向雙口RAM的1FFEH單元寫(xiě)入任意數據,即可觸發(fā)雙口RAM左端中斷,使計算機接收數據。由于SJA1000的地址數據復用,AD0~AD7可直接將其接到單片機的P0口。雙口RAM地址和數據是分開(kāi)的,通過(guò)74LS373和單片機P1口相連。
2.3 PCI總線(xiàn)接口部分
CAN總線(xiàn)通信卡PCI總線(xiàn)接口連接如圖5所示。
PCI總線(xiàn)接口電路主要是PCI總線(xiàn)和雙口RAM的連接電路。雙口RAM是PCI總線(xiàn)和CAN總線(xiàn)數據傳輸的中轉站,由于CAN總線(xiàn)相對于PCI總線(xiàn)而言傳輸速度較慢,為了充分利用PCI通道的高速特性,一般要將單片機處理后的CAN總線(xiàn)數據暫時(shí)緩存在外部存儲器中,當存儲器寫(xiě)滿(mǎn)時(shí)再利用PCI總線(xiàn)的突發(fā)、快速的特性,將存儲器數據一次性讀出。這樣,既充分利用了PCI接口的高性能,CPU又能空出時(shí)間來(lái)進(jìn)行數據處理和顯示等其他操作,從而增強數據傳輸的實(shí)時(shí)性。
PCI9052本質(zhì)上是一個(gè)橋設備,它把PCI總線(xiàn)對某一段PCI總線(xiàn)地址空間的各種操作(包括讀、寫(xiě)等)轉換為相應的局部總線(xiàn)上的操作。把數據寫(xiě)入E2PROM完成后,當板卡上電,PCI9052從E2PROM中讀取數據并寫(xiě)入PCI9052中的PCI寄存器和局部配置寄存器中。PC機(PCI主控設備)通過(guò)讀這些寄存器,得知系統中有多少存儲器以及I/O控制器要求分配相應的地址空間,將相應的基地址寫(xiě)入PCI基址寄存器中。假設本設計中計算機給PCI9052分配的基地址為0x8400,由局部配置寄存器的值可知,本設計采用的是I/O映射,且空間大小為FFH,則計算機對I/O空間0x8400H~0x84FFH的訪(fǎng)問(wèn),就會(huì )通過(guò)PCI9052映射到局部空間0x00H~0xFFH。
3 仿真系統的軟件設計
系統軟件設計是在Windows XP環(huán)境下,用VisualC++6.0開(kāi)發(fā),采用面向對象的設計方法。軟件主要包括主模塊、初始化模塊、控制模塊、數據管理模塊、通信模塊、顯示模塊和通信接口驅動(dòng)軟件等。軟件可以通過(guò)友好界面為用戶(hù)提供通過(guò)CAN總線(xiàn)進(jìn)行通信的雙方的設備號、端口號、波特率、數據等,可以初始化芯片,可以進(jìn)行復位操作,可以設置波特率。向用戶(hù)展示CAN總線(xiàn)的通信過(guò)程和結果,體現CAN線(xiàn)協(xié)議的功能。軟件流程圖如圖6所示。
評論