基于dsPIC30F6014的CAN節(jié)點設(shè)計
引言
CAN,全稱為“Controller Area Network”,即控制器局域網(wǎng),是國際上應(yīng)用最廣泛的現(xiàn)場總線之一。作為一種技術(shù)先進(jìn)、可靠性高、功能完善、成本合理的遠(yuǎn)程網(wǎng)絡(luò)通訊控制方式,CAN-bus已被廣泛應(yīng)用到各個自動化控制系統(tǒng)中,具有不可比擬的優(yōu)越性。
新型16位dsPIC30F6014數(shù)字信號控制器結(jié)合單片機(jī)的控制優(yōu)點及數(shù)字信號處理器(DSP)的高速運算特性,為嵌入式系統(tǒng)提供了單一芯片解決方案。
本篇論文以CAN協(xié)議為基礎(chǔ),結(jié)合dsPIC30F6014的突出性能,在設(shè)計通訊接口過程中,提出了基于dsPIC30F6014數(shù)字信號控制器的CAN節(jié)點設(shè)計方法。
1 dsPIC30F6014數(shù)字信號控制器與CAN總線
1.1 dsPIC30F6014數(shù)字信號控制器特點
dsPIC30F6014數(shù)字信號控制器(DSC)是單片嵌入式控制器,它集成了單片機(jī)(MCU)的控制功能以及數(shù)字信號處理器(DSP)的計算能力和數(shù)據(jù)吞吐能力,運算速度可達(dá)20和30 MIPS,配備自編程閃存,并能在工業(yè)級溫度和擴(kuò)展級溫度范圍內(nèi)工作。以16位單片機(jī)為核心的 dsPIC30F6014數(shù)字信號控制器不僅具有功能強(qiáng)大的外圍設(shè)備和快速中斷處理能力,又融合了可管理高速計算活動的數(shù)字信號處理器功能。dsPIC30F CPU 模塊采用16 位(數(shù)據(jù))改良的哈佛架構(gòu),并帶有增強(qiáng)型指令集包含對DSP 的有力支持。CPU 擁有24 位指令字,指令字帶有長度可變的操作碼字段。 程序計數(shù)器(PC)為24位寬,可以尋址高達(dá)4M × 24 位的用戶程序存儲器空間。 單周期指令預(yù)取機(jī)制用來幫助維持吞吐量并提供可預(yù)測的執(zhí)行。配備144K字節(jié)增強(qiáng)型閃存及8K字節(jié)靜態(tài)RAM,8K字節(jié)EEPROM,能支持大型的復(fù)雜應(yīng)用。dsPIC系列產(chǎn)品與現(xiàn)有嵌入式系統(tǒng)不同,系統(tǒng)集成了振蕩器,低電壓檢測,看門狗定時器,產(chǎn)品無需使用額外的元件,可降低主板面積和系統(tǒng)成本,為嵌入式系統(tǒng)提供了單一芯片解決方案。此外還具備一系列片上功能,包括I/O端口、定時器、輸入捕捉、輸出比較、UART、12位A/D轉(zhuǎn)換器、SPI接口、I2C接口及CAN通信等模塊。結(jié)構(gòu)圖如圖1所示:
這些特性使之成為需要更高精確度、更快轉(zhuǎn)速或無傳感器控制的電機(jī)控制應(yīng)用領(lǐng)域如非傳感無刷直流電機(jī)、磁阻轉(zhuǎn)換和感應(yīng)電機(jī)的理想解決方案,另外還可以應(yīng)用于因特網(wǎng)接入設(shè)備和汽車產(chǎn)品;生物特徵檢測保護(hù)--如指紋識別;不間斷電源、電源管理和話音開關(guān)(話音識別系統(tǒng))等領(lǐng)域。
1.2 CAN總線技術(shù)特點
CAN是主要用于各種過程(設(shè)備)監(jiān)測及控制的一種網(wǎng)絡(luò)。最初是德國BOSCH公司為汽車的監(jiān)測、控制系統(tǒng)而設(shè)計的。由于CAN具有卓越的特性和極高的可靠性,特別適合于工業(yè)過程中監(jiān)控設(shè)備的互連,因此,越來越受到工業(yè)界的重視。具體來說,CAN具有如下特性:
(1) CAN可以多主方式工作,網(wǎng)絡(luò)上任意一個節(jié)點均可以在任意時刻主動地向網(wǎng)絡(luò)上的其他節(jié)點發(fā)送信息,而不分主從,通信方式靈活;
(2) CAN可以點對點、點對多點(成組)及全局廣播方式傳送接收數(shù)據(jù);
(3) CAN網(wǎng)絡(luò)上的節(jié)點信息可分成不同的優(yōu)先級,可以滿足不同的實時要求;
(4) CAN采用非破壞性總線仲載技術(shù)。當(dāng)兩個節(jié)點同時向網(wǎng)絡(luò)上發(fā)送數(shù)據(jù)時,優(yōu)先級低的點主動停止數(shù)據(jù)發(fā)送,而優(yōu)先級高的節(jié)點可不受影響地繼續(xù)傳輸數(shù)據(jù),大大地節(jié)省了總線仲載沖突時間,在網(wǎng)絡(luò)負(fù)載很重的情況下也不會出現(xiàn)網(wǎng)絡(luò)癱瘓;
(5) CAN的直接通信距離最大可達(dá)10km(速率小于5kbps),最高通信速率可達(dá)1Mkbps(此時距離最長為40m)。
2 CAN節(jié)點設(shè)計
2.1 CAN節(jié)點硬件設(shè)計
圖2所示為CAN總線網(wǎng)絡(luò)示例。圖中給出了三種CAN網(wǎng)絡(luò)實現(xiàn)方式:微控制器+CAN控制器+CAN收發(fā)器;集成CAN控制器的微控制器+CAN收發(fā)器;CAN的串行I/O器件+CAN收發(fā)器。其中節(jié)點1由MICROCHIP公司的dsPIC30F6014集成CAN控制器+MCP2551CAN收發(fā)器構(gòu)成;節(jié)點2由MICROCHIP公司的PIC單片機(jī)+SPI接口的MCP2550串行CAN控制器+MCP2551CAN收發(fā)器構(gòu)成;PC機(jī)的CAN節(jié)點由Philips公司的SJA1000CAN控制器+PCA82C250CAN收發(fā)器構(gòu)成。本文的研究和試驗結(jié)果就是在這一網(wǎng)絡(luò)框架下完成的。
顯然dsPIC30F6014只需加上CAN總線收發(fā)電路就可掛接到CAN通信網(wǎng)絡(luò)上,大大簡化了通信系統(tǒng)的設(shè)計,同時可減少通信節(jié)點受到干擾的概率。CAN模塊通過CAN控制器接口芯片MCP2551連接到物理總線上。MCP2551是一個可容錯的高速CAN器件,可作為CAN協(xié)議控制器和物理總線接口。MCP2551 可為CAN 協(xié)議控制器提供差分收發(fā)能力,它完全符合ISO-11898標(biāo)準(zhǔn),包括能滿足24V 電壓要求。它的工作速率高達(dá)1 Mb/s。
2.2 CAN節(jié)點軟件設(shè)計
CAN總線的3層結(jié)構(gòu)模型為: 物理層、數(shù)據(jù)鏈路層和應(yīng)用層。系統(tǒng)的開發(fā)主要在應(yīng)用層軟件的設(shè)計上,CAN總線節(jié)點的軟件設(shè)計主要包括三大部分:CAN節(jié)點初始化、報文發(fā)送和報文接收。初始化程序設(shè)計對于CAN總線節(jié)點的正常工作相當(dāng)重要。它主要包括工作方式的設(shè)置、接收屏蔽寄存器和接收代碼寄存器的設(shè)置、總線定時器的設(shè)置和中斷允許寄存器的設(shè)置。MICROCHIP公司提為開發(fā)者提供了豐富的開發(fā)工具和應(yīng)用程序庫,使得開發(fā)代碼效率大大提高。由于CAN 協(xié)議沒有規(guī)定信息標(biāo)識符的分配,因此可以根據(jù)不同應(yīng)用使用不同的方法,所以在設(shè)計一個基于CAN 的通訊系統(tǒng)時確定CAN 標(biāo)識符的分配非常重要。標(biāo)識符的分配和定位也是較高層解決手段的其中一個主要的項目。當(dāng)前較流行的CAN應(yīng)用層協(xié)議有 CANOpen協(xié)議DeviceNet協(xié)議。DeviceNet協(xié)議適合于工廠自動化控制,CANOpen協(xié)議適合于所有機(jī)械的嵌入式網(wǎng)絡(luò)。對于小型網(wǎng)絡(luò)(圖2所示)Modbus 協(xié)議是一個不錯的解決發(fā)案。Modbus 協(xié)議是應(yīng)用于電子控制器上的一種通用語言,通過此協(xié)議,控制器相互之間、控制器經(jīng)由網(wǎng)絡(luò)(例如以太網(wǎng))和其它設(shè)備之間可以通信。它已經(jīng)成為一個通用工業(yè)標(biāo)準(zhǔn)。有了它不同廠商生產(chǎn)的控制設(shè)備可以連成工業(yè)網(wǎng)絡(luò)進(jìn)行集中監(jiān)控。 Modbus 協(xié)議支持主/從通訊方式同時也支持使用對等技術(shù)通訊。因此Modbus協(xié)議不僅能夠支持RS232、RS485 網(wǎng)絡(luò)也能夠充分發(fā)揮CAN-bus 網(wǎng)絡(luò)的性能與通訊效率。
3 系統(tǒng)應(yīng)用中應(yīng)注意的問題
在實際運行中, 經(jīng)常會遇到CAN總線不通和數(shù)據(jù)傳輸過程中丟幀現(xiàn)象,糾其原因主要有以下幾方面:
(1)為了進(jìn)一步提高抗干擾措施, 在CAN控制器和收發(fā)器之間應(yīng)使用由高速隔離器件如6N137 構(gòu)成的隔離電路,同時采用DC-DC模塊將電源隔離,增強(qiáng)抗電磁干擾能力,保護(hù)系統(tǒng)電路不受網(wǎng)絡(luò)影響。
(2) 總線兩端的2個120歐姆的電阻, 對于匹配總線阻抗, 起著相當(dāng)重要的作用。若忽略掉它們,會使數(shù)據(jù)通信的抗干擾性及可靠性大大降低, 甚至無法通訊。
(3) 在軟件設(shè)計時, CAN 總線定時器的設(shè)置非常關(guān)鍵, CAN 總線上的所有控制器必須有相同的波特率和位長度。然而,不同的控制器并不要求使用相同的主振蕩器時鐘。如果各個控制器的時鐘頻率不同,必須通過調(diào)節(jié)各個段的時間份額數(shù)調(diào)節(jié)波特率。下面是時間段編程的一些要求:
? 傳播段+ 相位緩沖段1> = 相位緩沖段2
? 相位緩沖段2 > 同步跳轉(zhuǎn)寬度
通常,位的采樣應(yīng)當(dāng)發(fā)生在位時間的60-70% 左右,取決于系統(tǒng)參數(shù)。
結(jié)語
本文的創(chuàng)新觀點在于:詳細(xì)介紹了dsPIC30F6014數(shù)字信號控制器CAN節(jié)點實現(xiàn)方案。研究和試驗結(jié)果表明利用dsPIC30F6014數(shù)字信號控制器構(gòu)成的CAN節(jié)點具有許多優(yōu)良的性能,并能充分發(fā)揮節(jié)點的功能,為嵌入式系統(tǒng)CAN節(jié)點設(shè)計提供了一種新型實用方案。
評論