1. 程式人生 > >CANOpen系列教程03_CAN收發器功能、原理及作用

CANOpen系列教程03_CAN收發器功能、原理及作用

該系列教程已經在我的個人微信公眾號 「strongerHuang」 整理並分享。因在這裡分享文章,還需單獨整理一遍,時間有限,就不再一一重複整理出來了。

想要檢視更多相關教程,可以關注我的個人微信公眾號「strongerHuang」,回覆【CANOpen系列教程】即可檢視。

申明:該文件由作者「strongerHuang」原創釋出,僅供個人學習使用,轉載請公眾號聯絡作者授權。版權所有,禁止商用

一、寫在前面

前面文章是從大方向介紹了CAN網路,讓大家對CAN網路有一定的認識。本文將範圍縮小,講述整個CAN網路其中的一個CAN收發器。如下圖示記出來的部分:

本文結合眾多初學者容易產生的疑問來講述CAN收發器相關的知識點,大概有如下幾點:
  ·什麼是CAN收發器?


  ·CAN匯流排差分訊號
  ·CAN收發器晶片和485晶片差異

二、什麼是CAN收發器?

CAN收發器在整個CAN網路中所處的位置如上圖所示。CAN收發器就是一塊類似232或485的轉換晶片,它的主要功能是將CAN控制器的TTL訊號轉換成CAN匯流排的差分訊號

2.1 什麼CAN控制器TTL訊號?

現在的CAN控制器一般都與MCU整合在一起,其傳送和接收TTL訊號就是MCU引腳(高或低)訊號。

以前還有獨立的CAN控制器,一個CAN網路節點會包含三塊晶片:MCU晶片、CAN控制器、CAN收發器。現在是將前兩者整合在一起了(看文章開篇圖片)。

三、CAN匯流排差分訊號

CAN匯流排訊號從CAN收發器出來,為**「兩線」「差分」訊號**,用隱形代表邏輯1,顯性代表邏輯0。

1.CAN收發器兩線

晶片引腳CAN_H、CAN_L

2.CAN_H和CAN_L電壓

電壓的大小根據晶片型號而定,一般常見的CAN收發晶片有3.3V和5V兩種晶片。

如上圖,為5V CAN收發晶片,在邏輯0和邏輯1時電壓情況:
邏輯0時:顯性,CAN_H=3.5V,CAN_L=1.5V;
邏輯1時:隱性,CAN_H=2.5V,CAN_L=2.5V;

當然,3.3V電壓晶片的匯流排電壓原理類似。而實際應用中,匯流排電壓並非絕對的像上面說的3.5V、2.5V、1.5V這種電壓,會受到導線電阻、外界干擾等影響。

3.隱性和顯性

學過生物都知道,基因有隱性和顯性,隱性的基因實際存在,但不會表現出來。有顯性的基因就會變現出來。
這裡CAN匯流排隱性訊號和顯性訊號道理一樣,當匯流排兩者訊號都有時,匯流排表現出來的就是顯性訊號

提示:我們這裡說的顯性和隱性訊號,指的是匯流排傳輸的bit位訊號。

所以,CAN匯流排平時空閒表現為隱性狀態。如果想要傳送的訊號為隱性位,那麼匯流排才會呈現出來隱性。否則,只要其它有一個節點發送顯性訊號,你這個節點發送出來的隱性訊號就無效。

4.CAN收發器R引腳

CAN收發器R引腳就是與CAN控制器接收相連的引腳。如下圖:

R引腳的訊號是表示匯流排當前的訊號,用於控制器實時監測匯流排訊號。主要兩個目的:
A.監測其它節點發送出來的訊號:別人給它傳送資料;
B.監測自身節點發送出去的訊號:自己傳送是否失敗。就像上面說的,自己傳送一個隱形訊號,結果監測出來是顯性訊號,那就說明是別人在傳送資料。

四、CAN收發器晶片和485晶片差異

CAN通訊和485通訊一樣,屬於半雙工。但是,為什麼CAN匯流排相比485通訊不管在速度和穩定性上都具有明顯優勢呢?

4.1 匯流排利用率

CAN收發器工作原理與485具有較大差異。從上面的差分訊號可以看得出來,兩種晶片同時存在,只有顯性訊號有效,而不會影響匯流排傳輸。簡單來說就是CAN匯流排具有自動仲裁功能,這樣就提高了匯流排的利用率。

RS485匯流排是一種常規的通訊匯流排,它不能夠做匯流排的自動仲裁,也就是不能夠同時傳送資料以避免匯流排競爭,所以整個系統的通訊效率必然較低,資料冗餘量較大,對於速度要求高的應用場所不適應用RS485匯流排。

提示:
CAN匯流排沒有被髮送出去的隱性訊號,會由CAN控制器後續傳送出去。這裡牽涉到CAN匯流排優先順序的問題,後續進一步講述。
當然,CAN相比485具有明顯優勢,主要原因還是在於CAN控制器

4.2 可以不使用CAN收發器嗎?

UART可以直接通過TX連線對方的RX引腳,利用TTL訊號進行通訊,那麼CAN也可以嗎?

答案:單向傳輸可以,雙向傳輸就不行。
原因很簡單,上面說了,CAN控制器會實時監測傳送出去的訊號是否正確。也就是說TX要與RX訊號一致才行,否則CAN控制器認為你傳送失敗。

五、說明

1.該文件部分文字來自網路,僅供個人學習使用,版權所有,禁止商用。

2.本文由我一個人編輯並整理,難免存在一些錯誤。

3.為了方便大家平時公交、地鐵、外出辦事也能用手機隨時隨地檢視該教程,該系列教程已更新於微信公眾號【strongerHuang】,關注微信公眾號回覆【CANOpen系列教程】即可檢視全系列教程。

六、最後

我的微信公眾號(ID:strongerHuang)還在分享STM8、STM32、Keil、IAR、FreeRTOS、UCOS、RT-Thread、CANOpen、Modbus…等更多精彩內容,如果想檢視更多內容,可以關注我的微信公眾號。