摘要:本文介紹了TMS320LF2407 DSP與Advantech公司的PCL-841數(shù)據(jù)采集卡CAN總線通信的軟硬件設(shè)計(jì)以及其實(shí)驗(yàn)結(jié)果,討論了設(shè)計(jì)中遇到的問(wèn)題及問(wèn)題解決的方法。
[b]
關(guān)鍵詞[/b]:CAN總線 DSP PCL-841
1 引言
控制器局域網(wǎng)CAN 是由ISO 定義的串行通訊總線。它最初出現(xiàn)在80 年代末的汽車(chē)工業(yè)里,它的基本設(shè)計(jì)規(guī)范要求有高的位速率、高抗電磁干擾性、而且能夠檢測(cè)出產(chǎn)生的任何錯(cuò)誤。由于CAN 串行通訊總線具有這些特性,它很自然地在汽車(chē)制造業(yè)及航空工業(yè)中受到廣泛應(yīng)用。過(guò)去我們用獨(dú)立的單片機(jī)和SJA1000組網(wǎng)。隨著科技的發(fā)展,各大芯片制造商紛紛研究更新的技術(shù),將若干獨(dú)立的芯片集成化、模塊化,這使得芯片性能更強(qiáng),芯片面積更小,芯片功耗更低。TI公司的微處理器芯片TMS320LF2407 DSP(簡(jiǎn)稱DSP2407),集成CAN控制器的功能,在與外電路連接時(shí),不再需要使用CAN控制器SJA1000,大大縮減了研發(fā)周期。本文結(jié)合DSP2407的特點(diǎn)和CAN2.0A協(xié)議,介紹DSP2407與Advantech公司PCL-841數(shù)據(jù)采集卡之間CAN通信的一種設(shè)計(jì)方法。
2 系統(tǒng)設(shè)計(jì)及其實(shí)驗(yàn)結(jié)果
2.1 DSP2407 CAN通信系統(tǒng)硬件原理圖及原理說(shuō)明
圖1 DSP2407 CAN模塊外接電路
如圖1所示DSP2407 CAN模塊外接電路原理圖。CANJP1為CAN_H、CAN_L輸入端。CAN總線驅(qū)動(dòng)器PCA82C250驅(qū)動(dòng)電路內(nèi)部,具有限流作用,可防止發(fā)送輸出級(jí)對(duì)電源、地或負(fù)載短路。若結(jié)溫超過(guò)大約160攝氏度,則芯片內(nèi)部?jī)蓚€(gè)發(fā)送器輸出端極限電流將減小,由于發(fā)送器是功耗的主要部分,因而限制了芯片的溫升。器件的所有其他部分將繼續(xù)工作。PCA82C250采用雙線差分驅(qū)動(dòng),有助于抑制瞬變干擾。PCA82C250的Rs腳上接有一個(gè)斜率電阻,它的大小可根據(jù)總線通信速度適當(dāng)調(diào)整,一般在16~140K歐姆之間。因?yàn)镻CA82C250電源電壓5V,DSP2407電源電壓3.3V,故PCA82C250的輸出腳RXD不可以直接與DSP2407的CANRX直接連接,故使用了分壓電阻R10、R11。R6為終端電阻。
2.2系統(tǒng)軟件設(shè)計(jì)
為完成DSP2407與PCL-841之間的CAN通信,使用CCS2.2開(kāi)發(fā)平臺(tái)。系統(tǒng)工作流程圖如下圖所示:
圖2 系統(tǒng)工作流程圖
圖2中PCL-841完成接收DSP2407數(shù)據(jù)并上傳該數(shù)據(jù)給上位微機(jī),或者上位微機(jī)通過(guò)PCL-841發(fā)送數(shù)據(jù)給DSP2407。
PCL-841啟動(dòng)時(shí),CAN口基地址處于DA00:0000H和DA00:0200H開(kāi)始的地址處,可選擇任意一個(gè)CAN口作為上位微機(jī)的控制接收端口。波特率Baudrate根據(jù)DSP2407的設(shè)定值進(jìn)行選擇。其值算法如(1)、(2)所示:
Baudrate=ICLK/(BRP+1)*Bit Time (1)
Bit Time=(TSEG1+1)+(TSEG2+1)+1 (2)
其中ICLK為DSP的CPU頻率,這里為40MHz;BRP=1;TSEG1=15;TSEG2=2。故CAN總線Baudrate=1MHZ。
DSP2407的CAN模塊初始化程序如下:
*MDER=0x0000;
*CAN_IMR=0x0000;
*ESR=0xFFFF;
*MCR=0x1400;
while(*GSR&0x10==0) continue;
*BCR2=0x0001;
*BCR1=0x00FA;
*MCR=0x0000;
while(*GSR&0x10!=0) continue;
*CAN_IMR=0x0200;
*MDER=0x003F;
*CAN_IFR=0xFFFF;
程序可通過(guò)判斷修改寄存器TCR、RCR來(lái)接收發(fā)送數(shù)據(jù),完成DSP2407與PCL-841的CAN總線通信。
2.3 實(shí)驗(yàn)結(jié)果
當(dāng)程序執(zhí)行時(shí),首先DSP2407 CAN模塊的郵箱5發(fā)送數(shù)據(jù)3344 1122 7788 5566到PCL-841;使用中斷方式,PCL-841發(fā)送數(shù)據(jù)1111 1111 1111 1111到DSP的郵箱1;等待PCL-841發(fā)送遠(yuǎn)程貞到DSP的郵箱2和郵箱3,DSP自動(dòng)回復(fù)數(shù)據(jù)0101 0101 0101 0101和0202 0202 0202 0202到PCL-841,完成實(shí)驗(yàn)操作。其實(shí)驗(yàn)結(jié)果如圖3、圖4所示。

圖3 PCL-841實(shí)驗(yàn)界面
圖4 CCS2.2實(shí)驗(yàn)界面
從圖可以看出,試驗(yàn)結(jié)果完全符合預(yù)期要求,軟硬件設(shè)計(jì)正確。
3 設(shè)計(jì)中的問(wèn)題以及解決方法
3.1 硬件電路
(1)從選片來(lái)說(shuō),一定要選擇市場(chǎng)常用芯片。一般來(lái)說(shuō),常用的芯片價(jià)格都相對(duì)便宜,而且技術(shù)支持也相對(duì)較多。
(2)隨著科技水平的提高,芯片的功耗越來(lái)越低,芯片的電源電壓也隨之降低,從原先的5V降至現(xiàn)在的3.3V、1.8V。所以不同芯片之間的電平轉(zhuǎn)換也是設(shè)計(jì)中的一個(gè)關(guān)鍵問(wèn)題。比如圖1、2中就在DSP與驅(qū)動(dòng)電路之間用到了電平轉(zhuǎn)換電路。從PCA82C250的RXD腳出來(lái)的電壓高于DSP的輸入電壓,故接了分壓電阻R10、R11,但R10、R11的電阻取值也需要注意,不能過(guò)大,否則會(huì)使電流過(guò)小。
(3)畫(huà)PCB電路板時(shí)需要考慮電磁兼容問(wèn)題,以及元器件擺放問(wèn)題。設(shè)計(jì)不僅需要符合電磁兼容要求,又要考慮器件布局需要滿足好焊接,好使用,好維修的要求,并使布局盡量美觀。電路板制作后,在焊接元件前一定要檢查電源、地等關(guān)鍵部位,看是否存在短路情況,避免不必要的損失。
3.2 軟件編程
(1)使用CCS2.2時(shí)需要注意的一些問(wèn)題。當(dāng)載入.out文件時(shí)出錯(cuò),系統(tǒng)會(huì)提示:“A section of your program falls into a memory region that is not wriable. check your linker configuration and/or memory map.” 一般情況下都是.cmd文件配置錯(cuò)誤;如果出現(xiàn)系統(tǒng)提示:“AN IDENTIFIER IN THE EXPRESSION IS INVALID”,很有可能是.h文件中寄存器的定義和.c文件中的寄存器定義不否;在燒錄芯片的時(shí)候如果提示格式不符,打開(kāi)Build Options/Linker/Advanced/COFF Output Format,選擇Default即可;如果使用匯編語(yǔ)言,Autoinit Nodel選項(xiàng)就需要選擇No Autoinitialization。
(2)一些資料上編寫(xiě)的程序流程圖不一定完全合理,需要結(jié)合硬件電路調(diào)試。
4 結(jié)束語(yǔ)
CAN總線以其高速、高可靠性和高靈活性,在工業(yè)自動(dòng)控制中得到越來(lái)越多的應(yīng)用。取代原先單一功能、無(wú)集成CAN控制器模塊的單片機(jī)來(lái)說(shuō),目前使用的集成CAN模塊的DSP2407,是科技的發(fā)展帶動(dòng)芯片模塊化、集成化的發(fā)展。本文介紹DSP2407與PCL-841CAN通信的實(shí)現(xiàn)方法,為CAN總線技術(shù)向更高層次發(fā)展奠定基礎(chǔ)。