摘要:本文介紹了TMS320LF2407 DSP與Advantech公司的PCL-841數(shù)據(jù)采集卡CAN總線通信的軟硬件設計以及其實驗結(jié)果,討論了設計中遇到的問題及問題解決的方法。
[b]
關鍵詞[/b]:CAN總線 DSP PCL-841
1 引言
控制器局域網(wǎng)CAN 是由ISO 定義的串行通訊總線。它最初出現(xiàn)在80 年代末的汽車工業(yè)里,它的基本設計規(guī)范要求有高的位速率、高抗電磁干擾性、而且能夠檢測出產(chǎn)生的任何錯誤。由于CAN 串行通訊總線具有這些特性,它很自然地在汽車制造業(yè)及航空工業(yè)中受到廣泛應用。過去我們用獨立的單片機和SJA1000組網(wǎng)。隨著科技的發(fā)展,各大芯片制造商紛紛研究更新的技術,將若干獨立的芯片集成化、模塊化,這使得芯片性能更強,芯片面積更小,芯片功耗更低。TI公司的微處理器芯片TMS320LF2407 DSP(簡稱DSP2407),集成CAN控制器的功能,在與外電路連接時,不再需要使用CAN控制器SJA1000,大大縮減了研發(fā)周期。本文結(jié)合DSP2407的特點和CAN2.0A協(xié)議,介紹DSP2407與Advantech公司PCL-841數(shù)據(jù)采集卡之間CAN通信的一種設計方法。
2 系統(tǒng)設計及其實驗結(jié)果
2.1 DSP2407 CAN通信系統(tǒng)硬件原理圖及原理說明
圖1 DSP2407 CAN模塊外接電路
如圖1所示DSP2407 CAN模塊外接電路原理圖。CANJP1為CAN_H、CAN_L輸入端。CAN總線驅(qū)動器PCA82C250驅(qū)動電路內(nèi)部,具有限流作用,可防止發(fā)送輸出級對電源、地或負載短路。若結(jié)溫超過大約160攝氏度,則芯片內(nèi)部兩個發(fā)送器輸出端極限電流將減小,由于發(fā)送器是功耗的主要部分,因而限制了芯片的溫升。器件的所有其他部分將繼續(xù)工作。PCA82C250采用雙線差分驅(qū)動,有助于抑制瞬變干擾。PCA82C250的Rs腳上接有一個斜率電阻,它的大小可根據(jù)總線通信速度適當調(diào)整,一般在16~140K歐姆之間。因為PCA82C250電源電壓5V,DSP2407電源電壓3.3V,故PCA82C250的輸出腳RXD不可以直接與DSP2407的CANRX直接連接,故使用了分壓電阻R10、R11。R6為終端電阻。
2.2系統(tǒng)軟件設計
為完成DSP2407與PCL-841之間的CAN通信,使用CCS2.2開發(fā)平臺。系統(tǒng)工作流程圖如下圖所示:
圖2 系統(tǒng)工作流程圖
圖2中PCL-841完成接收DSP2407數(shù)據(jù)并上傳該數(shù)據(jù)給上位微機,或者上位微機通過PCL-841發(fā)送數(shù)據(jù)給DSP2407。
PCL-841啟動時,CAN口基地址處于DA00:0000H和DA00:0200H開始的地址處,可選擇任意一個CAN口作為上位微機的控制接收端口。波特率Baudrate根據(jù)DSP2407的設定值進行選擇。其值算法如(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;
程序可通過判斷修改寄存器TCR、RCR來接收發(fā)送數(shù)據(jù),完成DSP2407與PCL-841的CAN總線通信。
2.3 實驗結(jié)果
當程序執(zhí)行時,首先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ā)送遠程貞到DSP的郵箱2和郵箱3,DSP自動回復數(shù)據(jù)0101 0101 0101 0101和0202 0202 0202 0202到PCL-841,完成實驗操作。其實驗結(jié)果如圖3、圖4所示。
圖3 PCL-841實驗界面
圖4 CCS2.2實驗界面
從圖可以看出,試驗結(jié)果完全符合預期要求,軟硬件設計正確。
3 設計中的問題以及解決方法
3.1 硬件電路
(1)從選片來說,一定要選擇市場常用芯片。一般來說,常用的芯片價格都相對便宜,而且技術支持也相對較多。
(2)隨著科技水平的提高,芯片的功耗越來越低,芯片的電源電壓也隨之降低,從原先的5V降至現(xiàn)在的3.3V、1.8V。所以不同芯片之間的電平轉(zhuǎn)換也是設計中的一個關鍵問題。比如圖1、2中就在DSP與驅(qū)動電路之間用到了電平轉(zhuǎn)換電路。從PCA82C250的RXD腳出來的電壓高于DSP的輸入電壓,故接了分壓電阻R10、R11,但R10、R11的電阻取值也需要注意,不能過大,否則會使電流過小。
(3)畫PCB電路板時需要考慮電磁兼容問題,以及元器件擺放問題。設計不僅需要符合電磁兼容要求,又要考慮器件布局需要滿足好焊接,好使用,好維修的要求,并使布局盡量美觀。電路板制作后,在焊接元件前一定要檢查電源、地等關鍵部位,看是否存在短路情況,避免不必要的損失。
3.2 軟件編程
(1)使用CCS2.2時需要注意的一些問題。當載入.out文件時出錯,系統(tǒng)會提示:“A section of your program falls into a memory region that is not wriable. check your linker configuration and/or memory map.” 一般情況下都是.cmd文件配置錯誤;如果出現(xiàn)系統(tǒng)提示:“AN IDENTIFIER IN THE EXPRESSION IS INVALID”,很有可能是.h文件中寄存器的定義和.c文件中的寄存器定義不否;在燒錄芯片的時候如果提示格式不符,打開Build Options/Linker/Advanced/COFF Output Format,選擇Default即可;如果使用匯編語言,Autoinit Nodel選項就需要選擇No Autoinitialization。
(2)一些資料上編寫的程序流程圖不一定完全合理,需要結(jié)合硬件電路調(diào)試。
4 結(jié)束語
CAN總線以其高速、高可靠性和高靈活性,在工業(yè)自動控制中得到越來越多的應用。取代原先單一功能、無集成CAN控制器模塊的單片機來說,目前使用的集成CAN模塊的DSP2407,是科技的發(fā)展帶動芯片模塊化、集成化的發(fā)展。本文介紹DSP2407與PCL-841CAN通信的實現(xiàn)方法,為CAN總線技術向更高層次發(fā)展奠定基礎。