日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

CAN总线技术 | 数据链路层04 - CAN节点状态与错误处理机制

發布時間:2025/3/15 编程问答 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 CAN总线技术 | 数据链路层04 - CAN节点状态与错误处理机制 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 一、前言
  • 二、錯誤檢測區域
  • 三、錯誤幀
  • 四、CAN節點狀態
    • 4.1、FDCAN錯誤計數器寄存器(FDCAN_ECR)
    • 4.2、FDCAN協議狀態寄存器(FDCAN_PSR)

一、前言


CAN的錯誤類型有如下圖所說的5種,其中:

  • 應答錯誤與位發送錯誤會出現在CAN發送的節點(CAN發送端)
  • CRC錯誤與位填充錯誤會出現在CAN接收的節點(CAN接收端)

二、錯誤檢測區域


如下是每一個錯誤發生在CAN報文中的區域,5種錯誤類型可以同時發生。位檢測的區域最長,可以看到采樣點的匹配是多么的重要(一般不建議相差超過6% - 7%)。

三、錯誤幀


錯誤幀長什么樣子?一共有兩種錯誤幀,那到底發哪一種錯誤幀呢?取決于CAN節點的狀態,是主動錯誤狀態還是被動錯誤狀態。

四、CAN節點狀態


正常情況下,CAN節點處于主動錯誤的狀態,在主動錯誤狀態下發生錯誤時,發送錯誤幀(6個連續顯性電平位+8個連續隱性電平位)。

CAN節點在發送錯誤計數器或接收錯誤計數器大于127時,CAN節點將進入“被動錯誤”狀態,并發送錯誤幀(6個連續隱性電平位+8個連續隱性電平位)。在發送錯誤或者接收錯誤減少之后,又會切換回“主動錯誤”狀態。當發送錯誤計數器大于255時,CAN節點將進入“總線關閉(Bus_Off)”狀態,脫離CAN總線,不影響其他CAN節點的通訊。值得注意的是,應用程序負責將CAN控制器切換到“總線關閉(Bus_Off)”的狀態,CAN控制器不會自動切換到“總線關閉”狀態。

4.1、FDCAN錯誤計數器寄存器(FDCAN_ECR)

最近正在使用STM32H743開發CANopen節點,看看FDCAN控制器到底有沒有REC與TEC寄存器。通過查看STM32H743的編程參考手冊,找到錯誤計數器寄存器。在這個計數器里面能找到TREC(接收錯誤計數器)與TEC(發送錯誤計數器),如下圖所示。

4.2、FDCAN協議狀態寄存器(FDCAN_PSR)

CAN節點的狀態,從這個寄存器可以了解CAN節點在哪個錯誤狀態(主動錯誤或被動錯誤)。


接著,也找到了總線關閉(Bus_Off)寄存器。經過測試看到,當接收錯誤或發送錯誤一直累加到最后不能累加時,Bus_Off寄存器并沒有發生變化,所以Bus_Off是需要應用程序去修改的。


最后,也能看到從LEC位找到上一個CAN錯誤的類型。當然啦,LEC位等于000最好!

總結

以上是生活随笔為你收集整理的CAN总线技术 | 数据链路层04 - CAN节点状态与错误处理机制的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。