USB和CAN的區別
今天在看USB專案設計例項的時候,突然想到一個問題,從而引發了一些思考。經過思考加上查閱資料,寫出了這一篇文章作為記錄。
問題
USB和CAN都是用兩條線作為差分線以差分訊號進行資料傳輸。總所周知,差分訊號有著很強的抗干擾能力。那為什麼USB的一般傳輸距離是5米,最大是10米(USB2.0低俗模式下)。而CAN的一般傳輸距離為幾百米甚至是1KM以上。
區別
- 供電:
- USB不僅可以傳輸資料,主裝置還可以向從裝置提供5V的電源。
- CAN只能傳輸資料
- 傳輸速率:
- USB2.0的傳輸速率最高可達480Mbps,USB3.0的傳輸速率更是能到5Gbps。
- CAN協議的傳輸速率相對而言較低,取決於CAN配置的波特率,一般的傳輸速率在1Mbps
- 拓撲結構:
- USB採用星型拓撲結構(一主多從模式)
- CAN採用匯流排模式,並透過終端電阻減少反射,從而保證訊號能在更長的距離
- 協議設計(GPT補充,我也認同)
- USB:在建立連線之後,就直接傳輸資料,沒有報文規範和冗餘校驗機制,也沒有重發機制
- CAN:往匯流排中傳送訊號,其中CAN報文有15位的CRC校驗碼,可以更好的檢測在資料傳輸中發生干擾導致的資料失真,並且根據重發機制進行重發。
答案
- 傳輸速率:CAN的傳輸速率相對更低,更低的傳輸速率代表了電平訊號的持續時間更長,能夠有效的增強資料的可靠性。
- 拓撲結構:CAN在匯流排的兩端分別接入了一個120Ω的終端電阻,這個終端電阻能夠減少訊號的反射,提高訊號的完整性
- 協議設計:CAN有著很好的錯誤檢測機制和重發機制(CRC校驗,界定符校驗,手動或自動重發)。
以上三點使得CAN在傳輸距離上比USB 更有優勢,如文章中有錯誤的地方,歡迎批評指正。大家有新的想法,請在評論區留下你大膽的想法。