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