基于DSP的CAN總線多節(jié)點(diǎn)遠(yuǎn)程數(shù)據(jù)傳輸系統(tǒng)
針對(duì)在測量環(huán)境較差的場合中,要求測量系統(tǒng)體積小,數(shù)據(jù)處理性能高且遠(yuǎn)程傳輸穩(wěn)定的問題,提出了利用DSP 和CAN總線技術(shù)進(jìn)行遠(yuǎn)程數(shù)據(jù)采集傳輸?shù)姆桨?。系統(tǒng)通過CAN 控制器進(jìn)行遠(yuǎn)程多節(jié)點(diǎn)間的數(shù)據(jù)傳輸,與上位機(jī)采用DSP 的SCI串口進(jìn)行通信。介紹了系統(tǒng)的硬件接口設(shè)計(jì)和相應(yīng)的軟件設(shè)計(jì)。經(jīng)測試,系統(tǒng)實(shí)現(xiàn)了高效穩(wěn)定的數(shù)據(jù)傳輸處理,具有很高的實(shí)際應(yīng)用價(jià)值。
本文引用地址:http://cafeforensic.com/article/257328.htm1 引言
控制局域網(wǎng)CAN屬于現(xiàn)場總線范圍,是德國Bosch 公司從20 世紀(jì)80 年代初為解決現(xiàn)代汽車中眾多的控制與測試儀器之間的數(shù)據(jù)交換而開發(fā)的一種串行數(shù)據(jù)通信協(xié)議,它是一種多主總線,通信介質(zhì)可以是雙絞線、同軸電纜或光導(dǎo)纖維,通信速度可達(dá)1 M bit/ s. CAN 協(xié)議的最大特點(diǎn)是廢除了傳統(tǒng)的站地址編碼,而對(duì)通信數(shù)據(jù)塊進(jìn)行編碼。采用這種方法的優(yōu)點(diǎn)可使網(wǎng)絡(luò)內(nèi)的節(jié)點(diǎn)個(gè)數(shù)在理論上不受限制,數(shù)據(jù)塊的標(biāo)識(shí)碼可由11 位或29 位二進(jìn)制數(shù)組成,因此可以定義211或229個(gè)不同的數(shù)據(jù)塊,這種按數(shù)據(jù)塊編碼的方式,還可使不同的節(jié)點(diǎn)同時(shí)接收到相同的數(shù)據(jù),這一點(diǎn)在分布式控制系統(tǒng)中非常有用。
2 系統(tǒng)設(shè)計(jì)
在很多野外或測量環(huán)境比較差的地方,需要采用體積小,數(shù)據(jù)處理性能高,并且遠(yuǎn)程傳輸穩(wěn)定的數(shù)據(jù)處理傳輸系統(tǒng)。針對(duì)這種要求,設(shè)計(jì)了多節(jié)點(diǎn)遠(yuǎn)程數(shù)據(jù)采集傳輸系統(tǒng)。在遠(yuǎn)端將要檢測的各個(gè)節(jié)點(diǎn)的數(shù)據(jù)采集送到DSP進(jìn)行處理,通過DSP的CAN控制接口,將各節(jié)點(diǎn)數(shù)據(jù)傳輸到CAN 總線上,然后用DSP 的串行通信口與上位機(jī)進(jìn)行數(shù)據(jù)交換和控制操作。
系統(tǒng)采用了DSP 作為微處理器,充分利用DSP 器件的體積小,功耗低,數(shù)據(jù)處理功能強(qiáng)大的優(yōu)點(diǎn);同時(shí)采用CAN 總線來傳輸數(shù)據(jù),不僅結(jié)構(gòu)簡單(只有2 根線與外部連接) ,傳輸穩(wěn)定性高而且傳輸距離遠(yuǎn),尤其是可對(duì)網(wǎng)絡(luò)內(nèi)各個(gè)節(jié)點(diǎn)通信數(shù)據(jù)塊進(jìn)行獨(dú)立編碼,加大了數(shù)據(jù)接收的靈活性,擴(kuò)展了網(wǎng)絡(luò)節(jié)點(diǎn)數(shù)。系統(tǒng)在數(shù)據(jù)采集處理同時(shí),可以方便地與當(dāng)?shù)豍C 利用DSP 的SCI串行口進(jìn)行通信?;谝陨蟽?yōu)點(diǎn)的方案設(shè)計(jì)解決了在很多工作環(huán)境惡劣,檢測點(diǎn)較多的場合下的數(shù)據(jù)處理傳輸問題。
美國德州儀器(TI) 公司的DSP24xx 系列是TI 公司推出的低價(jià)格高性能的16 位定點(diǎn)DSP 芯片,是專為數(shù)字電機(jī)控制和其他控制應(yīng)用而設(shè)計(jì)的芯片。選用了TMS320LF2407 芯片作為數(shù)據(jù)處理芯片,與上位PC 機(jī)進(jìn)行數(shù)據(jù)傳輸。TMS320LF2407 自帶CAN控制器(符合CAN 總線210 協(xié)議) ,且可以通過設(shè)置內(nèi)部寄存器的自測試位來實(shí)現(xiàn)CAN 控制器的自發(fā)自收功能,為調(diào)試CAN 通訊的下位機(jī)提供了方便。基于芯片的此功能模塊,硬件設(shè)計(jì)只要通過CAN 驅(qū)動(dòng)器(電平轉(zhuǎn)換) 接到CAN 總線上,就可以與其他CAN 節(jié)點(diǎn)進(jìn)行通訊。DSP與上位機(jī)通信部分可以通過SCI 異步串行通信口來實(shí)現(xiàn)。系統(tǒng)結(jié)構(gòu)圖如圖1所示。
圖1 系統(tǒng)結(jié)構(gòu)圖
3 硬件設(shè)計(jì)
采用的DSP 芯片自帶了CAN 控制器模塊和SCI 串行通信口,但是在系統(tǒng)各節(jié)點(diǎn)的連接和與PC 機(jī)通信上存在電平驅(qū)動(dòng)轉(zhuǎn)換的問題。
CAN 驅(qū)動(dòng)芯片采用TI 公司的UC5350 驅(qū)動(dòng)芯片。UC5350控制器區(qū)域網(wǎng)轉(zhuǎn)換器專為采用CAN 通信的工業(yè)應(yīng)用而設(shè)計(jì),具有最高可達(dá)1 M bit/ s 的高速收發(fā)特性,并且至少可以連接110 個(gè)節(jié)點(diǎn)。圖2 為UC5350 與TMSLF2407 芯片的硬件連接圖。
需要注意的是,在CAN 傳輸網(wǎng)絡(luò)的兩個(gè)終端CAN 節(jié)點(diǎn)上,節(jié)點(diǎn)的CANH和CANL 兩根信號(hào)線之間一定要跨接1個(gè)120 Ω的電阻R2 ,這是為了消除傳輸中的回流干擾問題。
圖2 CAN 驅(qū)動(dòng)硬件圖
DSP 與上位機(jī)的通信部分,采用TMS320LF2407 的SCI 異步串口來完成。由于TMS320LF2407 的串行口輸入輸出均為TTL電平,而IBM- PC 機(jī)的串行口是按RS - 232 - C 標(biāo)準(zhǔn)設(shè)計(jì)的,必須經(jīng)過電平轉(zhuǎn)換才能實(shí)現(xiàn)兩者之間的通信。設(shè)計(jì)中采用了符合RS - 232 標(biāo)準(zhǔn)的驅(qū)動(dòng)芯片MAX232 進(jìn)行電平之間的轉(zhuǎn)換。圖3 為DSP 與PC 串口之間的接口硬件圖。
圖3 RS232 串口驅(qū)動(dòng)硬件圖
4 軟件設(shè)計(jì)
4. 1 CAN模塊間通信程序的設(shè)計(jì)
TMS320LF2407 的CAN 模塊是1個(gè)16位的外設(shè), 支持CAN2.0B 協(xié)議。CAN 模塊有6 個(gè)郵箱(MBOX0~MBOX5) ,其中2 個(gè)接收郵箱(MBOX0 , MBOX1) , 2 個(gè)發(fā)送郵箱(MBOX4 ,MBOX5) 和2 個(gè)可配置為接收或發(fā)送郵箱(MBOX2 ,MBOX3) ;有用于0 ,1 ,2 和3 號(hào)郵箱的本地屏蔽寄存器和15 個(gè)控制/ 狀態(tài)寄存器。對(duì)它的訪問分成控制/ 狀態(tài)寄存器的訪問和郵箱的RAM訪問。這些郵箱位于1個(gè)48 ×16位的RAM中,可被CPU或CAN 讀寫。
由于系統(tǒng)是1 個(gè)多節(jié)點(diǎn)的遠(yuǎn)程數(shù)據(jù)收發(fā)系統(tǒng),因此對(duì)各節(jié)點(diǎn)CAN模塊正確的初始化就顯得十分重要。初始化必須設(shè)置各節(jié)點(diǎn)中CAN模塊的通信波特率和同步跳轉(zhuǎn)寬度一致,且配置好節(jié)點(diǎn)模塊中的接收碼和屏蔽碼。再按照發(fā)送數(shù)據(jù)幀格式來配置郵箱ID 和信息控制寄存器。
4. 1. 1 初始化位定時(shí)器
CAN 通信中的波特率設(shè)定與系統(tǒng)控制狀態(tài)寄存器SCSR1、CAN 模塊中定時(shí)器BCR1 和BCR2 有關(guān)(其中BCR1 和BCR2 決定了CAN 控制器的通信波特率、同步跳轉(zhuǎn)寬度、采樣次數(shù)和重同步方式) 。在對(duì)位定時(shí)器進(jìn)行初始化時(shí),注意要先設(shè)置CAN模塊主控制寄存器MCR 中的改變配置請(qǐng)求位為1 ,即CCR = 1 ,并判斷全局狀態(tài)寄存器GSR 中的改變配置使能位CCE 是否為1 ,如為1 則可進(jìn)行下面的初始化工作。而在完成對(duì)位定時(shí)器的初始化后需將CCR 位清零以進(jìn)入正常工作模式; 在配置BCR1 和BCR2 時(shí)要按照如下公式對(duì)CAN 控制器波特率進(jìn)行設(shè)定:
波特率= ICLK/ [ ( BRP + 1) + BitTime ]
式中: ICLK為CAN 控制器的時(shí)鐘頻率,即在SCSR1 中充定的DSP 的系統(tǒng)頻率; BRP 為波特率預(yù)分頻位,決定著CAN 控制器的時(shí)間片TQ , TQ = ( BRP + 1) / ICLK; BitTime = ( TSEG1 + 1) +( TESG2 + 1) + 1 , TSEG1 為時(shí)間段1 ,可編程為3~16個(gè)TQ時(shí)間片。TSEG2 為時(shí)間段2 ,必須小于或等于時(shí)間段1。
評(píng)論