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