<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 基于FPGA的CAN總線(xiàn)通信節點(diǎn)設計

基于FPGA的CAN總線(xiàn)通信節點(diǎn)設計

作者: 時(shí)間:2012-04-19 來(lái)源:網(wǎng)絡(luò ) 收藏

摘要:以代替傳統的單片機和外圍擴展芯片,給出了的詳細方案。其中以SJA1000為控制器、為主控制器,實(shí)現的硬件接口電路。控制器的功能分析,并應用Verilog語(yǔ)言進(jìn)行軟件,從而實(shí)現CAN之間的功能。

本文引用地址:http://dyxdggzs.com/article/149205.htm

0引言

CAN總線(xiàn)允許高達1Mbit/s通訊速率,支持多主通訊模式,有高抗電磁干擾性而且能夠檢測出通信過(guò)程中產(chǎn)生的任何錯誤,已被廣泛應用到各自動(dòng)化控制系統中。在項目的特殊環(huán)境要求下,CAN總線(xiàn)通信要求使用作為系統中的主控制器,較之傳統設計使用的單片機,FPGA能夠在速度和體積上有更好的適應性。FPGA一方面減少了電路板的復雜程度,縮短了實(shí)現周期;另一方面,其豐富的資源、超高的性能和靈活的可編程性,提高了整個(gè)設備的可靠性,大大增強了電路板設計的靈活性和可擴展性。文中通過(guò)設計FPGA的接口電路,并利用Verilog語(yǔ)言來(lái)編程實(shí)現CAN節點(diǎn)之間的通信功能。

1CAN接口硬件設計

1。1CAN節點(diǎn)的系統構成

一般來(lái)說(shuō),每個(gè)CAN模塊能夠被分成3個(gè)不同的功能塊,其結構如圖1所示。CAN總線(xiàn)收發(fā)器提供CAN協(xié)議控制器與物理總線(xiàn)之間的接口,控制從CAN控制器到總線(xiàn)物理層或相反的邏輯電平信號。它的性能決定了總線(xiàn)接口、總線(xiàn)終端、總線(xiàn)長(cháng)度和節點(diǎn)數,是影響整個(gè)總線(xiàn)網(wǎng)絡(luò )通信性能的關(guān)鍵因素之一。CAN控制器執行在CAN規范里規定的完整的CAN協(xié)議,它通常用于報文緩沖和驗收濾波,對外具有與主控制器和總線(xiàn)收發(fā)器的接口。主控制器負責執行應用的功能,例如控制命令的發(fā)送、讀傳感器和處理人機接口等。它通過(guò)對CAN控制器進(jìn)行編程,來(lái)控制CAN總線(xiàn)的工作方式和工作狀態(tài),以及進(jìn)行數據的發(fā)送和接收。

圖1 CAN 模塊系統構成

圖1CAN模塊系統構成

1。2接口電路設計

接口電路如圖2所示。SJA1000的AD0~AD7地址數據復用端口、ALE地址鎖存端口、RD、WR、片選CS端口均通過(guò)轉換芯片與FPGA的I/O口相連。SJA1000的中斷輸出信號INT連入FPGA,使CAN通信可以采用中斷或查詢(xún)方式。RST端口的電路實(shí)現SJA1000的上電自動(dòng)復位功能。MODE模式選擇端接+5V,設置SJA1000控制器為Intel模式。SJA1000的時(shí)鐘晶振采用16MHz,頻率調整電容取15pF。R16為終端電阻,設計中取120Ω。CAN驅動(dòng)器PCA82C250的RS腳為工作模式選擇位,接地工作于高速模式,接高工作于待機模式。系統通過(guò)電阻R14將芯片設定于斜率控制模式,電阻值為47kΩ,這時(shí)CAN總線(xiàn)應工作于低速模式,可提高CAN總線(xiàn)抵抗射頻干擾的能力。在這種情況下,可直接使用非屏蔽雙絞線(xiàn)作為總線(xiàn)。

設計中有2點(diǎn)需要特別注意:第一點(diǎn)是FPGA并沒(méi)有與SJA1000直接相連。這是因為對于設計選取的FPGAXCV600,其接口電平不支持5VTTL的I/O標準,如果與5VI/O標準的SJA1000直接相連,將可能導致FPGA管腳電流過(guò)大,造成器件鎖死或者燒毀。為此采用雙向總線(xiàn)收發(fā)器74ALVC164245,把SJA1000的5VTTL電平信號AD0~AD7、

、ALE轉換成3。3VI/O標準信號,連接到FPGA的引腳上。74ALVC164245有2個(gè)8位電平轉換端口,可獨立操作。其中電平信號AD0~AD7必須按順序連接在總線(xiàn)收發(fā)器的一個(gè)8位端口上,不可以分開(kāi)。第二點(diǎn)是:在CAN控制器與收發(fā)器之間不采用光電隔離。這是因為增加光電隔離雖然能增強系統的抗干擾能力,但也會(huì )增加CAN總線(xiàn)有效回路信號的傳輸延遲時(shí)間,導致通信速率或距離減少。82C250等型號的CAN收發(fā)器本身具備瞬間抗干擾、降低射頻干擾(RFI)以及實(shí)現熱防護的能力,它具有的電流限制電路還提供了對總線(xiàn)的進(jìn)一步保護功能。如果現場(chǎng)傳輸距離近、電磁干擾小,可以不采用光電隔離,以使系統達到最大的通信速率或距離。

圖2 接口電路

圖2接口電路

2系統軟件設計

2。1設計流程

FPGA對CAN總線(xiàn)通訊模塊的控制主要包括3部分:CAN總線(xiàn)節點(diǎn)初始化、報文發(fā)送和報文接收。由于通訊模塊對接收數據的實(shí)時(shí)性要求并不是很高,因此CAN總線(xiàn)的數據接收和發(fā)送采用查詢(xún)方式。

2。1。1初始化過(guò)程

系統上電后首先對82C250和SJA1000進(jìn)行初始化,以確定工作主頻、波特率、輸出特性等。SJA1000的初始化只有在復位模式下才可以進(jìn)行,初始化主要包括工作方式的設置、驗收濾波方式的設置、驗收屏蔽寄存器(AMR)和驗收代碼寄存器(ACR)的設置、波特率參數設置和中斷允許寄存器(IER)的設置等。在完成SJA1000的初始化設置以后,SJA1000就可以回到工作狀態(tài),進(jìn)行正常的通信任務(wù)。設計中使SJA1000工作在PeliCan的方式下。

2。1。2發(fā)送過(guò)程

發(fā)送時(shí),用戶(hù)只需將待發(fā)送的數據按特定的格式組合成一幀報文,送入SJA1000發(fā)送緩沖區中,然后啟動(dòng)SJA1000發(fā)送即可。當然,在往SJA1000發(fā)送緩存區送報文之前,必須先判斷發(fā)送緩沖區是否鎖定,如果鎖定則等待;判斷上次發(fā)送是否完成,未完成則等待發(fā)送完成。FPGA通過(guò)SJA1000向CAN總線(xiàn)進(jìn)行數據發(fā)送的流程圖如圖3所示。

圖3 發(fā)送數據流程圖

圖3發(fā)送數據流程圖

2。1。3接收過(guò)程

接收子程序負責節點(diǎn)報文的接收以及其他情況處理。接收子程序比發(fā)送子程序要復雜一些,因為在處理接收報文的過(guò)程中,同時(shí)要對諸如總線(xiàn)關(guān)閉、錯誤報警、接收溢出等情況進(jìn)行處理。只有在總線(xiàn)正常,沒(méi)有錯誤報警,并且接收緩沖區中有新報文,才開(kāi)始進(jìn)行數據接收操作。對接收緩沖區的數據讀取完畢后釋放CAN接收緩沖區。FPGA通過(guò)SJA1000接收CAN總線(xiàn)上的數據流程圖如圖4所示。

圖4接收數據流程圖


上一頁(yè) 1 2 下一頁(yè)

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>