我正在構建基於Atmega2560芯片的定製Canbus IO模塊。該模塊將具有10個高電流輸出,包括pwm控制和電流反饋,20個數字輸入,5個模擬輸入和4個0-5v模擬輸出。我一直在研究搞清楚我將要使用的J1939消息結構。這些模塊將是由主ECU控制的從屬設備。由於這些模塊中的多個模塊可能位於同一個網絡中,因此我爲每個模塊添加了一個CAN地址開關,以便用戶可以選擇每個單元的CAN ID 1-255。計劃是讓每個模塊在單個CAN消息中廣播所有數字輸入的狀態。如果我選擇0xFF00作爲PGN ID,然後使用8個字節來表示該特定模塊輸入狀態的位狀態,那麼主機如何知道該消息來自哪個模塊? CANbus消息中的模塊地址是?j1939自定義模塊通信
我一直在尋找的Arduino的CANBUS的例子,它看起來像您可以根據PGN過濾,但我沒有看到任何過濾器的基礎上源地址或目的地址。
有人可以提供我如何可能會做一些這方面的澄清?
J1939編碼的源地址作爲擴展CAN標識的8個最低-顯著位。您應該可以編程您的CAN接口來過濾掉那部分,但除非您遇到性能問題,否則我會堅持使用軟件過濾。我懷疑你選擇帶有內置CAN外設的MCU代替ATmega2560可能會更好。 – doynax
所以我可以通過添加優先級,PGN然後來源發送消息? 例如,如果我發送0x0CFF00FE這意味着: 優先3 PGN 65280 源地址254 這是正確的嗎? – jonfarrugia
@jonfarrugia你是對的。請注意,所有專有的PGN(65280-65535)都是廣播消息,這意味着它們的目標地址始終爲255。 – LaneL