STM32CAN總線接口發(fā)送和接收數(shù)據(jù)

CAN協(xié)議基礎(chǔ)知識(shí)

I2C.SPI總線多用于短距離傳輸,協(xié)議簡(jiǎn)單,數(shù)據(jù)量少,主要用于IC之間的通訊,而 CAN 總線則不同,CAN(Controller Area Network) 總線定義了更為優(yōu)秀的物理層、數(shù)據(jù)鏈路層,并且擁有種類(lèi)豐富、簡(jiǎn)繁不一的上層協(xié)議。與I2C、SPI有時(shí)鐘信號(hào)的同步通訊方式不同,CAN通訊并不是以時(shí)鐘信號(hào)來(lái)進(jìn)行同步的,它是一種異步通訊,只具有CAN_High和CAN_Low兩條信號(hào)線,共同構(gòu)成一組差分信號(hào)線,以差分信號(hào)的形式進(jìn)行通訊。

CAN物理層的形式主要分為閉環(huán)總線及開(kāi)環(huán)總線網(wǎng)絡(luò)兩種,一個(gè)適合于高速通訊,一個(gè)適合于遠(yuǎn)距離通訊。CAN閉環(huán)通訊網(wǎng)絡(luò)是一種遵循ISO11898標(biāo)準(zhǔn)的高速、短距離網(wǎng)絡(luò),它的總線最大長(zhǎng)度為40m,通信速度最高為1Mbps,總線的兩端各要求有一個(gè)

“120歐”的電阻。來(lái)做阻抗匹配,以減少回波反射。

?閉環(huán)總線網(wǎng)絡(luò)

CAN開(kāi)環(huán)總線網(wǎng)絡(luò)是遵循ISO11519-2標(biāo)準(zhǔn)的低速、遠(yuǎn)距離網(wǎng)絡(luò),它的最大傳輸距離為1km,最高通訊速率為125kbps,兩根總線是獨(dú)立的、不形成閉環(huán),要求每根總線上各串聯(lián)有一個(gè)“2.2千歐”的電阻

開(kāi)環(huán)總線網(wǎng)絡(luò)


CAN總線上可以掛載多個(gè)通訊節(jié)點(diǎn),節(jié)點(diǎn)之間的信號(hào)經(jīng)過(guò)總線傳輸,實(shí)現(xiàn)節(jié)點(diǎn)間通訊。由于CAN通訊協(xié)議不對(duì)節(jié)點(diǎn)進(jìn)行地址編碼,而是對(duì)數(shù)據(jù)內(nèi)容進(jìn)行編碼,所以網(wǎng)絡(luò)中的節(jié)點(diǎn)個(gè)數(shù)理論上不受限制,只要總線的負(fù)載足夠即可,可以通過(guò)中繼器增強(qiáng)負(fù)載。

CAN通訊節(jié)點(diǎn)由一個(gè)CAN控制器及CAN收發(fā)器組成,控制器與收發(fā)器之間通過(guò)CAN_Tx及CAN_Rx信號(hào)線相連,收發(fā)器與CAN總線之間使用CAN_High及CAN_Low信號(hào)線相連。其中CAN_Tx及CAN_Rx使用普通的類(lèi)似TTL邏輯信號(hào),而CAN_High及CAN_Low是一對(duì)差分信號(hào)線,使用比較特別的差分信號(hào)。當(dāng)CAN節(jié)點(diǎn)需要發(fā)送數(shù)據(jù)時(shí),控制器把要發(fā)送的二進(jìn)制編碼通過(guò)CAN_Tx線發(fā)送到收發(fā)器,然后由收發(fā)器把這個(gè)普通的邏輯電平信號(hào)轉(zhuǎn)化成差分信號(hào),通過(guò)差分線CAN_High和CAN_Low線輸出到CAN總線網(wǎng)絡(luò)。而通過(guò)收發(fā)器接收總線上的數(shù)據(jù)到控制器時(shí),則是相反的過(guò)程,收發(fā)器把總線上收到的CAN_High及CAN_Low信號(hào)轉(zhuǎn)化成普通的邏輯電平信號(hào),通過(guò)CAN_Rx輸出到控制器中。

差分信號(hào)

差分信號(hào)又稱差模信號(hào),與傳統(tǒng)使用單根信號(hào)線電壓表示邏輯的方式有區(qū)別,使用差分信號(hào)傳輸時(shí),需要兩根信號(hào)線,這兩個(gè)信號(hào)線的振幅相等,相位相反,通過(guò)兩根信號(hào)線的電壓差值來(lái)表示邏輯0和邏輯1。相對(duì)于單信號(hào)線傳輸?shù)姆绞?,使用差分信?hào)傳輸具有如下優(yōu)點(diǎn):

? 抗干擾能力強(qiáng),當(dāng)外界存在噪聲干擾時(shí),幾乎會(huì)同時(shí)耦合到兩條信號(hào)線上,而接收端只關(guān)心兩個(gè)信號(hào)的差值,所以外界的共模噪聲可以被完全抵消。

? 能有效抑制它對(duì)外部的電磁干擾,同樣的道理,由于兩根信號(hào)的極性相反,他們對(duì)外輻射的電磁場(chǎng)可以相互抵消,耦合的越緊密,泄放到外界的電磁能量越少。

? 時(shí)序定位精確,由于差分信號(hào)的開(kāi)關(guān)變化是位于兩個(gè)信號(hào)的交點(diǎn),而不像普通單端信號(hào)依靠高低兩個(gè)閾值電壓判斷,因而受工藝,溫度的影響小,能降低時(shí)序上的誤差,同時(shí)也更適合于低幅度信號(hào)的電路。

? 由于差分信號(hào)線具有這些優(yōu)點(diǎn),所以在USB協(xié)議、485協(xié)議、以太網(wǎng)協(xié)議及CAN協(xié)議的物理層中,都使用了差分信號(hào)傳輸。

CAN協(xié)議中的差分信號(hào)

CAN協(xié)議中對(duì)它使用的CAN_High及CAN_Low表示的差分信號(hào)做了規(guī)定。以高速CAN協(xié)議為例,當(dāng)表示邏輯1時(shí)(隱性電平),CAN_High和CAN_Low線上的電壓均為2.5v,即它們的電壓差V H -V L =0V;而表示邏輯0時(shí)(顯性電平),CAN_High的電平為3.5V,CAN_Low線的電平為1.5V,即它們的電壓差為V H -V L =2V。


?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容