隔離型CAN收發(fā)器的延時(shí)分析
CAN總線采用了多主競(jìng)爭(zhēng)式總線結(jié)構(gòu),采用非破壞性仲裁技術(shù),當(dāng)兩個(gè)節(jié)點(diǎn)同時(shí)向總線傳輸數(shù)據(jù)時(shí),優(yōu)先級(jí)低的節(jié)點(diǎn)主動(dòng)停止數(shù)據(jù)發(fā)送,而優(yōu)先級(jí)高的節(jié)點(diǎn)可不受影響繼續(xù)傳輸數(shù)據(jù),由于這些節(jié)點(diǎn)對(duì)每一個(gè)位進(jìn)行監(jiān)聽(tīng),并且必須服從于更高優(yōu)先級(jí)的消息,因此它們的響應(yīng)時(shí)間必須快到能夠在破壞下一個(gè)比特以前終止傳輸。
以下通過(guò)實(shí)際例子對(duì)總線狀態(tài)進(jìn)行分析。由于實(shí)際組網(wǎng)中,節(jié)點(diǎn)之間通過(guò)線纜連接,數(shù)據(jù)的發(fā)送、接收及傳輸都會(huì)有一定的延時(shí)。CAN系統(tǒng)設(shè)計(jì)時(shí),就需要考慮延時(shí)對(duì)系統(tǒng)的影響。現(xiàn)假設(shè)一個(gè)CAN網(wǎng)絡(luò),只有A、B兩個(gè)節(jié)點(diǎn),A、B之間的總單向延時(shí)為200ns,即為A到B,或B到A的發(fā)送、傳輸及接收延時(shí)的總和。信號(hào)傳輸速率為1Mbps,即位時(shí)間為1000ns。
如圖1所示,節(jié)點(diǎn)A在時(shí)間t=0時(shí)開(kāi)始發(fā)送一條消息,從而在總線(2)上傳輸一個(gè)顯性位。有可能出現(xiàn)的情況是,節(jié)點(diǎn)B剛好在節(jié)點(diǎn)A的信號(hào)被接收到以前(3)開(kāi)始發(fā)送,也即時(shí)間t=199ns。當(dāng)時(shí)間t=1000ns,節(jié)點(diǎn)A第二位開(kāi)始之初,在節(jié)點(diǎn)A轉(zhuǎn)到隱性狀態(tài)以前(4)兩個(gè)節(jié)點(diǎn)都沒(méi)意識(shí)到對(duì)方的有效性。然后,節(jié)點(diǎn)B在時(shí)間t=1199ns的第二位開(kāi)始之初(6),轉(zhuǎn)到隱性狀態(tài)。另一個(gè)單向延遲以后,該隱性電平才到達(dá)節(jié)點(diǎn)A,時(shí)間 t=1399ns(8)。只有在這時(shí),節(jié)點(diǎn)A才能讀取RXD信號(hào),并且可以確定其代表總線的真實(shí)狀態(tài)。
從分析可知,只有通過(guò)兩倍單向延時(shí),節(jié)點(diǎn)A才能夠判別總線的真實(shí)狀態(tài)。由于CAN協(xié)議固有的逐位仲裁機(jī)制,這種雙向延遲必須較好地位于一個(gè)位時(shí)間預(yù)算范圍內(nèi)。否則,在第二個(gè)位仲裁完成以前,節(jié)點(diǎn)A就可能開(kāi)始傳送其第三個(gè)位。
為保證節(jié)點(diǎn)每位采樣到的總線電平都是總線的真實(shí)狀態(tài),CAN的每一個(gè)位時(shí)間都定義一段時(shí)間,用于補(bǔ)償雙向延時(shí),即PROP_SEG傳播段??倐鬏斞訒r(shí)必須小于PROP_SEG的設(shè)定時(shí)間,而采樣點(diǎn)在PROP_SEG之后,保證每個(gè)節(jié)點(diǎn)在對(duì)總線數(shù)據(jù)采樣以前都確實(shí)等待足夠長(zhǎng)的時(shí)間,使采樣數(shù)據(jù)正確。(PROP_SEG為位時(shí)間配置的范疇,超出本文范圍,如需要更深入的了解,請(qǐng)查閱相關(guān)的文獻(xiàn)。)
CAN 標(biāo)準(zhǔn)規(guī)定,線纜的傳輸延遲為5ns/m,1Mbps信號(hào)速率時(shí)最大線纜長(zhǎng)度為40m。通信速率為1Mbps,即位時(shí)間為1000ns,PROP_SEG設(shè)定為650ns時(shí),由于線纜本身具有200ns的單向延時(shí)(即400ns的雙向延時(shí)),從而使收發(fā)器和相關(guān)電路的總延遲只剩約250ns。也就是說(shuō),如果CAN底層硬件的傳輸延時(shí)只要小于250ns,線纜長(zhǎng)度即可達(dá)到40m。
CAN 收發(fā)器的制造商通常規(guī)定“循環(huán)延時(shí)”,其包括驅(qū)動(dòng)器和接收機(jī)延遲。由于雙向計(jì)算中涉及兩個(gè)收發(fā)器,因此每個(gè)收發(fā)器都應(yīng)有125ns或者更低的循環(huán)延時(shí),以支持1Mbps信號(hào)速率下40m的總線長(zhǎng)度。如果收發(fā)器電路包括更多的器件,如隔離、電平轉(zhuǎn)換或保護(hù)組件,這些器件產(chǎn)生的延時(shí)也必須包括在總延時(shí)預(yù)算中。
在實(shí)際使用中,為了提高CAN節(jié)點(diǎn)的可靠性,CAN底層硬件通常會(huì)使用隔離設(shè)計(jì)。常用解決方案有采用光耦+CAN收發(fā)器,如6N137+TJA1051,圖2;或者直接使用隔離收發(fā)器,如CTM1051KT,圖3。
若采用圖2的隔離方案,光耦6N137具有典型的60ns單向延時(shí),而全部雙向信號(hào)必須經(jīng)過(guò)4個(gè)光耦,加上單個(gè)TJA1051約120ns的典型循環(huán)路延時(shí),總的循環(huán)延時(shí)達(dá)到480ns。在位時(shí)間配置不變的情況下, 1Mbps速率實(shí)際只能傳輸約17m的距離,這樣大大地縮短了CAN系統(tǒng)的容許線纜長(zhǎng)度。
而采用圖3所示的隔離方案,單個(gè)CTM1051KT的循環(huán)延時(shí)典型為130ns,與單個(gè)TJA1051的循環(huán)延時(shí)基本一致,在位時(shí)間配置不變的情況下,CTM1051KT自帶隔離基本不會(huì)對(duì)容許線纜長(zhǎng)度造成影響,完全滿足1Mbps速率下約40m的傳輸距離。
若想從硬件底層著手,在通信速率不變的情況下,增加CAN通信的距離,必須了解CAN通信的原理及信號(hào)線傳輸?shù)脑?,盡量減小CAN信號(hào)傳輸?shù)难訒r(shí)時(shí)間,從而提高實(shí)際通信的距離。