文章總列表

ESP32(6) CAN Transceiver 挑選心得

曾經在CAN bus踩雷(看以下三篇),介紹一下最後的心得和結論:挑TJA1042/3就對了

[什麼是CAN bus]

簡單說,就是在車上用的BUS,如果想做點什麼放在車上,很難不跟CAN bus打交道;另外我的瑞典同事也在家裡部署的CAN Bus,他不是很信賴WiFi這類的東西(安全),CAN bus只有兩根線,差動信號夠可靠,而且也簡單


[CAN Bus Transceiver]

如前面描述的,CAN bus一對信號線是差動信號(differential pair),處理這信號的線路一定不會做在SOC裡面,因為不是所有人都要CAN bus,所以這東西放在IC裡,用不到的人就是垃圾,等於在浪費面積不划算;以這顆ESP32來說,WiFi收發機倒是直接內建了,因為這是他的賣點,對吧

所以一般是在SOC外部擺上一顆CAN bus收發晶片,他處理完差動信號後,轉成TX/RX一組線再連到MCU。常見的CAN bus收發晶片,或是我常用的,主要是底下這種SO8封裝

這裡就直接給上答案:如果design要放CAN bus,那我會大力推薦TJA1042/3。後面我會給出原因,這些原因會幫助你挑對Transceiver


[5V CAN元件]

汽車CAN bus網路大概還會是5v系統,差動信號平常在2.5v,傳送資料會拉到3.5v/2.5v。注意這個是工業標準,ISO11898-2,電壓是沒得選的


這顆TJA1042都是5v CAN bus元件,要吃5v的電。在ESP32這種板子上,還好透過USB供電本來就拿得到5v;我自己做的小板子會用第一級12v-to-5v,再從5v-to-3.3v降轉電壓供電

您可能會問,TI的SN65HVD231這種3.3v元件用在車上行不行?我測試結果:可以。原因一時半刻有點難解釋,用著總是擔心相容性(煩),建議就別折騰了,順著標準走


[VIO設計]

請再回到上面的圖,中間那顆pin5的VIO。舊式CAN transceiver打出來的TX/RX都是5v,拿來對接3.3v的MCU會不會有問題?我測過STM32和ESP32都OK。一般MCU的邏輯是,拿3.3v除以2,用1.65V區分0/1,所以吃0v/5v只要沒過大電流都還好。另一方面,MCU輸出0v/3.3v,到了CAN Transceiver用2.5v當分界區分0/1,這裡有點吃design margin,因為3.3v離2.5v有點近,倒也是不能運作

如果用上更低電壓MCU,只有1.8v的時候,上述策略就真的不會動了!另外這些電壓不匹配,終究是在吃design margin,何苦要為難自己?

所以這顆TJA1042/3有個Vio pin,可以告訴CAN收發晶片的邏輯電壓位準,這樣TX/RX電壓就會是我們指定的電壓,用得心安理得沒有問題


[省電設計]

再回去看CAN收發晶片,他的pin#8叫STANDBY,能讓CAN收發晶片進入Standby mode,這時候耗電會非常非常低。比如我做的VOLVO+放在車上,無時無刻會抽汽車電池的電,low power一定要很小心處理。這顆在standby mode只抽10uA的電流,放在車上可以接受了

MCU可以看到CAN bus沒有封包一段時間後,讓CAN transceiver進入standby,也讓MCU自己睡著

上述那段話,另一面是如何喚醒。TJA1042在省電模式下,CAN bus有擾動(出現dominate,bit#0)會在RX pin產生high-to-low transition。MCU可以在睡下去的時候,讓CAN-RX那根pin設成GPIO並且透過這個high-to-low transition喚醒

我能用上述的機制,實現睡覺/喚醒的設計

圍繞著省電/喚醒的機制,常見的CAN收發晶片也有這種14pin的設計。他會有根INHIBIT pin可以打開/關閉系統的電壓來源。設計的理念是,當系統進入睡眠狀態,會把MCU供電的線路全部都切斷,全系統只剩這顆Transceiver在低耗電運作(一種站哨的概念)

當CAN bus出現任何活動紀錄,CAN收發器再去打開電源元件,喚醒整個系統。這題我大概只看過人家這樣使用,簡單理解原理而已(甚至可能錯),沒有很深入研究了


[相容品]

做功課時,也看過中國的SIT1042/3,有沒有發現名字跟TJA1042/3很像!這個確實是pin-to-pin相容;另外Microchip的MCP2562/E也有這種IC可以使用


那本文就到這裡,如果想玩CAN bus,買開發板可以用我的幾個標準看看


留言

這個網誌中的熱門文章

幼犬書桌椅選擇心得 升降桌 兒童桌椅

STM32 UART + DMA,使用HAL實作TX/RX,以及不定長度接收

CANON G3000 廢墨瓶改裝