新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 一種基于FPGA的CAN總線通信接口的設(shè)計(jì)

一種基于FPGA的CAN總線通信接口的設(shè)計(jì)

作者: 時(shí)間:2010-12-21 來源:網(wǎng)絡(luò) 收藏

  1.2 接口電路

  選用Philips公司的SJA1000作為CAN控制器,采用PCA82C250作為CAN收發(fā)器,并在CAN控制器與收發(fā)器之間使用6N137進(jìn)行光電隔離,以增強(qiáng)抗干擾能力。將MODE引腳接高電平即SJA1000工作在INTEL模式,引腳與復(fù)位芯片MAX706T的RESET引腳相連,進(jìn)行全局復(fù)位。在與SJA1000連接時(shí)需要使用741V164245電平轉(zhuǎn)換器完成5 V TTL電平向3.3 V I/O電平的轉(zhuǎn)換。另外,SJA1000的RX1引腳與PCA-82C 250的VREF引腳相連,使用輸入比較器旁路功能,可減少內(nèi)部延時(shí),增加正常通信的總線長度。具體的接口電路如圖3所示。

CAN總線接口電路

  2 邏輯控制程序

  2.1 SJA1000邏輯控制

  由于SJA1000地址線與數(shù)據(jù)總線復(fù)用,F(xiàn)PGA不僅僅要產(chǎn)生SJA1000讀寫控制引腳的信號邏輯,還需要模擬單片機(jī)等處理器產(chǎn)生對SJA1000的尋址信號,實(shí)際上是一個(gè)向SJA1000寫地址的過程。根據(jù)SJA1000技術(shù)手冊的時(shí)序要求,要完成對SJA1000內(nèi)寄存器的正確讀寫,接口邏輯必須在地址鎖存信號ALE為高電平時(shí)將SJA1000的寄存器地址當(dāng)作數(shù)據(jù)寫入,然后在ALE和片選信號信號為低電平后使能SJA1000的讀寫控制信號(WR或RD)。SJA1000的邏輯控制采用狀態(tài)機(jī)的方式完成,狀態(tài)機(jī)流程圖如圖4所示。起始態(tài)為IDLE態(tài),當(dāng)接收到數(shù)據(jù)讀寫等命令時(shí),進(jìn)入ADDR-ESS態(tài),向SJA1000寫入相應(yīng)寄存器的地址值。然后根據(jù)命令類型決定下一個(gè)態(tài)是寫寄存器狀態(tài)(WR1~WR3)還是讀寄存器狀態(tài)(RD1~RD4)。以寫寄存器為例,在WR1態(tài)ALE、信號、信號等信號置為非有效態(tài)。將信號置為有效狀態(tài);在WR2態(tài)ALE、信號為非有效態(tài).而將信號信號置為有效態(tài),在時(shí)鐘的下降沿將數(shù)據(jù)寫入寄存器。WR3狀態(tài)保持信號有效,WR信號變?yōu)闊o效,進(jìn)入IDLE態(tài),一次寫周期完成。

狀態(tài)機(jī)流程圖



關(guān)鍵詞: FPGA CAN總線 通信接口

評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉