詳解CAN總線信號傳輸位定時與位同步
CAN協(xié)議與其它現(xiàn)場總線協(xié)議的區(qū)別中有一個是:它使用同步數(shù)據(jù)傳輸而不是異步傳輸(面向字符)。這意味著傳輸性能得到更有效的發(fā)揮,但是另一方面,這需要更加復雜的位同步方法。
在面向字符的協(xié)議中的位同步實現(xiàn)起來很簡單,在接受每個字符的起始位時進行同步。但在同步傳輸協(xié)議中,只有一幀的開始才有一個起始位。這通常不足以使接收器的位采樣和發(fā)送器保持同步。為了使接收器在幀結束時也能正確采樣到接收的位流,就需要接收器不斷進行重新同步。重新同步表示在位流中每個有效的信號邊沿都可對接收信號的時鐘周期進行檢測。在信號邊沿間的最大時間周期內,發(fā)送和接受振蕩器之間最大可能的時間差必須在一個位間隔內的標稱采樣點之前和之后通過足夠的空閑時間(“相位緩沖段”)來補償。
由于CAN協(xié)議使用非破壞性的位總線仲裁和顯性應答位,信號從發(fā)送器傳輸?shù)浇邮掌髟俜祷氐浇邮掌鞅仨氃谝粋€位時間內完成。因此除了保留用于同步的時間外,還需要一個時間段(“傳輸延遲段”)對總線上的信號傳輸進行補償以及用于發(fā)送和接收節(jié)點的內部信號延遲。
一個位間隔的時間段的長度根據(jù)振蕩器周期,被定義為一個基本時間單位(時間份額)的倍數(shù)?;緯r間單位tq是表示同步機制時間分辨率的基本單位并且因為同步段而被引入到位時間中。同步段是位時間中CAN信號電平的邊沿將要產(chǎn)生的那一部分。在同步段之后產(chǎn)生的邊沿與同步段之間的距離稱為該邊沿的“相位誤差e”。
傳輸延遲段提供必要的時間用于處理網(wǎng)絡中的最大信號傳輸延遲。該時間段必須兩倍于兩個節(jié)點之間的最大信號傳輸延遲時間加上發(fā)送和接收節(jié)點的內部延遲時間之和。
需要區(qū)分兩種類型的同步:幀起始處的“硬同步”和幀中間的“重新同步”。在硬同步之后,位時間在sync段結束時重新啟動而不考慮相位的誤差。這樣硬同步強制產(chǎn)生硬同步的邊沿延伸到重新啟動的位時間的同步段中。重新同步導致位時間縮短或延長,從而使采樣點產(chǎn)生移位。
通過標稱采樣點之前和之后的相位緩沖段,在重新同步時為實際采樣點的移位保留了空閑時間。同步只發(fā)生在隱性位轉換到顯性位電平的邊沿。通過在每個時間量內對總線的實際電平進行采樣并和前一次采樣點的總線電平相比較可檢測出邊沿。如果在同步段內檢測到邊沿,那么該邊沿可實現(xiàn)同步,否則信號邊沿與同步段的結束之間的距離就是邊沿相位誤差(以時間量計算)。如果邊沿發(fā)生在同步段之前,相位誤差為負,否則為正。
如果相位誤差為正,相位緩沖段1將被延長。每次重新同步時,相位緩沖段縮短或延長的數(shù)量(“同步跳轉寬度”,SJW)的最大值受到限制,它可編程為1和Min{4,Phase_Seg1}之間的值。
當信號邊沿相位誤差的數(shù)值小于或等于SJW的編程值。硬同步和重新同步的值將是相同的。如果相位誤差的數(shù)量大于SJW,重新同步將無法完全補償相位誤差,這樣誤差(相位誤差-SJW)仍然存在。
在兩次采樣點之間只允許執(zhí)行一次同步。重新同步維持了邊沿和采樣點之間的最小距離,使總線電平的穩(wěn)定和濾除尖峰的時間小于傳輸段和相位段1時間之和。
一個位時間內不同的段可按照下面的限度進行編程:
Sync_Seg:1時間份額
Prop_Seg1:1...8或更多時間份額
Phase_Seg1:1...8或更多時間份額
Phase_Seg2:Max{Phase_Seg1,信息處理時間}
波特率預分頻器:1...32
SJW:1...4,但是不大于Min{4,Phase_Seg1}
在同步的時候,Phase_Seg1可以長于編程的標稱時間而Phase_Seg2可以短于標稱時間。
“數(shù)據(jù)處理時間”從采樣點之后開始,它是用于決定隨后發(fā)送的位電平的時間(例如,數(shù)據(jù)位、CRC位、填充位、錯誤標志或空閑)。該時間不能大于2個時間量。其長度為Phase_Seg2編程值的下限。在同步時Phase_Seg2可以小于數(shù)據(jù)處理時間,這不會影響總線的時序。
每個位時間的時間份額值必須設置為8到25的范圍內。
如果發(fā)送器的振蕩器比接收器的慢(a),用于同步的信號邊沿將延遲到達接收器。接收器可通過采樣點的移位進行補償??裳a償?shù)淖畲罄鄯e“延遲”(邊沿相位誤差)由相位段1所保留的時間確定。在重新同步過程中,如果相位誤差的值小于等于SJW,采樣點則根據(jù)所發(fā)生的邊沿相位誤差e進行移位,并因此恢復與當前位位置相關的采樣點的位置。
當發(fā)送器的振蕩器比接收器的快時(b),信號邊沿的到達比接收器預期的要早,因此下一個位時間間隔必須提前啟動。這通過縮短相位緩沖段2來實現(xiàn)。這種情況下,同步段被省略了,因此在重新同步之后,從信號邊沿到采樣點之間的距離和同步段到采樣點之間的距離相等(如果沒有檢測到邊沿)。在第一個例子中,該“提前”邊沿的相位誤差值小于SJW,因此可以實現(xiàn)完全補償。
相位緩沖段只是暫時改變,在下一個位時間里如果沒有檢測到相位誤差,它們將恢復為標稱值。接收器希望邊沿出現(xiàn)在同步段當中。
下面是應用于位同步的規(guī)則[ISO99-1]:
在一個位時間內的兩次采樣點之間只有一次同步。
只有在前一個采樣點檢測到的信號電平與后一個采樣點的信號電平不同時,才能使用從隱性到顯性的信號邊沿進行同步。短暫的干擾脈沖是不起作用的。
只要在總線空閑時出現(xiàn)一個隱性到顯性的信號邊沿,就會執(zhí)行一個“硬同步”(新的位時間間隔的起始)。
在幀間空間中(間歇場的第一位除外)隱性到顯性的信號邊沿會導致執(zhí)行一個硬同步。
【相關推薦文章】CAN總線的通信錯誤與處理措施