CAN控制器在深海測(cè)控中的應(yīng)用
VDD1和VSS1:邏輯電路5V電源和邏輯電路地。
XTAL:晶體振蕩器放大器輸入,外部晶體振蕩器信號(hào)由該腳輸入。
XTAL2:晶體振蕩器放大器輸出,當(dāng)使用外部晶體振蕩器信號(hào)時(shí),該輸出引腳必須開(kāi)路。
VDD3和VSS3:輸出驅(qū)動(dòng)5V電源和輸出驅(qū)動(dòng)地。
TX0和TX1:CAN輸出驅(qū)動(dòng)器0和1輸出到物理總線。
INT:中斷輸出,用于觸發(fā)微控制器中斷;內(nèi)部中斷寄存器的任何位置位,INT將低電平輸出;INT為開(kāi)環(huán)輸出;該引腳為低電平將電路從睡眠狀態(tài)激活。
RST:復(fù)位輸入,用于復(fù)位CAN接口(低電平有效)。
VDD2和VSS2:輸入比較器5V電源和輸入比較器地。
RX0和RX1:從物理CAN總線輸入到SJA1000的輸入比較器。
SJA1000與微處理器的接口非常簡(jiǎn)單,微處理器以訪問(wèn)外部存儲(chǔ)器的方式來(lái)訪問(wèn)SJA1000。由于SJA1000的內(nèi)部寄存器分布在連續(xù)的地址內(nèi),所以完全可以把SJA1000當(dāng)作外部RAM。在設(shè)計(jì)接口電路時(shí),SJA1000的片選地址應(yīng)與其他外部存儲(chǔ)器的片選在邏輯上無(wú)沖突。
3系統(tǒng)設(shè)計(jì)
SJA1000型CAN控制器兼容CAN2.0A和CAN2.0B二種規(guī)范。CAN2.0B具有二種不同的幀格式:標(biāo)準(zhǔn)幀和擴(kuò)展幀,前者為11位標(biāo)識(shí)符,后者為29位標(biāo)識(shí)符。前者的標(biāo)識(shí)符比后者的標(biāo)識(shí)符少2個(gè)字節(jié)。深海測(cè)控系統(tǒng)的CAN節(jié)點(diǎn)數(shù)量少,只有上位機(jī)節(jié)點(diǎn)和水下測(cè)控中心節(jié)點(diǎn),所以即使距離比較遠(yuǎn),對(duì)傳輸數(shù)據(jù)速度和可靠性的影響也不是很大。
3.1單片機(jī)與CAN控制器的硬件設(shè)計(jì)
圖2為C8051F020型單片機(jī)與SJA1000型控制器的硬件連接電路原理。SJA1000占用了0x8000-0x80FF的外部RAM空間。當(dāng)單片機(jī)訪問(wèn)以上空間時(shí)片選信號(hào)會(huì)選中SJA1000。
C8051F020有高低2個(gè)外部存儲(chǔ)器接口。因此,SJA1000的AD0-AD7連接到C8051F020的高端口P7口,CS連接到基址為0x8000的外部存儲(chǔ)器片選信號(hào)。當(dāng)C8051F020訪問(wèn)地址0x8000-0x80FF時(shí),CPU可對(duì)SJA1000執(zhí)行相應(yīng)的讀/寫(xiě)操作。SJA1000的RD、WR和ALE分別與C8051F020的對(duì)應(yīng)引腳相連,INT接C8051F020的INT0引腳,于是C8051F020可通過(guò)中斷方式訪問(wèn)SJA1000。SJA1000的復(fù)位信號(hào)RST為低電平有效。C8051F020的AD0-AD7口用于地址/數(shù)據(jù)的輸入/輸出,將其配置為漏極開(kāi)路方式,利用4.7kΩ上拉電阻器拉至5V。通過(guò)設(shè)置數(shù)字交叉開(kāi)關(guān),將C8051F020的外部中斷引腳配置到P2.7口。
CAN能夠使用多種物理介質(zhì),例如雙絞線和光纖等。該設(shè)計(jì)方案采用雙絞線。信號(hào)以差分電壓傳送,2條信號(hào)線為CAN_H和CAN_L,靜態(tài)時(shí)為2.5V,此時(shí)狀態(tài)表示邏輯"1",也叫做"隱性"。CAN_H比CAN_L高,表示邏輯"0",稱(chēng)為"顯性",此時(shí)CAN_H=3.5V,CAN_L=1.5V。TJA1050型CAN總線收發(fā)器是CAN協(xié)議控制器和物理總線之間的接口,CAN總線上二端節(jié)點(diǎn)須加60Ω電阻器和47nF電容器將信號(hào)吸收,以避免信號(hào)反射。為了增強(qiáng)CAN總線節(jié)點(diǎn)的抗干擾能力,SJA1000的TX1與RX1通過(guò)6N137型高速光耦后與TJA1050相連。這樣就很好地實(shí)現(xiàn)了總線上各CAN節(jié)點(diǎn)間的電氣隔離。其中,光耦部分電路的2個(gè)電源VCC和V_CAN必須完全隔離,否則采用光耦就是失去了意義。電源的完全隔離可采用小功率電源隔離模塊和通過(guò)帶多個(gè)5V隔離輸出的開(kāi)關(guān)電源模塊實(shí)現(xiàn)。
3.2軟件設(shè)計(jì)
通信協(xié)議采用"ID+命令+數(shù)據(jù)+校驗(yàn)"的形式,其中ID為網(wǎng)絡(luò)設(shè)備的標(biāo)識(shí)符,采用ID.18-ID.20。標(biāo)識(shí)符ID.21-ID.28作為固定命令,不參與驗(yàn)收濾波。數(shù)據(jù)表示通信的具體內(nèi)容。校驗(yàn)為1個(gè)字節(jié),采用校驗(yàn)和的形式,由于CAN總線本身具有15位CRC校驗(yàn),并且該系統(tǒng)節(jié)點(diǎn)數(shù)少,競(jìng)爭(zhēng)不會(huì)很激烈,通信可靠性比較高。
軟件設(shè)計(jì)思想為系統(tǒng)上電后C8051F020先對(duì)自身和SJA1000進(jìn)行初始化以確定工作主頻、波特率和輸出特性等,然后接收來(lái)自甲板上位機(jī)的控制命令,同時(shí)將獲取的采樣參數(shù)通過(guò)SJA1000傳送到CAN總線上或備份到Flash存儲(chǔ)器中;對(duì)SJA1000的初始化設(shè)計(jì)是重點(diǎn),也是難點(diǎn),必須對(duì)寫(xiě)入每個(gè)寄存器的內(nèi)容進(jìn)行仔細(xì)和全面考慮,否則系統(tǒng)將無(wú)法正常運(yùn)行??稍O(shè)上位機(jī)SJA1000適配卡的ACR為xx20,AMR為FF00。水下測(cè)控中心SJA1000的ACR為xx40,AMR為FF00。
評(píng)論