can收發(fā)器原理及作用詳細介紹
CAN收發(fā)器主要分為驅(qū)動器和收發(fā)器。TX引腳接收MCU的信號然后給驅(qū)動器到CANH,CANL引腳,CANH,CANL接收差分信號至接收器到RX引腳到MCU。
內(nèi)部CANH、CANL分別為開漏輸出形式??偩€顯性(0)時,收發(fā)器內(nèi)部Q1、Q2導(dǎo)通(Transceiver發(fā)出high low的Q1,Q2的導(dǎo)通電平),CANH、CANL之間產(chǎn)生壓差;隱性(1)時,Q1、Q2截止,CANH、CANL處于無源狀態(tài),壓差為0(單獨的CAN H/L 一般為VCC/2)。
CAN協(xié)議只有兩層:物理層和數(shù)據(jù)鏈路層。CAN收發(fā)器(也就是協(xié)議控制器)的作用就是完成數(shù)據(jù)鏈路層組幀和生成物理層比特流,驅(qū)動器的作用是吧控制器輸出的高低邏輯電平編程CAN總線的差分式電平。協(xié)議相關(guān)的內(nèi)容基本都由協(xié)議控制器完成,單片機軟件上只要配置需要的通信速率、幀ID以及發(fā)送的數(shù)據(jù)內(nèi)容,然后告知收發(fā)器,讓它發(fā)送就OK。不需要從軟件上編寫協(xié)議。
單片機內(nèi)部的CAN控制器和外接CAN控制器功能相同,省去了再加外圍硬件。單片機對幀格式不用特別關(guān)心,但是發(fā)送之前至少需要告訴協(xié)議控制器你所要發(fā)送的數(shù)據(jù)內(nèi)容以及幀的ID。
CAN電路介紹:
差分(負載)電阻的作用:
1.在顯性狀態(tài)期間,總線的寄生電容會被充電,而在恢復(fù)到隱性狀態(tài)時,這些電容需要放電。如果CANH、CANL之間沒有放置任何阻性負載,電容只能通過收發(fā)器內(nèi)部的差分電阻放電,這個阻抗是比較大的,放電時間就會明顯比較長。因此,總線的終端電阻的第一作用是放電。
2.隱性時差分電阻阻值很大,內(nèi)部的MOS管屬于高阻態(tài),外部的干擾只需要極小的能量即可令總線進入顯性(一般的收發(fā)器顯性門限最小電壓僅500mV)。這個時候如果有差模干擾過來,總線上就會有明顯的波動,而這些波動沒有地方能夠吸收掉他們,就會在總線上創(chuàng)造一個顯性位出來。所以為提升總線隱性時的抗干擾能力,增加一個差分負載電阻,且阻值盡可能小,以杜絕大部分噪聲能量的影響。然而,為了避免需要過大的電流總線才能進入顯性,阻值也不能過小。
3.阻抗匹配,減小反射
仲裁段:當(dāng)總線上掛了多個負載的時候,通過仲裁段的電平來確定優(yōu)先級,ID越小優(yōu)先級別越高(CAN的線與機制,CAN顯性的時候,MOS導(dǎo)通,強驅(qū)動。 CAN隱性的時候,MOS關(guān)閉,弱驅(qū)動。 )
控制段:識別擴展幀和標(biāo)準(zhǔn)幀,以及數(shù)據(jù)長度編碼位
數(shù)據(jù)段:數(shù)據(jù),CAN2.0 8位,CAN FD64位,這就是CAN FD速率更快的原因
校驗位:當(dāng)TX,RX收到的數(shù)據(jù)不一致進行校驗。校驗數(shù)據(jù)傳輸是否正確,若不正確,應(yīng)答錯誤停止發(fā)送。
CAN標(biāo)準(zhǔn):ISO11898(通信速度為 5kbps - 1Mbps 的 CAN 高速通信標(biāo)準(zhǔn),其中CAN FD(Flexible Data-rate)納入了ISO 11898-1:2015標(biāo)準(zhǔn)中)和ISO11519(通信速度為 125kbps 以下的 CAN 低速通信標(biāo)準(zhǔn))。具體標(biāo)準(zhǔn)可以百度,或者私信我。
CAN的電壓特性:CAN網(wǎng)絡(luò)中的物理信號傳輸基于電壓差的傳輸(差分信號傳輸)。高速CAN和低速CAN的電壓差分電壓大于0.9V時為顯性電平,對應(yīng)邏輯“0”,小于0.5V為隱性電平,對應(yīng)邏輯“1”。以下為ISO11898中的電壓標(biāo)準(zhǔn)參考:
CAN通信原理介紹
電信號的傳輸在物理層面都是靠電壓高低區(qū)分來實現(xiàn)的,CAN通信也不例外。CAN總線使用雙絞線進行差分電壓傳輸,兩條信號線被稱為CAN高(CAN_H)和CAN低(CAN_L)。
兩條線靜態(tài)時均為2.5V左右,此時狀態(tài)表示為邏輯1,也被稱作隱性。當(dāng)兩條線電壓值出現(xiàn)差異時,通常CAN_H=3.5V和CAN_L=1.5V,此時狀態(tài)表示為邏輯0,也稱作顯性。即:
差分電壓CAN_diff = 0V,表示邏輯“1”,為隱性;
差分電壓CAN_diff = 2V,表示邏輯“0”,為顯性;
注:實際開發(fā)中兩條線的電壓都會在標(biāo)準(zhǔn)值上下附近波動,這也是用差分傳輸?shù)暮锰?,減少誤差和噪聲帶來的干擾。
顯性電平用邏輯“0”表示,隱性電平用邏輯“1”表示,這里可能有小伙伴會問為什么“0”是顯性,感官上不應(yīng)該這樣規(guī)定啊?其實這是因為CAN總線采用“線與”規(guī)則進行沖突仲裁,即當(dāng)多個CAN信號同時發(fā)送時,有的發(fā)1有的發(fā)0,而只要有0,當(dāng)前總線就是0(1&0 = 0),看上去就是1被0覆蓋了。另一方面,從電位看,高電位為0,當(dāng)1和0同時發(fā)送時,總線處于高電位,顯現(xiàn)出來的是0,所以把0規(guī)定為顯性。
事件驅(qū)動,CAN網(wǎng)絡(luò)基于多主架構(gòu)與總線型拓撲的原因是:每個CAN節(jié)點都可以發(fā)送報文至CAN總線上。CAN報文的傳輸不遵循任何預(yù)定的時間順序,而是由事件驅(qū)動。
當(dāng)傳輸信息時,通信通道才會處于繁忙狀態(tài),因此CAN節(jié)點可以非??焖俚卦L問總線。理論上,由于可以快速響應(yīng)異步事件且波特率高達1 Mbit/s,因此在CAN網(wǎng)絡(luò)中完全可以實現(xiàn)毫秒級的實時數(shù)據(jù)傳輸。
接收方(receiver)選擇尋址(addressing),在CAN網(wǎng)絡(luò)中,接收方選擇尋址防止總線節(jié)點之間產(chǎn)生依賴,從而提高配置的靈活性:CAN報文是廣播發(fā)送的,網(wǎng)絡(luò)中所有CAN節(jié)點都可以接收到所有CAN報文。每個節(jié)點中都有過濾器,可以通過報文的標(biāo)識符(ID)來篩選實際所需的CAN報文。雖然這會增加開銷,但卻可以在不修改CAN網(wǎng)絡(luò)的情況下集成其他CAN節(jié)點。