<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > STM32之CAN---錯(cuò)誤管理分析

          STM32之CAN---錯(cuò)誤管理分析

          作者: 時(shí)間:2016-11-24 來源:網(wǎng)絡(luò) 收藏

          3 STM32的bxCAN實(shí)現(xiàn)

          3.1 bxCAN錯(cuò)誤狀態(tài)圖

          圖2

          3.2 出錯(cuò)管理

          CAN協(xié)議描述的出錯(cuò)管理,完全由硬件通過發(fā)送錯(cuò)誤計(jì)數(shù)器(CAN_ESR寄存器里的TEC域),和接收錯(cuò)誤計(jì)數(shù)器(CAN_ESR寄存器里的REC域)來實(shí)現(xiàn),其值根據(jù)錯(cuò)誤的情況而增加或減少。軟件可以讀出它們的值來判斷CAN網(wǎng)絡(luò)的穩(wěn)定性。此外,CAN_ESR寄存器提供了當(dāng)前錯(cuò)誤狀態(tài)的詳細(xì)信息。通過設(shè)置CAN_IER寄存器(比如ERRIE位),軟件可以靈活地控制中斷的產(chǎn)生――當(dāng)檢測(cè)到出錯(cuò)時(shí)。

          3.3 離線恢復(fù)

          當(dāng)TEC等于255時(shí),bxCAN就進(jìn)入離線狀態(tài),同時(shí)CAN_ESR寄存器的BOFF位被置’1’。在離線狀態(tài)下,bxCAN無法接收和發(fā)送報(bào)文。

          根據(jù)CAN_MCR寄存器的ABOM位的設(shè)置,bxCAN可以自動(dòng)或在軟件的請(qǐng)求下,從離線狀態(tài)恢復(fù)(變?yōu)殄e(cuò)誤主動(dòng)狀態(tài))。在這兩種情況下,bxCAN都必須等待一個(gè)CAN標(biāo)準(zhǔn)所描述的恢復(fù)過程(CAN RX引腳上檢測(cè)到128次11個(gè)連續(xù)的隱性位)。

          如果ABOM位為’1’,bxCAN進(jìn)入離線狀態(tài)后,就自動(dòng)開啟恢復(fù)過程。
          如果ABOM位為’0’,軟件必須先請(qǐng)求bxCAN進(jìn)入然后再退出初始化模式,隨后恢復(fù)過程才被開啟。

          注: 在初始化模式下,bxCAN不會(huì)監(jiān)視CAN RX引腳的狀態(tài),這樣就不能完成恢復(fù)過程。為了完成恢復(fù)過程,bxCAN必須工作在正常模式。

          4 CAN錯(cuò)誤狀態(tài)寄存器 (CAN_ESR)

          地址偏移量: 0x18
          復(fù)位值: 0x0000 0000

          圖3

          位31:24REC[7:0]: 接收錯(cuò)誤計(jì)數(shù)器
          這是對(duì)CAN協(xié)議的故障界定機(jī)制接收部分的實(shí)現(xiàn)。按照CAN的標(biāo)準(zhǔn),當(dāng)接收出錯(cuò)時(shí),根據(jù)出錯(cuò)的情況該計(jì)數(shù)器加1或加8;而在每次接收成功后,該計(jì)數(shù)器減1,或減少其值為120-當(dāng)該計(jì)數(shù)器的值大于127時(shí)。當(dāng)該計(jì)數(shù)器的值超過127時(shí),CAN進(jìn)入錯(cuò)誤被動(dòng)狀態(tài)。
          位23:16TEC[7:0]: 發(fā)送錯(cuò)誤計(jì)數(shù)器
          與上面相似,這是對(duì)CAN協(xié)議的故障界定機(jī)制發(fā)送部分的實(shí)現(xiàn)。
          位15:7保留位,硬件強(qiáng)制為0。
          位6:4LEC[2:0]: 上次錯(cuò)誤代碼
          在檢測(cè)到CAN總線上發(fā)生錯(cuò)誤時(shí),硬件根據(jù)出錯(cuò)情況設(shè)置其為1~6的值。當(dāng)報(bào)文被正確發(fā)送或接收后,硬件清除其值為’0’。
          硬件沒有使用錯(cuò)誤代碼7,軟件可以設(shè)置該值,從而可以檢測(cè)代碼的更新。
          000: 沒有錯(cuò)誤;
          001: 位填充錯(cuò);
          010: 格式(Form)錯(cuò);
          011: 確認(rèn)(ACK)錯(cuò);
          100: 隱性位錯(cuò);
          101: 顯性位錯(cuò);
          110: CRC錯(cuò);
          111: 由軟件設(shè)置。
          位3保留位,硬件強(qiáng)制為0。
          位2BOFF: 離線(Bus Off)標(biāo)志
          當(dāng)進(jìn)入離線狀態(tài)時(shí),硬件對(duì)該位置1。當(dāng)發(fā)送錯(cuò)誤計(jì)數(shù)器TEC溢出,即大于255時(shí),CAN進(jìn)入離線狀態(tài)。
          位1EPVF: 錯(cuò)誤被動(dòng)(Error Passive)標(biāo)志
          當(dāng)出錯(cuò)次數(shù)達(dá)到錯(cuò)誤被動(dòng)的閾值時(shí),硬件對(duì)該位置1。
          (接收錯(cuò)誤計(jì)數(shù)器或發(fā)送錯(cuò)誤計(jì)數(shù)器的值>127)。
          位0EWGF: 錯(cuò)誤警告標(biāo)志
          當(dāng)出錯(cuò)次數(shù)達(dá)到警告的閾值時(shí),硬件對(duì)該位置1。
          (接收錯(cuò)誤計(jì)數(shù)器或發(fā)送錯(cuò)誤計(jì)數(shù)器的值≥96)。


          上一頁 1 2 下一頁

          關(guān)鍵詞: STM32CAN錯(cuò)誤管

          評(píng)論


          相關(guān)推薦

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

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();