《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 模擬設(shè)計(jì) > 設(shè)計(jì)應(yīng)用 > 基于LPC2292的CAN總線智能節(jié)點(diǎn)設(shè)計(jì)
基于LPC2292的CAN總線智能節(jié)點(diǎn)設(shè)計(jì)
摘要: 本文給出了一種基于本身已經(jīng)嵌入了CAN控制器的單片機(jī)LPC2292的CAN總線智能節(jié)點(diǎn)的設(shè)計(jì)方案。
Abstract:
Key words :

引言

CAN(Controller Area Network)總線控制器局域網(wǎng)絡(luò)是在1986年2月的SAE大會上,,由RoberBosch公司首先提出的,。CAN總線是一種串行通信協(xié)議,它能有效支持高安全等級的分布式實(shí)時控制,,其最初的目的是用在汽車上,。但由于采用了許多新技術(shù)及獨(dú)特的設(shè)計(jì),CAN總線與一般的通信總線相比,,它的數(shù)據(jù)通信具有突出的可靠性,、實(shí)時性和靈活性,目前的應(yīng)用范圍已不局限于汽車行業(yè),,而是擴(kuò)展到了機(jī)械工業(yè),、紡織機(jī)械、農(nóng)用機(jī)械,、機(jī)器人,、數(shù)控機(jī)床、醫(yī)療器械,、家用電器及傳感器等諸多領(lǐng)域,。CAN節(jié)點(diǎn)的設(shè)計(jì)多采用單片機(jī),為此,,本文給出了一種基于本身已經(jīng)嵌入了CAN控制器的單片機(jī)LPC2292的CAN總線智能節(jié)點(diǎn)的設(shè)計(jì)方案,。

1 LPC2292控制器

LPC2292是一個可以支持實(shí)時仿真和跟蹤的16/32位ARM7TDMI-S CPU微控制器,它帶有256K字節(jié)的嵌人式高速Flash存儲器,,并具有的128位寬度的存儲器接口和獨(dú)特的加速結(jié)構(gòu),,可使32位代碼在最大時鐘速率下運(yùn)行,。而對代碼有嚴(yán)格控制要求的應(yīng)用則可使用16位Thumb模式,這樣可將代碼規(guī)模降低30%以上,,而性能的損失卻很小,。LPC2292采用144腳封裝、可使用的GPIO高達(dá)76(使用外部存儲器)~112個(單片應(yīng)用),、并具有極低的功耗,。LPC2292內(nèi)含多個32位定時器、4路10位ADC,、2路CAN以及多達(dá)9路外部中斷等,,特別適用于汽車、工業(yè)控制應(yīng)用,、醫(yī)療系統(tǒng)和容錯維護(hù)總線,。

LPC2292內(nèi)部集成的2路CAN控制器符合CAN規(guī)范2.0B ISO 11898-1;可訪問32位的寄存器和RAM,;每個總線的數(shù)據(jù)速率為1 MB/s,;全局驗(yàn)收濾波器可識別所有總線的11位和29位Rx標(biāo)識符;驗(yàn)收濾波器為選擇的標(biāo)準(zhǔn)標(biāo)識符提供有FullCAN-style自動接收功能,。

2 節(jié)點(diǎn)硬件電路設(shè)計(jì)

CAN總線的節(jié)點(diǎn)硬件主要包括LPC2292,、CAT1024、82C250,、6N137以及B0505S,。其中,LPC2292是節(jié)點(diǎn)的微處理器及CAN通信控制器,,CAN總線驅(qū)動器采用82C250,。為了增強(qiáng)CAN總線節(jié)點(diǎn)的抗干擾能力,在TD1,、RD1與82C250之間應(yīng)通過高速光耦6N137相連,,這樣可以很好的實(shí)現(xiàn)總線上各CAN節(jié)點(diǎn)間的電氣隔離。要注意的是:光耦電路部分采用的兩個電源VCC和VDD必須完全隔離,。這里的B0505S就起這個作用,。另外,節(jié)點(diǎn)復(fù)位電路采用CAT1024來提高其可靠性,。圖1所示是CAN總線的節(jié)點(diǎn)硬件電路,。
 

3 軟件設(shè)計(jì)

該系統(tǒng)的軟件調(diào)試可在ADS1.2調(diào)試環(huán)境及EasyJTAG仿真器上進(jìn)行,。

和硬件電路設(shè)計(jì)相比,,軟件的設(shè)計(jì)相對來說要復(fù)雜些。CAN總線智能節(jié)點(diǎn)的軟件設(shè)計(jì)主要包括三部分:CAN節(jié)點(diǎn)初始化,、報文發(fā)送和報文接收,。除此之外,,還必須編寫LPC2292的啟動代碼,即對系統(tǒng)進(jìn)行初始化,。

3.1 LPC2292的啟動代碼

啟動代碼包括異常中斷向量表,、堆棧初始化、目標(biāo)板初始化及存儲系統(tǒng)初始化等,,一般都用匯編語言編寫,。這里不作詳細(xì)介紹。

3.2 CAN控制器初始化

 

CAN總線控制器的初始化過程主要包括相應(yīng)的引腳功能設(shè)置,、工作方式設(shè)置,、波特率參數(shù)設(shè)置以及出錯警告界限設(shè)置等,下面是對CAN1的初始化代碼(CAN2與之類似):


上面所述是對CAN控制器初始化的主要步驟,,另外,,還可以根據(jù)具體情況對其它CAN寄存器的值進(jìn)行設(shè)置。

LPC2292中有個全局驗(yàn)收濾波器,,該模塊可為所有CAN控制器提供接收標(biāo)識符的查詢功能(即驗(yàn)收濾波),。另外,驗(yàn)收濾波器還可為選擇的標(biāo)準(zhǔn)標(biāo)識符提供fullCAN-style自動接收功能,。在上面對CAN控制器的初始化中,,為了簡化程序,設(shè)計(jì)時將驗(yàn)收濾波器設(shè)置為旁路,。但在實(shí)際應(yīng)用中,,應(yīng)根據(jù)需要對它進(jìn)行設(shè)置。事實(shí)上,,讓它參與接收濾波的工作有助于改善節(jié)點(diǎn)接收信息的選擇性,。CAN控制器初始化完成后,即可開始發(fā)送和接收信息,。

3.3 發(fā)送過程

發(fā)送子程序主要負(fù)責(zé)節(jié)點(diǎn)報文的發(fā)送,。發(fā)送時,用戶只需要將待發(fā)送的數(shù)據(jù)按特定的格式組合成一幀報文送入CAN控制器的發(fā)送緩存區(qū),,然后啟動發(fā)送即可,。當(dāng)然,在向發(fā)送緩沖區(qū)送報文之前,,必須先做一些判斷,。發(fā)送程序分為發(fā)送遠(yuǎn)程幀和數(shù)據(jù)幀兩種,其中遠(yuǎn)程幀無數(shù)據(jù)場,。圖2是發(fā)送過程流程圖,。
 

3.4 接收過程

接收子程序主要負(fù)責(zé)節(jié)點(diǎn)報文的接收以及其它情況的處理。接收子程序相對要復(fù)雜一些,。因?yàn)樵谔幚斫邮請笪牡倪^程中,,同時也要對總線關(guān)閉,、錯誤報警、接收溢出等情況進(jìn)行處理,。CAN控制器報文的接收主要有兩種方式:中斷接收方式和查詢接收方式,。如果對通信的實(shí)時性要求不是很強(qiáng),建議采用查詢接收方式,。兩種接收方式的編程思想基本相同,。圖3給出了用查詢方式接收報文的流程圖。
 

4 結(jié)束語

該智能節(jié)點(diǎn)可利用EasyJTAG仿真器進(jìn)行調(diào)試仿真,,并可在實(shí)驗(yàn)環(huán)境下完成通訊功能,。該方法與51系列單片機(jī)相比,其通信速度較高,。因此,,在此基礎(chǔ)上構(gòu)建CAN控制系統(tǒng)具有實(shí)際意義,但對于不同系統(tǒng),,其軟件和硬件需要作相應(yīng)的改動,。

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載,。