新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > CAN總線基礎(chǔ)知識(shí)(三)

CAN總線基礎(chǔ)知識(shí)(三)

作者: 時(shí)間:2016-12-15 來(lái)源:網(wǎng)絡(luò) 收藏

1.7 優(yōu)先級(jí)的決定

在總線空閑狀態(tài),最先開(kāi)始發(fā)送消息的單元獲得發(fā)送權(quán)。

多個(gè)單元同時(shí)開(kāi)始發(fā)送時(shí),各發(fā)送單元從仲裁域的第一位開(kāi)始進(jìn)行仲裁。連續(xù)輸出顯性電平最多的單元可繼續(xù)發(fā)送。丟失競(jìng)爭(zhēng)的單元在下一bit進(jìn)入接收操作。

仲裁的過(guò)程如圖27所示。

(1)數(shù)據(jù)幀和遙控幀的優(yōu)先級(jí)

具有相同 ID 的數(shù)據(jù)幀和遙控幀在總線上競(jìng)爭(zhēng)時(shí),仲裁段的最后一位(RTR)為顯性位的數(shù)據(jù)幀具有優(yōu)先權(quán),可繼續(xù)發(fā)送。

數(shù)據(jù)幀和遙控幀的仲裁過(guò)程如圖28所示。

(2)標(biāo)準(zhǔn)格式和擴(kuò)展格式的優(yōu)先級(jí)

標(biāo)準(zhǔn)格式 ID 與具有相同ID 的遙控幀或者擴(kuò)展格式的數(shù)據(jù)幀在總線上競(jìng)爭(zhēng)時(shí),標(biāo)準(zhǔn)格式的RTR 位為顯性位的具有優(yōu)先權(quán),可繼續(xù)發(fā)送。

標(biāo)準(zhǔn)格式和擴(kuò)展格式的仲裁過(guò)程如圖29所示。

1.8 位填充

位填充是一種周期性重同步收/發(fā)操作的功能,為了防止接收節(jié)點(diǎn)間時(shí)序由于累積而導(dǎo)致的錯(cuò)誤,如果5個(gè)bit持續(xù)了同樣的電平,則添加1個(gè)bit的反向數(shù)據(jù)位。

如圖30顯示的位填充機(jī)制:

(1)發(fā)送單元的操作

在發(fā)送數(shù)據(jù)幀和遙控幀的時(shí)候,SOF-CRC段間的數(shù)據(jù),相同電平如果持續(xù)5bit,在下一bit(第6bit)則要插入1bit與前5bit反向的電平。

(2)接收單元的操作

在接收數(shù)據(jù)幀和遙控幀的時(shí)候,SOF-CRC段間的數(shù)據(jù),相同電平如果持續(xù)5bit,需要?jiǎng)h除下一bit(第6bit)再接收。如果這第6bit的電平與前5bit相同,則被視為錯(cuò)誤,且發(fā)送錯(cuò)誤幀。

1.9 錯(cuò)誤的種類

有5種類型的錯(cuò)誤,可能有2個(gè)或更多的錯(cuò)誤同時(shí)發(fā)生:

  • 位錯(cuò)誤
  • 填充錯(cuò)誤
  • CRC錯(cuò)誤
  • 格式錯(cuò)誤
  • ACK錯(cuò)誤

表8列出了這些錯(cuò)誤的種類、內(nèi)容、錯(cuò)誤檢測(cè)幀和檢測(cè)單元。

  • 位錯(cuò)誤由向總線上輸出數(shù)據(jù)幀、遙控幀、錯(cuò)誤幀、過(guò)載幀的單元和輸出ACK的單元、輸出錯(cuò)誤的單元來(lái)檢測(cè)。
  • 在仲裁段輸出隱性電平,但檢測(cè)出顯性電平時(shí),將被視為仲裁失利,而不是位錯(cuò)誤。
  • 在仲裁段作為填充位輸出隱性電平時(shí),但檢測(cè)出顯性電平時(shí),將不視為位錯(cuò)誤,而是填充錯(cuò)誤。
  • 發(fā)送單元在ACK 段輸出隱性電平,但檢測(cè)到顯性電平時(shí),將被判斷為其它單元的ACK 應(yīng)答,而非位錯(cuò)誤。
  • 輸出被動(dòng)錯(cuò)誤標(biāo)志(6 個(gè)位隱性位)但檢測(cè)出顯性電平時(shí),將遵從錯(cuò)誤標(biāo)志的結(jié)束條件,等待檢測(cè)出連續(xù)相同6 個(gè)位的值(顯性或隱性),并不視為位錯(cuò)誤。

(2) 格式錯(cuò)誤

  • 即使接收單元檢測(cè)出EOF(7 個(gè)位的隱性位)的最后一位(第8 個(gè)位)為顯性電平,也不視為格式錯(cuò)誤。
  • 即使接收單元檢測(cè)出數(shù)據(jù)長(zhǎng)度碼(DLC)中9∼15 的值時(shí),也不視為格式錯(cuò)誤。

1.10 錯(cuò)誤幀的輸出時(shí)序

檢測(cè)到發(fā)生錯(cuò)誤的單元輸出一個(gè)錯(cuò)誤標(biāo)志,以通知其它單元。

處于主動(dòng)錯(cuò)誤狀態(tài)的單元輸出的錯(cuò)誤標(biāo)志為主動(dòng)錯(cuò)誤標(biāo)志;處于被動(dòng)錯(cuò)誤狀態(tài)的單元輸出的錯(cuò)誤標(biāo)志為被動(dòng)錯(cuò)誤標(biāo)志。

發(fā)送單元發(fā)送完錯(cuò)誤幀之后,將再次發(fā)送數(shù)據(jù)幀或遙控幀。

錯(cuò)誤標(biāo)志輸出時(shí)序如表9:

1.11 位時(shí)序

在沒(méi)有重新同步情況下,發(fā)送單元每秒傳輸?shù)奈粩?shù)稱之為位速率。1位由下面4個(gè)段組成。

  • 同步段(SS)
  • 傳播時(shí)間段(PTS)
  • 相位緩沖段1(PBS1)
  • 相位緩沖段2(PBS2)

這些段又由稱之為Time Quantum(以下稱為Tq)的最小時(shí)間單位構(gòu)成。

1位分為4個(gè)段,每個(gè)段由若干個(gè)Tq構(gòu)成,這稱為位時(shí)序。

1位由多少個(gè)Tq構(gòu)成、每個(gè)段由多少個(gè)Tq構(gòu)成等是可以設(shè)定的。通過(guò)設(shè)置bit時(shí)序。使得可以設(shè)定一個(gè)采樣點(diǎn)以使總線上多個(gè)單元可同時(shí)采樣,所謂采樣點(diǎn)就是在這一時(shí)刻總線上的電平被鎖存,這個(gè)鎖存的電平作為位的值。采樣點(diǎn)的位置在PBS1的結(jié)束處。

表10描述了各段的作用和Tq 數(shù)。1個(gè)位的構(gòu)成如圖31所示。

段名稱

段的作用

Tq數(shù)

同步段(SS)

多個(gè)連接在總線上的單元通過(guò)此段實(shí)現(xiàn)時(shí)序的定時(shí)調(diào)整,以便同步進(jìn)行接收和發(fā)送的工作。

隱性電平到顯性電平或顯性電平到隱性電平變化的邊沿被期望出現(xiàn)在本段。

1

8-25

傳播時(shí)間段(PTS)

用于吸收網(wǎng)絡(luò)上的物理延遲的段。包括發(fā)送單元的輸出延遲、總線上信號(hào)的傳播延遲、接收單元的輸入延遲。

這個(gè)段的時(shí)間是以上延遲時(shí)間累加和的兩倍。

1-8

相位緩沖段1(PBS1)

當(dāng)信號(hào)邊沿不能出現(xiàn)在SS 段時(shí),此段用來(lái)矯正誤差。

由于各單元以各自獨(dú)立的時(shí)鐘來(lái)工作,細(xì)微的時(shí)鐘誤差都會(huì)累積起來(lái),PBS 段可用于吸收此誤差。

為了吸收一個(gè)時(shí)鐘誤差,在SJW設(shè)置的范圍內(nèi)增減PBS1和PBS2,PBS1和PBS2越大,允許誤差越大,但是通訊速度會(huì)降低。

1-8

相位緩沖段2(PBS2)

PBS1或IPT中較大者(見(jiàn)注1和2)

重新同步跳轉(zhuǎn)寬度(SJW)

因時(shí)鐘頻率偏差、傳送延遲等原因,某些單元可能會(huì)失去同步。SJW是所能校正的最大失去同步的寬度。

1-4*PBS1

注1:IPT代表信息處理時(shí)間,是以采樣點(diǎn)作為起始的時(shí)間段,用于計(jì)算后續(xù)位的位電平。這是硬件在一個(gè)采樣點(diǎn)后立刻改變位的電平所必須要的。這個(gè)時(shí)間等于或小于2Tq,。

注2:因?yàn)椴蓸狱c(diǎn)是處于PBS1結(jié)束處,所以IPT和PBS2重疊。當(dāng)IPT = 2Tq時(shí),PBS2不可能選為1,因此,PBS2必須是2到8Tq。

注3:重新同步的結(jié)果使相位緩沖段1增長(zhǎng),或使相位緩沖段2 縮短。相位緩沖段加長(zhǎng)或縮短的數(shù)量有一個(gè)上限,此上限由SJW(重新同步跳轉(zhuǎn)寬度)給定。重新同步跳轉(zhuǎn)寬度應(yīng)設(shè)置于1和最小值之間(此最小值為4*PBS1)。

可以從一位值轉(zhuǎn)換到另一位值的過(guò)渡過(guò)程得到時(shí)鐘信息。這里有一個(gè)屬性,即:只有后續(xù)位的一固定最大數(shù)值才具有相同的數(shù)值。這個(gè)屬性使總線單元在幀期間重新同步于位流成為可能??捎糜谥匦峦降膬蓚€(gè)過(guò)渡過(guò)程之間的最大的長(zhǎng)度為29個(gè)位時(shí)間。

1.12 同步是如何獲得的?

CAN總線的通訊是采用NRZ(Non-Return to Zero,非歸0)碼,數(shù)據(jù)本身并不攜帶時(shí)鐘信息,也即在每一位的開(kāi)始或結(jié)束沒(méi)有同步信號(hào),發(fā)送單元以位時(shí)序同步的方式開(kāi)始發(fā)送幀數(shù)據(jù),接收單元根據(jù)總線電平的變化進(jìn)行同步并進(jìn)行接收工作。

然而,發(fā)送器和接收器之間由于彼此的時(shí)鐘誤差或傳輸路徑的相位誤差可能會(huì)失去同步關(guān)系,因此接收單元在接收幀的時(shí)候,必須通過(guò)硬件同步或重新同步調(diào)整它的操作時(shí)序。

1.13 硬件同步

在總線空閑狀態(tài)時(shí),接收單元檢測(cè)到SOF,就會(huì)執(zhí)行這個(gè)同步調(diào)整過(guò)程。“隱式”電平跳變到“顯式”電平的邊緣的時(shí)間點(diǎn)被認(rèn)為是SS,而不管SJW的值

圖32顯示了硬件同步機(jī)制。

  • 如果沿出現(xiàn)在SS里,沿的相位誤差e=0;
  • 如果沿位于采集點(diǎn)(PBS1結(jié)束之前)之前,e>0;
  • 如果沿位于采集點(diǎn)之后,e<0;

1.14 重新同步機(jī)制

在接收過(guò)程中檢測(cè)到總線電平發(fā)生了改變時(shí)執(zhí)行重新同步操作。

每當(dāng)檢測(cè)到一個(gè)邊沿(總線電平的改變),收發(fā)單元根據(jù)SJW值通過(guò)增加PBS1段或減少PBS2段,來(lái)調(diào)整同步。但,如果發(fā)生了超出SJW值的誤差時(shí),最大調(diào)整量不能超過(guò)SJW值。

圖33顯示了重新同步機(jī)制。

1.15 調(diào)整同步的規(guī)則

硬件同步和再同步的執(zhí)行遵從如下規(guī)則:

1) 在1個(gè)位時(shí)間里(或者說(shuō)在2個(gè)采樣點(diǎn)之間),只允許一個(gè)同步(或者說(shuō)只進(jìn)行一次同步調(diào)整)。

2) 只有當(dāng)采樣點(diǎn)之前的總線電平和邊沿后的總線電平不同時(shí),該邊沿才能用于調(diào)整同步。

3) 如果出現(xiàn)隱性電平到顯性電平變化的邊沿,且條件(1)和(2)滿足,將進(jìn)行同步。

4) 如果在幀間間隙期間發(fā)生隱性電平到顯性電平的信號(hào)邊沿(除了間隙里的第一位),則總會(huì)執(zhí)行硬件同步。

5) 如果發(fā)生從所有其它隱性電平到顯性電平的信號(hào)邊沿,則執(zhí)行再同步。

6) 如果發(fā)送單元自身輸出的顯性電平被檢測(cè)到有延遲,則不執(zhí)行再同步。


上一頁(yè) 1 2 3 下一頁(yè)

關(guān)鍵詞: CAN總線基礎(chǔ)知

評(píng)論


技術(shù)專區(qū)

關(guān)閉