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