一,。本設計給出的CAN總線智能節(jié)點設計方案,,它采用內置多路CAN總線控制器的LPC2294作為主控制器,,采用隔離CAN收發(fā)器CTM1050T作為收發(fā)器,使得該節(jié)點體積小、功耗低,、抗干擾性好,,因而特別適用于汽車、工業(yè)控制以及醫(yī)療系統(tǒng)和容錯維護總線中,。
1.硬件設計
1.1 LPC2294的特點
LPC2294是PHILIPS公司推出的一款功能強大的超低功耗的具有ARM7TDMI內核的32位微控制器,。內部嵌入256 KB的高速Flash 存儲器和16KB靜態(tài)RAM。128 位寬度的存儲器接口和獨特的加速結構使32 位代碼能夠在最大時鐘速率(60MHz)下運行,。對代碼規(guī)模有嚴格控制的應用可使用16 位Thumb 模式將代碼規(guī)模降低超過30%,,而性能的損失卻很小。
由于LPC2294 的144 腳封裝,、極低的功耗,、兩個個32 位定時器、八通道10 位ADC,、四路互連的CAN接口,、PWM 通道(六路)以及多達九個外部中斷管腳使它們特別適用于汽車、工業(yè)控制應用以及醫(yī)療系統(tǒng)和容錯維護總線,。
LPC2294 集成4路CAN 控制器,。他們具有如下特性:
★ 單個總線上的數據傳輸速率高達1Mb/s
★ 32 位寄存器和RAM訪問
★ 兼容CAN 2.0B, ISO 11898-1標準
★ 全局驗收濾波器可以識別所有CAN 總線的11 位和29 位Rx 標識符
★ 驗收濾波器為選擇的標準標識符提供了Full CAN-style 自動接收功能
1.2 隔離CAN收發(fā)器CTM1050T
CTM1050T是一款帶隔離的高速CAN收發(fā)器芯片,其主要功能是將CAN控制器的邏輯電平轉換為CAN總線的差分電平,,并且具有(DC 2500V)隔離功能,、ESD保護功能及TVS管防總線過壓功能。CTM1050T具有以下特性:
☆完全符合CAN 2.0和ISO 11898標準的CAN收發(fā)器
☆具有隔離,、ESD保護功能及TVS管防總線過壓功能,;
☆速率最高達1Mbit/s;
☆隔離電壓:DC 2500V
☆電磁輻射EME極低,,電磁抗干擾EMI性極高,;
☆無需外加元件可直接使用。
1.3 CAN智能節(jié)點硬件電路設計
CAN智能節(jié)點硬件電路如圖1所示,。
圖1基于LPC2294的CAN總線智能節(jié)點硬件電路
主控制器LPC2294的晶振頻率范圍為1~30MHz,。本設計選晶振頻率為20MHz。內部256KB的高速Flash存儲器用于代碼和數據的存儲,。對于FLASH存儲器,,可通過內置的串行JTAG接口進行在系統(tǒng)編程(ISP In-System Programming),或進行在應用編程(IAP In-Application Programming),。為了便于調試和系統(tǒng)升級,,在設計中總可以預留這些接口電路。
LPC2294采用雙電源供電。CPU的供電電壓范圍為1.65~1.95V(1.8±0.15V),I/O供電電壓范圍為3.0~3.6V(3.3±03V),。
隔離CAN總線收發(fā)器CTM1050T是CAN協議控制器和物理總線之間的接口,。在以往的設計方案中需要高速光耦(6N137)、DC/DC電源隔離模塊,、CAN收發(fā)器等其他元件才能實現帶隔離的CAN收發(fā)電路,,現在只需利用一片CTM1050T接口芯片就可以實現帶隔離的CAN收發(fā)電路,并且隔離電壓可以達到DC 2500V,。
1.4硬件的抗干擾設計
在本設計所應用的場合中,,產生電磁信號的設備較多,包括超短波設備,、音頻設備,、電源等,因此抗干擾設計顯得尤為重要,。主要采取了以下措施:
(1)為了進一步提高CAN總線節(jié)點的抗干擾能力,,保證各節(jié)點之間在電氣上是完全隔離和獨立的,我們采用隔離CAN收發(fā)器CTM1050T,,取代傳統(tǒng)的光耦與電源隔離模塊,,提高性能的同時簡化電路設計。
(2)在CAN總線的兩端加有兩個120Ω的電阻,,這兩個電阻對于總線阻抗的匹配起著相當重要的作用,。去掉它們會使數據通信的抗干擾性及可靠性大大降低,甚至無法通信,。
(3)CANH和CANL與地之間并聯了兩個30pF的小電容,,可慮除總線上的高頻干擾并且具有一定的防電磁輻射的能力。
2.軟件設計
對于一般的32位ARM嵌入式應用系統(tǒng),,在運行主程序前必須初始化運行環(huán)境,即編寫ARM控制器啟動代碼,。該啟動代碼包括異常向量表,、堆棧初始化、存儲系統(tǒng)初始化和目標板初始化等,,一般用匯編語言編寫,。
對于該設計來說,關鍵的是編寫CAN驅動程序,。主程序只需通過調用驅動程序提供的接口來實現數據的接受和發(fā)送,。驅動程序包括四部分內容:CAN控制器的初始化、接收數據,、發(fā)送數據和總線異常處理,。圖2為主程序流程圖。
圖2 主程序流程圖
2.1 CAN控制器的初始化
初始化CAN 控制器的操作包括:硬件使能,、設置管腳連接,、軟件復位,、設置報警界限、設置總線波特率,、設置中斷工作方式,、設置驗收濾波器工作方式、設置工作模式并啟動CAN等,。需要特別指出的是設置總線波特率是個難點,,所有CAN節(jié)點的波特率都要相同才能正常工作,所以要正確配置VPBDIV和PLL寄存器,。在設置各CAN寄存器之前必須進行軟件復位,,這是因為CAN的某些寄存器必須在軟復位下讀寫。
值得注意的是,,LPC2294為所有的CAN 控制器提供了全局接收標識符查詢功能,。2KB的接收過濾用RAM可容納1024個標準標識符或者512個擴展標識符或兩種類型混合的標識符。通過軟件處理,,可在該RAM中設置存放1~5個標識符表格,,它能更容易的對任意復雜的ID進行篩選過濾,滿足復雜的ID的接受過濾要求,。大大減少了系統(tǒng)軟件設計復雜度及運行時的負擔,。設置驗收濾波器工作方式,必須首先創(chuàng)建LUT表格,,指定每個表格的起始地址,,并用實際的ID地址初始化該表格。最后設定驗收濾波器模式寄存器,。若該節(jié)點不主動發(fā)送數據,,可選擇在總線不活動時進入睡眠模式。
2.2 數據發(fā)送
將待發(fā)送的數據打包成符合CAN 協議的幀格式后,,便可寫入發(fā)送緩存區(qū),,并啟動發(fā)送。在寫發(fā)送緩存區(qū)前必須查詢其狀態(tài),。LPC2294中的CAN控制器為了提高大量數據發(fā)送的效率,,每個CAN控制器都有三個獨立的發(fā)送緩沖區(qū),它們的狀態(tài)可以通過查詢CANSR得知,。只有當其中有空閑的發(fā)送緩沖區(qū)時才可將數據寫入,。在發(fā)送大量數據數,這一步顯得尤為重要,,否則發(fā)送可靠性將不能保證,。啟動發(fā)送成功后,只能通過查詢CANGSR的TCS位或配合發(fā)送成功中斷來判斷數據是否發(fā)送成功。
2.3 數據接收
接收數據可采用查詢方式或中斷方式,。在某一段時間內,,CAN總線并不總是在活動,為了提高效率,,可采用中斷方式,。在初始化程序中必須使能接收中斷。在中斷服務子程序中,,讀取CANICR,,判斷是否有接收中斷標志,有則讀取接收緩沖區(qū)數據,。
2.4 異常情況處理
在總線發(fā)生嚴重故障的情況下,,CAN節(jié)點有可能脫離總線,此時以下寄存器位被置位:CANSR的BS位,、CANIR的BEI位和EI位(如果使能)和CANMOD的RM位,。RM將許多CAN控制器功能復位和禁止。軟件下一步必須置零RM位,。發(fā)送錯誤計數器將遞減計數總線釋放條件(11個連續(xù)的隱性位)的第128個事件,。軟件可通過讀取Tx錯誤計數器對計數器遞減計數的情況進行監(jiān)測。
一些不是很嚴重的錯誤一般不會引起總線錯誤,,即使不處理也不會產生什么致命錯誤,,為了提高中斷處理速度,可以根據實際情況裁減中斷服務程序,。
3結束語
由于該方案體積小,、功耗低、抗干擾性好,,現已應用于電磁環(huán)境復雜的某裝甲車通信設備中,,滿足了該項目對CAN網絡節(jié)點的要求。此外該設計作為CAN總線節(jié)點的一個模塊,,能夠和儀器儀表等設備相結合,,使其具有網絡通信的能力,有著廣闊的應用前景,。
本文作者創(chuàng)新點:隔離CAN收發(fā)器CTM1050T的使用取代了在以往的設計方案中需要高速光耦(6N137)、DC/DC電源隔離模塊,、CAN收發(fā)器等分立元件才能實現的帶隔離的CAN收發(fā)電路,,現在只需利用一片CTM1050T接口芯片就可以實現帶隔離的CAN收發(fā)電路,并且隔離電壓可以達到DC 2500V,。在簡化硬件電路開銷的同時提高了系統(tǒng)的抗干擾性能,。