1寫(xiě)在前面
前面文章是從大方向介紹了CAN網(wǎng)絡(luò),讓大家對(duì)CAN網(wǎng)絡(luò)有一定的認(rèn)識(shí)。本文將范圍縮小,講述整個(gè)CAN網(wǎng)絡(luò)其中的一個(gè)CAN收發(fā)器。如下圖標(biāo)記出來(lái)的部分:
本文結(jié)合眾多初學(xué)者容易產(chǎn)生的疑問(wèn)來(lái)講述CAN收發(fā)器相關(guān)的知識(shí)點(diǎn),大概有如下幾點(diǎn):
什么是CAN收發(fā)器?
CAN總線(xiàn)差分信號(hào)
CAN收發(fā)器芯片和485芯片差異
2
什么是CAN收發(fā)器?
CAN收發(fā)器在整個(gè)CAN網(wǎng)絡(luò)中所處的位置如上圖所示。CAN收發(fā)器就是一塊類(lèi)似232或485的轉(zhuǎn)換芯片,它的主要功能是將CAN控制器的TTL信號(hào)轉(zhuǎn)換成CAN總線(xiàn)的差分信號(hào)。
2.1 什么CAN控制器TTL信號(hào)?
現(xiàn)在的CAN控制器一般都與MCU集成在一起,其發(fā)送和接收TTL信號(hào)就是MCU引腳(高或低)信號(hào)。
以前還有獨(dú)立的CAN控制器,一個(gè)CAN網(wǎng)絡(luò)節(jié)點(diǎn)會(huì)包含三塊芯片:MCU芯片、CAN控制器、CAN收發(fā)器?,F(xiàn)在是將前兩者集成在一起了(看文章開(kāi)篇圖片)。
3
CAN總線(xiàn)差分信號(hào)
CAN總線(xiàn)信號(hào)從CAN收發(fā)器出來(lái),為「兩線(xiàn)」「差分」信號(hào),用隱形代表邏輯1,顯性代表邏輯0。
1.CAN收發(fā)器兩線(xiàn)
芯片引腳CAN_H、CAN_L
2.CAN_H和CAN_L電壓
電壓的大小根據(jù)芯片型號(hào)而定,一般常見(jiàn)的CAN收發(fā)芯片有3.3V和5V兩種芯片。
如上圖,為5V CAN收發(fā)芯片,在邏輯0和邏輯1時(shí)電壓情況:
邏輯0時(shí):
顯性,CAN_H=3.5V,CAN_L=1.5V;
邏輯1時(shí):
隱性,CAN_H=2.5V,CAN_L=2.5V;
當(dāng)然,3.3V電壓芯片的總線(xiàn)電壓原理類(lèi)似。而實(shí)際應(yīng)用中,總線(xiàn)電壓并非絕對(duì)的像上面說(shuō)的3.5V、2.5V、1.5V這種電壓,會(huì)受到導(dǎo)線(xiàn)電阻、外界干擾等影響。
3.隱性和顯性
學(xué)過(guò)生物都知道,基因有隱性和顯性。隱性的基因?qū)嶋H存在,但不會(huì)表現(xiàn)出來(lái)。有顯性的基因就會(huì)表現(xiàn)出來(lái)。
這里CAN總線(xiàn)隱性信號(hào)和顯性信號(hào)道理一樣,當(dāng)總線(xiàn)兩種信號(hào)都有時(shí),總線(xiàn)表現(xiàn)出來(lái)的就是顯性信號(hào)。
提示:我們這里說(shuō)的顯性和隱性信號(hào),指的是總線(xiàn)傳輸?shù)腷it位信號(hào)。
所以,CAN總線(xiàn)平時(shí)空閑表現(xiàn)為隱性狀態(tài)。如果想要發(fā)送的信號(hào)為隱性位,那么總線(xiàn)才會(huì)呈現(xiàn)出來(lái)隱性。否則,只要其它有一個(gè)節(jié)點(diǎn)發(fā)送顯性信號(hào),你這個(gè)節(jié)點(diǎn)發(fā)送出來(lái)的隱性信號(hào)就無(wú)效。
4.CAN收發(fā)器R引腳
CAN收發(fā)器R引腳就是與CAN控制器接收相連的引腳。如下圖:
R引腳的信號(hào)是表示總線(xiàn)當(dāng)前的信號(hào),用于控制器實(shí)時(shí)監(jiān)測(cè)總線(xiàn)信號(hào)。主要兩個(gè)目的:
A.監(jiān)測(cè)其它節(jié)點(diǎn)發(fā)送出來(lái)的信號(hào):別人給它發(fā)送數(shù)據(jù);
B.監(jiān)測(cè)自身節(jié)點(diǎn)發(fā)送出去的信號(hào):自己發(fā)送是否失敗。就像上面說(shuō)的,自己發(fā)送一個(gè)隱形信號(hào),結(jié)果監(jiān)測(cè)出來(lái)是顯性信號(hào),那就說(shuō)明是別人在發(fā)送數(shù)據(jù)。
4
CAN收發(fā)器芯片和485芯片差異
CAN通信和485通信一樣,屬于半雙工。但是,為什么CAN總線(xiàn)相比485通信不管在速度和穩(wěn)定性上都具有明顯優(yōu)勢(shì)呢?
4.1 總線(xiàn)利用率
CAN收發(fā)器工作原理與485具有較大差異。從上面的差分信號(hào)可以看得出來(lái),兩種芯片同時(shí)存在,只有顯性信號(hào)有效,而不會(huì)影響總線(xiàn)傳輸。簡(jiǎn)單來(lái)說(shuō)就是CAN總線(xiàn)具有自動(dòng)仲裁功能,這樣就提高了總線(xiàn)的利用率。
RS485總線(xiàn)是一種常規(guī)的通信總線(xiàn),它不能夠做總線(xiàn)的自動(dòng)仲裁,也就是不能夠同時(shí)發(fā)送數(shù)據(jù)以避免總線(xiàn)競(jìng)爭(zhēng),所以整個(gè)系統(tǒng)的通信效率必然較低,數(shù)據(jù)冗余量較大,對(duì)于速度要求高的應(yīng)用場(chǎng)所不適應(yīng)用RS485總線(xiàn)。
提示:
CAN總線(xiàn)沒(méi)有被發(fā)送出去的隱性信號(hào),會(huì)由CAN控制器后續(xù)發(fā)送出去。這里牽涉到CAN總線(xiàn)優(yōu)先級(jí)的問(wèn)題,后續(xù)進(jìn)一步講述。
當(dāng)然,CAN相比485具有明顯優(yōu)勢(shì),主要原因還是在于CAN控制器。
4.2 可以不使用CAN收發(fā)器嗎?
UART可以直接通過(guò)TX連接對(duì)方的RX引腳,利用TTL信號(hào)進(jìn)行通信,那么CAN也可以嗎?
答案:?jiǎn)蜗騻鬏斂梢?,雙向傳輸就不行。
原因很簡(jiǎn)單,上面說(shuō)了,CAN控制器會(huì)實(shí)時(shí)監(jiān)測(cè)發(fā)送出去的信號(hào)是否正確。也就是說(shuō)TX要與RX信號(hào)一致才行,否則CAN控制器認(rèn)為你發(fā)送失敗。
-
控制器
+關(guān)注
關(guān)注
112文章
16444瀏覽量
179326 -
CAN
+關(guān)注
關(guān)注
57文章
2766瀏覽量
464311 -
CANopen
+關(guān)注
關(guān)注
8文章
270瀏覽量
43718
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論