新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 一種通用基于CPLD實(shí)現(xiàn)的CAN接口連接設(shè)計(jì)

一種通用基于CPLD實(shí)現(xiàn)的CAN接口連接設(shè)計(jì)

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

摘要:介紹一種基于實(shí)現(xiàn)的處理器與CAN總線控制器SJA1000接口連接設(shè)計(jì)。通常處理器都有獨(dú)立的地址和數(shù)據(jù)總線,而SJA1000采用的是地址、數(shù)據(jù)分時(shí)復(fù)用總線,它們不能直接連接。該設(shè)計(jì)主要是通過實(shí)現(xiàn)這兩種總線方式的轉(zhuǎn)接。該方案成本低,性能穩(wěn)定,實(shí)現(xiàn)可靠。采用使該設(shè)計(jì)更為自由、靈活。在處理器與CPLD的連接一側(cè)是采用用獨(dú)立的地址和數(shù)據(jù)總線訪問外部存儲(chǔ)器的方式工作的,而許多具有獨(dú)立的地址和數(shù)據(jù)總線的都能做到訪問外部存儲(chǔ)器,從而使該設(shè)計(jì)具有很強(qiáng)的通用性。全篇給出了完整詳細(xì)的設(shè)計(jì)代碼和仿真結(jié)果,并在實(shí)際應(yīng)用中得到檢驗(yàn),可直接應(yīng)用到設(shè)計(jì)中。

本文引用地址:http://butianyuan.cn/article/201609/304285.htm

在工業(yè)自動(dòng)化領(lǐng)域,CAN口通信以其卓越的性能、極高的可靠性和低廉的價(jià)格得到廣范的應(yīng)用。Philips公司的SJA1000芯片,是目前使用最為廣泛的一種獨(dú)立CAN總線控制器。SJA1000有一系列先進(jìn)的功能,適合于多種應(yīng)用,特別在系統(tǒng)優(yōu)化,診斷和維護(hù)方面非常重要。

為了連接到主控制器,SJA1000提供一個(gè)分時(shí)復(fù)用的地址、數(shù)據(jù)總線和附加的讀寫控制信號(hào)。SJA1000可以作為主控制器外圍存儲(chǔ)器映射的I/O器件直接連接到具有Intel方式接口的主控制器。而目前大部分處理器都是采用獨(dú)立的地址和數(shù)據(jù)總線訪問外部存儲(chǔ)器的,由于時(shí)序不相兼容的原因,這些處理器不能直接訪問SJA1000。從而設(shè)計(jì)一種轉(zhuǎn)接電路使DSP和ARM處理器能夠連接SJA1000變得很必要。本設(shè)計(jì)正是解決這一問題。

1 總體設(shè)計(jì)

該設(shè)計(jì)以新塘科技生產(chǎn)的ARM7處理器W90P710B與SJA1000的連接為例,W90P710B采用獨(dú)立的地址和數(shù)據(jù)總線訪問外部存儲(chǔ)器方式工作。圖1表明了CPLD在W90P710B與SJA1000之間的這種轉(zhuǎn)接關(guān)系。

設(shè)計(jì)中采用的CPLD選用Altera公司的MAX系列可編程邏輯器件EPM3128A芯片。EPM3128A具有128個(gè)宏單元,96用戶I/O管腳數(shù),2500個(gè)可用門,管腳間延遲快至10ns,計(jì)數(shù)器速度可高達(dá)100 MHz,可以很好的滿足設(shè)計(jì)需要。本設(shè)計(jì)采用圖形和AHDL語言混合輸入完成。使用工具為MaxplusⅡ。Ateral公司的MaxplusⅡ,QuartusⅡ,也是業(yè)界最著名的CP LD/FPGA開發(fā)工具,支持所有的Ateral芯片,如MAX3000,MAX7000,MAX2Ⅱ系列。

一種通用基于CPLD實(shí)現(xiàn)的CAN接口連接設(shè)計(jì)

圖2是轉(zhuǎn)接電路總體設(shè)計(jì)圖,與ARM處理器連接一側(cè),鎖存器U1用于存儲(chǔ)要訪問的地址,U1的片選信號(hào)為CANAW,該信號(hào)同時(shí)起到啟動(dòng)時(shí)序電路U8輸出讀寫時(shí)序的作用;鎖存器U2用于存儲(chǔ)要寫入的數(shù)據(jù),U2的片選是CANDW;鎖存器U7的輸出為高,控制U8輸出讀時(shí)序?qū)?a class="contentlabel" href="http://butianyuan.cn/news/listbylabel/label/CAN控制器">CAN控制器讀取數(shù)據(jù),讀出的數(shù)據(jù)存入U(xiǎn)5中,鎖存器U7的輸出為低,控制U8輸出寫時(shí)序?qū)AN控制器SJA1000進(jìn)行寫操作,將U2中的數(shù)據(jù)寫入U(xiǎn)1所代表的,CAN所在地址中,其片選信號(hào)為CANCTL;門電路U6通過片選信號(hào)CANDR用以讀取U5中存放的CAN讀出數(shù)據(jù)。綜上所知,CPLD與ARM處理器接口的是4個(gè)寄存器,它們分別是3個(gè)寫寄存器:CAN地址寫寄存器CANAW,CAN數(shù)據(jù)寫寄存器CANDW,CAN控制寄存器CANCTL;一個(gè)讀寄存器:CAN數(shù)據(jù)讀CANDR。ARM就是通過這4個(gè)寄存器來操作SJA1000 CAN控制器的。

CPLD與SJA1000連接一側(cè)是INTEL方式的標(biāo)準(zhǔn)信號(hào)CANCS、CANRD、CANWR、CANALE,這4個(gè)信號(hào)由時(shí)序電路U8產(chǎn)生。U3、U4的輸出,U5的輸入都與SJA1000的數(shù)據(jù)總線相連,用以接收地址和讀寫數(shù)據(jù)。

復(fù)位信號(hào)RESET使系統(tǒng)上電時(shí)處于初始狀態(tài)。時(shí)鐘信號(hào)GCLK取8 MHz,由SJA1000的16 MHz時(shí)種2分頻得來。U9-U12用以延寬CANAW對U8的低電平啟動(dòng)脈沖,使U8工作的更可靠。整個(gè)設(shè)計(jì)占用ARM4個(gè)地址和一個(gè)中斷資源,只要有足夠的地址和中斷源ARM就可按此設(shè)計(jì)擴(kuò)充出多個(gè)CAN口。

2 時(shí)序電路設(shè)計(jì)

CAN讀寫時(shí)序電路U8的設(shè)計(jì)輸入采用AHDL語言,其電路符號(hào)如圖3所示。

一種通用基于CPLD實(shí)現(xiàn)的CAN接口連接設(shè)計(jì)

U8的設(shè)計(jì)代碼如下:

一種通用基于CPLD實(shí)現(xiàn)的CAN接口連接設(shè)計(jì)
一種通用基于CPLD實(shí)現(xiàn)的CAN接口連接設(shè)計(jì)
一種通用基于CPLD實(shí)現(xiàn)的CAN接口連接設(shè)計(jì)

其波形仿真結(jié)果如圖4所示。

一種通用基于CPLD實(shí)現(xiàn)的CAN接口連接設(shè)計(jì)

3 轉(zhuǎn)接電路工作原理介紹

CAN讀寫時(shí)序電路U8是整個(gè)設(shè)計(jì)的核心,它起到對SJA1000進(jìn)行讀寫操作的作用。

當(dāng)ARM處理器要對SJA1000進(jìn)行讀操作時(shí),它先通過CANCTL片選在U7中寫入‘1’高電平,使U8工作在讀的狀態(tài),然后把要讀的地址通過片選CANAW寫入U(xiǎn)1,片選CANAW還啟動(dòng)了U8的TG觸發(fā)信號(hào)(圖4的前半部分、CANE為低與CANR/W為高的那部分),使U8的CANE(即CANCS)輸出低電平,CANCS0輸出低脈沖打開門電路U3,使CAN地址出現(xiàn)在SJA1000的總線上,同時(shí)CANALE出現(xiàn)一個(gè)正脈沖,將該地址鎖存到SJA1000的地址寄存器中,隨后CANCSR(即CANRD)輸出低電平對SJA1000進(jìn)行讀數(shù)據(jù),在CANCSR低電平脈沖結(jié)束的上升沿處出現(xiàn)SJA1000總線上的數(shù)據(jù)被鎖存到U5寄存器中,然后CANE變高,讀時(shí)序完成。隨后ARM處理器通過CANDR片選打開門U6將數(shù)據(jù)讀走。

當(dāng)ARM處理器要對SJA1000進(jìn)行寫操作時(shí),它先通過CANCTL片選在U7中寫入‘0’低電平,使U8工作在寫的狀態(tài),然后再把要寫的數(shù)據(jù)通過片選CANDW寫入U(xiǎn)2,最后把要寫的地址通過片選CANAW寫入U(xiǎn)1,片選CANAW還啟動(dòng)了U8的TG觸發(fā)信號(hào)(圖4的后半部分、CANE與CANR/W同時(shí)為低的那部分),使U8的CANE(即CANCS)輸出低電平,CANCS0輸出低脈沖打開門電路U3,使CAN地址出現(xiàn)在SJA1000的總線上,同時(shí)CANALE出現(xiàn)一個(gè)正脈沖,將該地址鎖存到SJA1000的地址寄存器中,隨后CANCS1輸出低脈沖打開門電路U4,使CAN要寫入的數(shù)據(jù)出現(xiàn)在SJA1000的總線上,同時(shí)CANCSW(即CANWR)輸出低電平對SJA1000進(jìn)行數(shù)據(jù)寫入,然后CANE變高,寫時(shí)序完成。


上一頁 1 2 下一頁

評(píng)論


相關(guān)推薦

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

關(guān)閉