資源描述:
《can總線錯(cuò)誤及故障處理演示文稿》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、Version1.102006年5月總線錯(cuò)誤及故障處理本節(jié)主要內(nèi)容五種錯(cuò)誤檢測機(jī)制錯(cuò)誤標(biāo)記及錯(cuò)誤計(jì)數(shù)錯(cuò)誤幀及超載幀錯(cuò)誤等級劃分主動(dòng)錯(cuò)誤模式及被動(dòng)錯(cuò)誤模式總線關(guān)閉模式常見總線故障原因及處理五種錯(cuò)誤檢測機(jī)制CAN實(shí)現(xiàn)以下5種錯(cuò)誤檢測機(jī)制其中基于信息流級別的錯(cuò)誤檢測有CRC校驗(yàn)幀格式檢測應(yīng)答錯(cuò)誤檢測基于位(bit)級別錯(cuò)誤檢測有位檢測位填充基于信息流級別的錯(cuò)誤檢測CRC校驗(yàn)錯(cuò)誤15位的CRC通過發(fā)送端根據(jù)發(fā)送信息的內(nèi)容計(jì)算產(chǎn)生接收端根據(jù)接收內(nèi)容重新計(jì)算CRC并于發(fā)送端發(fā)送過來的CRC數(shù)值進(jìn)行比較當(dāng)兩個(gè)數(shù)字不一致時(shí)候CRC錯(cuò)誤標(biāo)記產(chǎn)生基
2、于信息幀級別的錯(cuò)誤檢測幀格式錯(cuò)誤檢測,當(dāng)接收端在以下位置檢測到非法的位時(shí)格式錯(cuò)誤標(biāo)記CRC認(rèn)可位ACK認(rèn)可位幀結(jié)束位基于信息幀級別的錯(cuò)誤檢測應(yīng)答錯(cuò)誤檢測每一個(gè)接收端都回在ACK場向總線回應(yīng)一個(gè)顯性位如果發(fā)送端在ACK場檢測不到一個(gè)ACK應(yīng)答將產(chǎn)生應(yīng)答錯(cuò)誤標(biāo)記常見的應(yīng)答錯(cuò)誤多數(shù)由于總線上沒有一個(gè)活躍的節(jié)點(diǎn)引起,即孤立節(jié)點(diǎn)的情況基于位(bit)級別錯(cuò)誤檢測位檢測在發(fā)送過程中發(fā)送器通過接收端監(jiān)視總線上每一位發(fā)送出去的電平是否與發(fā)送驅(qū)動(dòng)的一致當(dāng)發(fā)監(jiān)視位電平與發(fā)送驅(qū)動(dòng)的不一致將產(chǎn)生一個(gè)位錯(cuò)誤標(biāo)記在仲裁場和ACK場不執(zhí)行填充位錯(cuò)誤檢測基于位
3、(bit)級別錯(cuò)誤檢測位填充發(fā)送端根據(jù)發(fā)送內(nèi)容每5個(gè)相同的位插入一個(gè)反向電平進(jìn)行填充接收端自動(dòng)消除填充位保重信息透明傳輸及恢復(fù)當(dāng)接收檢測到連續(xù)6個(gè)相同的位是將出發(fā)位填充錯(cuò)誤標(biāo)記補(bǔ)充位填充用于保證在NRZ位流中有足夠的邊沿用于從同步錯(cuò)誤幀違背位填充規(guī)則錯(cuò)誤標(biāo)記及錯(cuò)誤計(jì)數(shù)錯(cuò)誤標(biāo)記當(dāng)節(jié)點(diǎn)最少檢測到一個(gè)錯(cuò)誤時(shí)將馬上終止總線上的傳輸并發(fā)送一個(gè)錯(cuò)誤幀錯(cuò)誤幀的組成錯(cuò)誤幀由兩個(gè)場組成,錯(cuò)誤標(biāo)志及錯(cuò)誤界定場,其中包含6位的顯性位幀結(jié)構(gòu)圖(續(xù))錯(cuò)誤幀的組成錯(cuò)誤幀結(jié)構(gòu)(續(xù))ErrorFlag6SuperpositionofErrorFlags6-12
4、bitsErrorDelimiter8111111111000000000000超載幀超載幀當(dāng)控制器未能足夠快地處理當(dāng)前的信息時(shí)將發(fā)送超載幀中斷其他發(fā)送控制器發(fā)送過程以減緩發(fā)送速度,加長發(fā)送幀間隔組成由超載標(biāo)志場及超載界定場組成錯(cuò)誤標(biāo)記及錯(cuò)誤計(jì)數(shù)錯(cuò)誤計(jì)數(shù)每監(jiān)測到一個(gè)接收錯(cuò)誤其錯(cuò)誤計(jì)數(shù)加1每監(jiān)測到一個(gè)發(fā)送錯(cuò)誤其錯(cuò)誤計(jì)數(shù)加8,發(fā)送錯(cuò)誤更容易被察覺到SJA1000相關(guān)寄存器介紹errorwarninglimitregisterRXerrorcounterregisterTXerrorcounterregister錯(cuò)誤等級劃分劃分標(biāo)準(zhǔn)主
5、動(dòng)錯(cuò)誤ErrorCounter<127錯(cuò)誤警告ErrorCounter==ErrorLimit被動(dòng)錯(cuò)誤ErrorCounter>127總線關(guān)閉ErrorCounter==255錯(cuò)誤警告門限默認(rèn)數(shù)值為96主動(dòng)錯(cuò)誤模式主動(dòng)錯(cuò)誤模式(錯(cuò)誤激活模式)在錯(cuò)誤激活模式下控制器能執(zhí)行的所有功能(正常模式)當(dāng)發(fā)送或者接收到一個(gè)正確的信息幀時(shí)相應(yīng)的錯(cuò)誤計(jì)數(shù)器遞減1當(dāng)所有的錯(cuò)誤計(jì)數(shù)寄存器返回0時(shí)控制器返回正常模式主動(dòng)錯(cuò)誤模式及被動(dòng)錯(cuò)誤模式被動(dòng)錯(cuò)誤模式當(dāng)控制器錯(cuò)誤計(jì)數(shù)超越錯(cuò)誤警告限制時(shí)進(jìn)入被動(dòng)錯(cuò)誤模式(消極錯(cuò)誤模式)僅能發(fā)送錯(cuò)誤認(rèn)可標(biāo)志,錯(cuò)誤計(jì)數(shù)仍舊
6、生效,但不會(huì)破壞總線總線關(guān)閉模式總線關(guān)閉模式,任意一個(gè)錯(cuò)誤計(jì)數(shù)器超越255導(dǎo)致控制器進(jìn)入總線關(guān)閉模式持久的總線故障將導(dǎo)致總線關(guān)閉在總線故障清除,控制器檢測到總線上連續(xù)的11位隱性位發(fā)生128次后,總線關(guān)閉的節(jié)點(diǎn)將返回到錯(cuò)誤激活狀態(tài),錯(cuò)誤寄存器狀態(tài)清零常見總線故障原因及處理硬件故障波特率不一致。終端電阻失配。軟件故障CAN錯(cuò)誤中斷類型。錯(cuò)誤中斷處理。CAN錯(cuò)誤中斷類型(SJA1000)CAN錯(cuò)誤中斷類型總線錯(cuò)誤中斷EBI。數(shù)據(jù)溢出中斷DOI。出錯(cuò)警告中斷EI。錯(cuò)誤認(rèn)可中斷EPI。仲裁丟失中斷ALI。錯(cuò)誤中斷處理(SJA1000)總
7、線錯(cuò)誤,檢查是否總線已經(jīng)關(guān)閉,為保證總線保持在工作模式,應(yīng)該嘗試重新進(jìn)入總線工作模式。數(shù)據(jù)溢出中斷,對于應(yīng)用中應(yīng)該通過提升軟件處理效率及處理器性能解決接收速度引起的瓶頸;程序務(wù)必向CAN控制器發(fā)送清除溢出命令,否則將一直引起數(shù)據(jù)一處中斷。其他錯(cuò)誤中斷一般可以不加處理,不過在調(diào)試過程中應(yīng)該打開所有中斷以監(jiān)視網(wǎng)絡(luò)質(zhì)量。錯(cuò)誤中斷處理(SJA1000)總線錯(cuò)誤入口inlinevoidKSJA1000T::INT_BusError(void){if(((UCHAR)m_rMode&RM_BIT)!=0){StartCAN();}m_Tra
8、ceCode
9、=INT_BUS_ERROR;}錯(cuò)誤中斷處理(SJA1000)數(shù)據(jù)溢出中斷處理inlinevoidKSJA1000T::INT_DataOverrun(void){if(((UCHAR)m_rMode&RM_BIT)!=0){StartCAN();