blog:2023-11-03_share_can匯流排指定幀喚醒的硬體實作方式
2023-11-03 Share: CAN匯流排指定幀喚醒的硬體實作方式
Local Copy
CAN的指定幀喚醒是一種網路管理的場景,對於我這個偏硬體的工程師來說,網路管理也就是透過CAN來喚醒不同的ECU,而指定幀喚醒就是特定的某些CAN ID的封包能夠喚醒ECU。
講到CAN總線就必須涉及到跟CAN總線相關的稍微「高級」一點的用法,那就是指定幀、任意幀喚醒的一點知識。最近也是接觸到了一些可能需要同一個網路上某些節點喚醒而另外一些節點不用喚醒的案例,但在分配網路管理幀的時候依然遇到一些問題,針對這種最經典的應用案例,在沒有廣泛在了解CAN ID如何分配的前提下,我覺得可能有解決方案,正所謂不知者無畏。
一 指定幀喚醒的硬體基礎
從目前應用最為廣泛的帶指定幀喚醒的CAN收發器TJA1145的管腳定義如下,其中跟喚醒相關性最強的就是INH腳,規格書上這個註釋直譯是“禁止輸出以切換外部穩壓器” ,其實不用整這麼麻煩,它的用途就是當CAN總線上有喚醒幀的時候,INH會置位變成高電平可以用來使能外部的電源晶片。
-
從TJA1145的晶片內部示意圖裡面可以看到大概的用途,當報文過濾器的的報文與喚醒幀寄存器相匹配的時候,COMPARE LOGIC就會認為檢測到喚醒幀,然後就會閉合INH內部的開關,讓INH腳輸出12V。
-
所以從上面看來,CAN喚醒需要硬體配合才能實現才行,下圖就是比較典型的一種網路管理喚醒的硬體拓撲,首先帶喚醒的CAN收發器必須要12V常電供電,另外INH腳需要連接到電源晶片的使能腳,這時當CAN總線上有網路管理幀的時候,INH變成高電平去喚醒電源晶片,就完成了一次完整的網路管理喚醒。
-
下圖這個是TJA1145晶片手冊中推薦的應用電路,基本上跟我畫的拓樸差不多,如果有興趣的話可以直接去上網下載TJA1145的晶片手冊去了解一下。
-
二 指定幀喚醒的配置方式
在晶片內部框圖可以看到有一個Wakeupframe configuration memory,這個暫存器就是用來設定喚醒封包的。之前我也講到過CAN報文的格式,其中CAN ID是11位,也就是從0x000~0x7FF這個範圍。一般來說定義網路管理訊框是各主機廠自己定義的,常用的包括0x4xx,0x5xx,0x6xx,0x7xx都是有人用的。
-
對於配置指定幀的暫存器,分為兩個部分,一個是11位的CAN ID區域,一個是11位的ID mask區域。用通俗一點的語言就是CAN ID區域就是用來標註制定幀的具體喚醒ID,而mask區域與之相對應的位裡面,如果是0,就表示對應的ID那一位是需要必須滿足的,如果是1,就表示對應的ID那一位可以不用關注。因此在規格書上的這個例子就是表示喚醒幀是00110100xxx,後三位xxx可以是0也可以是1,所以網路管理喚醒幀的範圍就是從0x1A0到0x1A7。
還是上面這個例子,如果ID mask中放開的位數只有1個,那就表示只有2個ID的封包才能喚醒CAN收發器。假設ID mask是0000000 0100,那對應的製定CAN ID就是0x1A4,0x1A0。我們如果把這2個ID分配成一個收,一個發並且給到同一個ECU,這樣的話,我們就能夠實現精準的網路管理喚醒,對於同一個網路的不同節點,雖然都支援指定幀喚醒,但是我依然可以用不同的網路管理幀來實現不同的喚醒需求。
總結
Permalink blog/2023-11-03_share_can匯流排指定幀喚醒的硬體實作方式.txt · Last modified: 2023/11/03 13:14 by
jethro