CAN总线技术 | 物理层02 - CAN总线的异步串行通讯
生活随笔
收集整理的這篇文章主要介紹了
CAN总线技术 | 物理层02 - CAN总线的异步串行通讯
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- 一、前言
- 二、如何解決波特率誤差帶來的通信錯誤?
- 三、填充位
一、前言
廣州虹科錄制的CAN總線技術課程非常不錯,建議同學們學習一下。B站的地址:https://www.bilibili.com/video/BV1gD4y1U7bJ?p=1
CAN總線使用異步串行通訊,相比同步串行通訊,CAN總線省去了一根用于同步的時鐘線(CLK)。有優點,多半會帶來一些缺點,缺點就是同步問題。
根據波特率做采樣,波特率的誤差會產生通信錯誤。為什么?CAN總線上的各個CAN節點的波特率來源于各個節點上的晶振(例如,STM32上的CAN控制器上的時鐘頻率就是從PCB上的晶振進行倍頻后再分頻得到)。晶振會有誤差,外加上其他誤差。說白了,各個節點的波特率都設置500K。但是,由于誤差問題肯定不會完全等于500K。
二、如何解決波特率誤差帶來的通信錯誤?
CAN總線規定信號的“跳變沿時刻”進行同步,將誤差累計限制在兩個跳變沿之間。
接著問題又來了:當發送數據出現都為0或者1的時候,同樣不跳變造成誤差累計怎么辦法呢?
三、填充位
采用填充位在連續5個相同位后插入一個相反位(CAN控制負責插入該填充位),產生跳變沿,用于同步。如下圖所示:
還有疑問:為什么5個連續相同位之后才使用填充位呢?答:CAN總線在剛發明的時候,設計人員做了大量的測試來驗證5個填充位比較合適。
總之,CAN總線為了解決異步串行通訊帶來的缺點(波特率誤差導致的通訊錯誤),增加了跳變沿時刻同步與填充位的功能。
總結
以上是生活随笔為你收集整理的CAN总线技术 | 物理层02 - CAN总线的异步串行通讯的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SMT32H743+CubeMX-配置M
- 下一篇: RTX5 | 内存池02 - 剩下几个A