接觸過CAN總線的小伙伴都知道,在實際項目中CAN總線都需要在首尾兩端各并上一個120Ω的電阻,那么問題來了,為什么一定要120Ω,其他阻值不行嗎?
我們以TJA1044內部架構圖為例進行展開。
CAN總線:顯性代表0,隱性代表1。當總線為隱性時:TJA1044內部的上下兩個管Q1和Q2都會截止,CANH和CANL處于無源狀態,壓差為0V。當總線為顯性時:TJA1044內部的上下兩個管Q1和Q2都會導通,CANH和CANL之間差生壓差。如果總線上沒有負載的時候,而且總線處于隱性時,那總線的差分阻值就會很大,致使外部很微小的能量都可以讓總線進入顯性,主要原因在于一般收發器的顯性最小門限電壓只有500mV左右。所以為了提高總線的抗干擾能力,就需要增加一個終端電阻,但是,這個阻值盡量小(同時也要考慮不能有過大的電流)。
除此之外,總線上的寄生電容也要考慮在內。總線顯性時,電容充電,總線隱性時,電容放電,如果總線沒有并任何的電阻的話,總線只能通過向兩端的收發器進行放電了,這就影響了兩個轉態(隱性和顯性)之間的轉換時間,從而出現波形異常(爬坡),如上圖所示。當信號在高速傳輸的路徑中如果碰到阻抗不連續的情況,就會造成信號發射,也就是我們說的阻抗不連續,這個現象可以比喻成汽車在道路上行駛的時候遇到道路變窄時,汽車就很容易堵塞。
那加入終端電阻就可以消除或者減小這個信號反射的影響,主要靠終端電阻吸收信號的能量,使得能量不在總線上亂竄。那為什么是120Ω?其實在ISO 11898-2標準文件中就明確定義出,120Ω是通過大量的實驗測試得出的最合理的阻值,如下圖所示:
如果想驗證實際項目中總線需要多大的終端電阻,可以通過下面手段進行測試。
在總線上并聯可調電阻,通過調節可調電阻,進而觀察波形即可。那這個終端電阻的封裝是不是可以隨意定?當然不行!這個終端電阻我們在選型時必須要考慮到接口短路的情況,也就是說在短路發生時,CAN總線的節點也必須能夠承受的住短路的風險,假設CANH和電源18V發生了短路,那這個短路電流會直接通過CANH流向CANL,但是一般的CAN收發器能承受的電流也就幾十ma(收發器內部有限流措施),就比如TJA1145就只有50mA。根據P=I²*R,可以得到50ma*50ma*120Ω=0.3W。考慮到環境存在高溫的情況,所以電阻的功率選擇在0.25W是合適的,也就是常見的1206封裝,少數有0805和0603封裝的。