0 引 言
眾所周知,,雖然目前8位單片機(jī)正逐漸被速度高,,性能強(qiáng)的16位或32位微處理器所取代,但8位單片機(jī)仍以其低廉的價(jià)格,、豐富的外圍芯片以及眾多的多功能產(chǎn)品而在低端應(yīng)用市場(chǎng)占據(jù)主流地位,。數(shù)字信號(hào)處理器(Digital Signal Processor,DSP)作為一種具有高速數(shù)字信號(hào)處理能力的新型單片機(jī),,在通信,、自動(dòng)控制、航天航空,、軍事,、醫(yī)療等領(lǐng)域廣泛應(yīng)用。在比較復(fù)雜的測(cè)控系統(tǒng)中,,如微機(jī)電動(dòng)機(jī)保護(hù)裝置,,要求在毫秒級(jí)的短時(shí)間內(nèi)對(duì)電動(dòng)機(jī)實(shí)現(xiàn)實(shí)時(shí)保護(hù)和測(cè)量,,所以對(duì)裝置硬件系統(tǒng)的實(shí)時(shí)數(shù)據(jù)處理能力要求較高,而傳統(tǒng)的基于單 CPU微處理器的方案己經(jīng)難以勝任,。因此,,這里采用數(shù)字信號(hào)處理器與單片機(jī)構(gòu)成的雙CPU結(jié)構(gòu),。由數(shù)字信號(hào)處理器完成多通道A/D轉(zhuǎn)換,、各種判據(jù)算法的運(yùn)算等功能,而單片機(jī)作為整個(gè)裝置的控制單元,,主要負(fù)責(zé)實(shí)時(shí)時(shí)鐘控制,、參數(shù)管理、人機(jī)接口及串并行通信接口的控制等,。這種雙CPU結(jié)構(gòu)充分發(fā)揮數(shù)字信號(hào)處理器與單片機(jī)各自的功能特點(diǎn),。其中,雙CPU系統(tǒng)之間的數(shù)據(jù)通信可采用雙口RAM,、串行通信等方式,,但這兩種方式存在只能實(shí)現(xiàn)點(diǎn)對(duì)點(diǎn)通信,通信速度慢,,可靠性差等缺點(diǎn),,不利于系統(tǒng)擴(kuò)展。因而研究通信速度快,,可靠性高,,實(shí)時(shí)性強(qiáng)的CAN總線通信系統(tǒng)具有重要意義。
1 CAN總線介紹
控制器局域網(wǎng)絡(luò)(Controller Area Network,,CAN)是一種串行多主站控制器局域網(wǎng)總線,。它具有很高的網(wǎng)絡(luò)安全性、通信可靠性和實(shí)時(shí)性,,而且簡(jiǎn)單實(shí)用,,網(wǎng)絡(luò)成本低,特別適用于環(huán)境溫度惡劣,、電磁輻射強(qiáng)和振動(dòng)大的工業(yè)環(huán)境,。CAN總線可有效支持分布式控制或?qū)崟r(shí)控制。該總線的通信介質(zhì)可以是雙絞線,、同軸電纜或光纖,。其主要特點(diǎn)如下:
(1)CAN總線為多主站總線,各節(jié)點(diǎn)可在任意時(shí)刻向網(wǎng)絡(luò)上的其他節(jié)點(diǎn)發(fā)送信息,,且不分主從,;
(2)CAN總線采用獨(dú)特的非破壞性總線仲裁技術(shù),高優(yōu)先級(jí)節(jié)點(diǎn)優(yōu)先傳送數(shù)據(jù),,故實(shí)時(shí)性好,;
(3)CAN總線具有點(diǎn)對(duì)點(diǎn)、一點(diǎn)對(duì)多點(diǎn)及全局廣播傳送數(shù)據(jù)的功能;
(4)CAN總線采用短幀結(jié)構(gòu),,每幀有效字節(jié)數(shù)最多為8個(gè),,數(shù)據(jù)傳輸時(shí)間短,并有CRC及其他校驗(yàn)措施,,數(shù)據(jù)出錯(cuò)率極低,;
(5)CAN總線上某一節(jié)點(diǎn)出現(xiàn)嚴(yán)重錯(cuò)誤時(shí),可自動(dòng)脫離總線,,而總線上的其他操作不受影響,;
(6)CAN總線系統(tǒng)擴(kuò)充時(shí),可直接將新節(jié)點(diǎn)掛在總線上,,因而走線少,,系統(tǒng)擴(kuò)充容易,改型靈活,;
(7)CAN總線的最大傳輸速率可達(dá)1 Mb/s,,直接通信距離最遠(yuǎn)可達(dá)10 km(速率在5 Kb/s以下);
(8)CAN總線上的節(jié)點(diǎn)數(shù)取決于總線驅(qū)動(dòng)電路,,在標(biāo)準(zhǔn)幀(11位報(bào)文標(biāo)識(shí)符)時(shí),,可達(dá)到110個(gè),而在擴(kuò)展幀(29位報(bào)文標(biāo)識(shí)符)時(shí),,個(gè)數(shù)不受限,。
2 單片機(jī)與數(shù)字信號(hào)處理器CAN通信系統(tǒng)接口電路設(shè)計(jì)
單片機(jī)與數(shù)字信號(hào)處理器種類(lèi)較多,在研究其通信系統(tǒng)時(shí),,以廣泛使用的MCS-51單片機(jī)以及適于運(yùn)動(dòng)控制的美國(guó)德州儀器(TI)公司TMS320LF2407為例進(jìn)行研究,。
2.1 單片機(jī)通信系統(tǒng)接口電路設(shè)計(jì)
MCS-51單片機(jī)組成CAN通信系統(tǒng)需要擴(kuò)展CAN控制器,本系統(tǒng)采用的CAN控制器是SJA1000,。SJA1000是PHILIPS公司生產(chǎn)的既支持CAN 2.0B,,又支持CAN 2.0A的CAN控制器。與SJA1000配套使用的CAN總線驅(qū)動(dòng)器是PCA82C250,,它是PHILIPS推出的CAN控制器和物理總線接口芯片,,可提供對(duì)總線的差分發(fā)送和接收。CAN模塊總線控制器,、總線驅(qū)動(dòng)器連接基本方法如圖1所示,。為增強(qiáng)CAN總線節(jié)點(diǎn)的抗干擾能力,SJA1000通過(guò)高速光耦6N137后與PCA82C250相連,,這樣就能很好地實(shí)現(xiàn)本系統(tǒng)與CAN總線的電氣隔離,。電源的隔離采用小功率電源隔離模塊。這些部分雖然增加了接口電路的復(fù)雜性,,但是卻提高了系統(tǒng)的穩(wěn)定性和安全性,。
TMS320LF2407內(nèi)部集成一個(gè)完全的CAN控制器,,但CAN控制器必須通過(guò)CAN驅(qū)動(dòng)芯片才能與其他CAN控制器進(jìn)行通信,這里采用 PCA82C250,。因?yàn)門(mén)MS320LF2407用3.3 V供電,,而PCA82C250用5 V供電。TMS320LF2407通過(guò)高速光耦6N137后與82C250相連,,不僅增強(qiáng)了CAN總線節(jié)點(diǎn)的抗干擾能力,,而且實(shí)現(xiàn)了電平轉(zhuǎn)換。
3 數(shù)字信號(hào)處理器與單片機(jī)通信系統(tǒng)軟件設(shè)計(jì)
數(shù)字信號(hào)處理器與單片機(jī)組成的CAN總線通信系統(tǒng)進(jìn)行數(shù)據(jù)通信時(shí),,應(yīng)約定通信協(xié)議,,如幀格式,、波特率,、標(biāo)識(shí)符等。各節(jié)點(diǎn)軟件設(shè)計(jì)均包括數(shù)據(jù)發(fā)送和接收子程序以及CAN總線控制器初始化子程序,。這里著重研究CAN總線控制器的初始化,。
3.1 單片機(jī)通信系統(tǒng)軟件設(shè)計(jì)
單片機(jī)CAN通信系統(tǒng)軟件設(shè)計(jì)主要是指SJA1000總線控制器的初始化程序設(shè)計(jì)。
CAN總線控制器初始化程序主要是通過(guò)對(duì)SJA1000寄存器寫(xiě)入相應(yīng)的控制字,,從而確定SJA1000的工作方式,。SJA1000需要初始化的寄存器有:模式寄存器MODE、時(shí)鐘分頻寄存器CDR,、接收代碼寄存器ACR,、接收屏蔽寄存器AMR、中斷使能寄存器IER,、總線定時(shí)寄存器BTR,、輸出控制寄存器OCR等。其中,,總線定時(shí)寄存器BTR的值決定CAN通信波特率,,而波特率正確與否,是數(shù)字信號(hào)處理器與單片機(jī)實(shí)現(xiàn)CAN通信的關(guān)鍵,。因?yàn)檫@些寄存器僅能在SJA1000復(fù)位期間進(jìn)行寫(xiě)訪問(wèn),,因此在對(duì)這些寄存器初始化之前,必須確保系統(tǒng)進(jìn)入復(fù)位狀態(tài),,在初始化后,,須清除復(fù)位請(qǐng)求位,使SJA1000返回正常運(yùn)行狀態(tài),,其初始化子程序如下:
3.2 數(shù)字信號(hào)處理器通信系統(tǒng)軟件設(shè)計(jì)
在使用數(shù)字信號(hào)處理器CAN控制器前必須對(duì)它的一些內(nèi)部寄存器進(jìn)行設(shè)置,,如對(duì)位定時(shí)器的設(shè)置及對(duì)郵箱進(jìn)行初始化。位定時(shí)器主要由CANBCR1和CANBCR2兩個(gè)寄存器組成,,配置對(duì)位定時(shí)器也就是設(shè)置這兩個(gè)寄存器,,其值決定了CcAN控制器的通信波特率,、同步跳轉(zhuǎn)寬度、采樣次數(shù)和重同步方式等,。對(duì)郵箱初始化主要是對(duì)郵箱進(jìn)行配置,,設(shè)置郵箱的標(biāo)識(shí)符以及接收濾波器的設(shè)置等。 CAN控制器初始化子程序如下:
4 結(jié) 語(yǔ)
單片機(jī)與數(shù)字信號(hào)處理器CAN總線通信系統(tǒng)實(shí)驗(yàn)過(guò)程中,,發(fā)送端采用查詢(xún)方式,,接收端采用中斷方式,利用鍵盤(pán)改變發(fā)送數(shù)據(jù),,接收端利用液晶顯示器實(shí)時(shí)顯示接收數(shù)據(jù),。反復(fù)試驗(yàn)表明,該系統(tǒng)工作穩(wěn)定性較高,;該系統(tǒng)硬件電路或軟件程序稍加改動(dòng)可用于單片機(jī)與數(shù)字信號(hào)處理器或數(shù)字信號(hào)處理器與數(shù)字信號(hào)處理器等雙 CPU或多CPU測(cè)控系統(tǒng)中,,且應(yīng)用前景廣闊。