摘 要: 介紹了CAN總線的優良性能,給出了針對DSP運動控制器的CAN總線系統結構框圖。主要完成了對TMS320LF2407A運動控制器上CAN總線硬件接口電路的設計和軟件的實現。實現了對TMS320LF2407A的CAN總線通信軟件的模塊化設計,并用實驗驗證其正確性。在此基礎上,CAN總線通信的實現只需要修改相應的幾個寄存器即可,大大降低了軟件設計的周期,也為DSP的CAN總線硬件電路的設計提供了參考。
關鍵詞: DSP;CAN總線;VC++ 6.0;C語言
隨著電工電子技術和信息技術的快速發展,各種科技產品功能變得越來越強大,設備也變得更加復雜。在自動控制領域,如電力電器控制、深空作業、自動駕駛、機器人控制等,TMS320LF2407A扮演著重要角色。當工控機所要控制的電機較多,或需要傳輸的數據量較大,實時性要求較高時,DSP運動控制器與上位機之間的通信將是設計人員必須考慮的問題。針對以上問題,本文提出了使用CAN(Controller Area Network)總線進行通信。CAN總線是目前唯一有國際標準的現場總線,它不僅價格低廉,結構靈活,尤其在強干擾的惡劣環境下仍具有很高的可靠性。CAN總線的通信速率最高可達1 Mb/s,此時的傳輸距離為40 m。如果傳輸距離比較遠,可適當地降低通信速率以增大傳輸距離[1]。CAN總線以上這些特性使其應用越來越廣泛。并且CAN總線是實現分布式控制的一種方式,比起集中式控制,分布式控制使控制系統變得簡單、安全可靠。因此,研究TMS320LF2407A的CAN總線通信的硬件接口電路的設計和其軟件的實現,將有很大的實際應用價值。CAN總線系統結構框圖如圖1所示,DSP運動控制器可以直接掛在用于CAN總線通信的兩根線上,最多可實現110個DSP運動控制器與上位機的通信。
1 硬件接口電路的設計
完整的CAN總線硬件接口電路如圖2所示,其主要由3部分組成,分別為CAN驅動器TJA1050、電氣隔離器(即雙通道數字式磁隔離器ADUM1201BRZ)以及未畫出的CAN控制器(即DSP控制芯片)。
如圖2所示,ADUM1201BRZ芯片的第2個引腳CANRX接TMS320LF2407A DSP的第70個引腳,ADUM1201BRZ芯片的第3個引腳CANTX接TMS320LF2407A DSP的第72個引腳。也可以接在其他DSP芯片CAN接口上或獨立的控制器SJA1000CAN上,使該電路具有很高的移植性和參考價值。
1.1 CAN驅動器的設計
CAN驅動器是CAN控制器與物理總線之間的接口,具有CAN總線的差動發送和接收功能。現在市場上多用PCA82C250作為CAN總線驅動器,但是本文提出了使用TJA1050總線驅動器替代PCA82C250。因為TJA1050除了具有PCA82C250的主要特性以外,在某些方面的性能還作了很大的改善,如優化了輸出信號CANH和CANL之間的耦合,大大降低了信號的電磁輻射(EMI);在DSP運動控制器未上電時,該節點不會干擾總線(對于未上電節點的性能作了優化)等。最重要的是,TJA1050和PCA82C250的封裝、引腳功能和芯片外圍電路基本相同,在大多情況下前者可以替換后者,使用戶在不改變PCB板的情況下就可以享受TJA1050所帶來的優勢[2-3]。
在數據傳輸時,當一個位從隱性切換為顯性時,需要額外的電流來驅動總線,由于受限于電壓調節器的調節速度,這時就需要一個旁路電容來穩定CAN電壓(+5 V),否則CAN電壓將會有一定的偏離。電壓不斷地偏離,就會產生震蕩電壓(惡性電壓),震蕩電壓會產生電磁輻射,進而影響通信。因此,如圖2所示添加旁路電容(C45)將非常重要,電容的大小由電壓調節器的性能而定,性能好的可適當小些,但至少要大于0.1 μF。如圖2所示,電阻(R08)是作為CAN總線通信的終點電阻,其作用是匹配總線阻抗,提高數據通信的抗干擾性及可靠行。當CAN總線上只有一個DSP運動控制器時,DSP運動控制器上就必須有這個電阻,否則,不能正常地通信。當有兩個或兩個以上DSP運動控制器,其中一塊板上有這個電阻就可以完成通信。至于圖2中電阻R09大小的選擇可參照TJA1050數據手冊。
1.2 CAN電氣隔離器的設計
雖然CAN總線接口采用差分傳輸,使其具有一定的抗共模干擾能力,但是在復雜的應用場合下,各個節點之間可能存在很高的共模電壓。當共模電壓達到一定值時就會使CAN驅動器無法正常工作。因此,為了使DSP運動控制器能夠適應強干擾環境,或是在高性能要求下工作,就必須對CAN總線各個節點進行電氣隔離,即在CAN總線進入DSP運動控制器CAN_H、CAN_L的通信通道之前添加具有電氣隔離的芯片。以往大都使用6N137高速光電隔離芯片(最高速率為10 Mb/s),一個6N137芯片只能隔離一路通信通道,且6N137為8個引腳,再加上6N137芯片外圍的限流電阻,使得DSP板的CAN通信電路變得比較復雜,進而降低了電路的可靠性。本設計采用ADI公司推出的雙通道數字隔離器ADUM1201,它與6N137相比有更高的通信速率,最高可達到25 Mb/s;減少了CAN總線有效回路信號的傳輸延遲時間;具有更高的額定隔離電壓,是6N137的兩倍。ADUM1201還有體積小、性價比高、應用靈活、功耗低的特點[4-5]。ADUM1201的使用使得CAN總線接口電路更加簡單可靠。ADUM1201BRZ兩側電源和參考地之間需要接入0.01 μF~0.1 μF電容,以濾除高頻干擾,防止電磁輻射。在PCB布局時,電容與ADUM1201BRZ之間的距離最好在20 mm以內,以便達到更好的濾波效果。
雙通道數字式磁隔離器ADUM1201在CAN總線通信中的應用,不但提高了系統的性能,簡化了系統的結構,增加了系統的穩定性,而且還降低了系統的功耗,為CAN總線隔離的實現提供了一種相當好的解決方案。
1.3 CAN總線電源的電路設計
電氣隔離器件兩側所用電源VCC(+5 V)與CAN(+5 V)必須完全隔離,否則,電氣隔離將失去應有的作用。本文采用100 μH的電感進行隔離。電源地與信號地也要分開,原因是:電源地上大的電流會在信號地上產生一個電壓差(可以解釋為:雖然導線阻值很小,但如果所流過的電流較大時,也會在此導線上產生電位差,這也叫共阻抗干擾),使信號地的真實電位高于0 V,如果信號地的電位較大時,有可能會使信號本來是高電平的,卻誤判為低電平,進而影響數據傳輸的準確性。CAN總線電源硬件電路如圖3所示。
2 CAN總線軟件的實現
2.1 CAN初始化
在使用CAN通信之前,必須對DSP的一些寄存器進行設置,包括對位定時器的設置和郵箱初始化的設置。配置位定時器流程圖如圖4所示,初始化郵箱流程圖如圖5所示。
CAN總線通信程序的初始化比較簡單,一般只需要修改兩處即可實現程序的移植。一處是BSR1、BCR2寄存器,以確定CAN總線通信的波特率,波特率的設置必須與上位機程序中波特率的設置大小一致,否則,通信的數據不對。另一處是修改MSGID2H寄存器,它是用來設置整個DSP運動控制器的ID號。如:MSGID2H=0x0004時,ID=1,每個DSP運動控制器的ID號不能重復,因為CAN適配器是靠ID號來識別通信的。
2.2 CAN數據的中斷、接收和發送
CAN數據的接收是通過中斷來實現的,至于數據的發送可以采用定時器定時發送,也可以在接收到數據后再發送。當DSP運動控制器向上位機發送數據時,只需把要發送的數據賦給MAX4n郵箱即可;當DSP運動控制器接收上位機的數據時,上位機只需把所要發送的數據通過CAN適配器賦給MAX2n郵箱即可[6],這樣就實現了上位機與多個DSP運動控制器的通信。
3 實驗
根據圖1中的CAN總線適配器,試驗中采用武漢吉陽光電科技有限公司生產的GY8507 USB轉CAN總線接口適配器。圖6所示為上位機中用VC++ 6.0編寫的CAN通信人機界面[7],該界面能夠實現兩組數據的發送和接收。用戶在發送數據之前首先點擊“CAN初始化”按鈕,待CAN初始化成功之后,再發送所需的數據。
CAN總線接口電路是CAN總線通信中的重要環節,其通信的可靠性與準確性直接影響功能的實現。本文設計的CAN總線接口電路簡單、安全可靠,為DSP運動控制器功能的實現提供了保障。更是實現了CAN總線通信軟件的模塊化設計,并用實驗驗證了其正確性,從而降低了開發難度,大大縮減了CAN總線通信程序實現的周期。
參考文獻
[1] 夏繼強.現場總線工業控制網絡技術[M].北京.北京航空航天大學出版社,2005.
[2] NXP Semiconductors. Datasheet TJA1050, high speed CAN transceiver[Z], 2000.
[3] NXP Semiconductors. Data sheet PCA82C250, CAN controller[Z]. 2000.
[4] ISOCOM. Datasheet 6N137, high CMR, very high speed optically coupled isolator logic gate output[Z]. 2005.
[5] ADI公司.Datasheet ADUM1201, dual-channel digital isolatorst[Z]. 2004.
[6] 劉和平.TMS320LF240x DSP C語言開發應用[M].北京:北京航空航天大學出版社,2003.
[7] 夏崇鐠,任海軍.Visual C++課程設計案例精編[M].北京:清華大學出版社,2008.