【M5Stack】CommuモジュールでCAN通信

M5Stack(Arduino)とCommuモジュールでCAN通信する方法について紹介します。

【標準フォーマット】CAN通信・送受信のサンプルコード

CAN通信の標準フォーマットでは、11bitの識別IDと0~8byteのデータフレームで、データをやり取りします。

説明
ID 識別子(Identifier)の略。データ内容や送信ノードを識別する他、通信調停の優先順位を決定する。標準フォーマットでは11ビット長でIDを構成するため、IDの範囲は0x0~0x7FFとなり、2048種類の識別ができる。ただし、上位7ビットを全てリセッシブ(ID:0b1111111XXXX)にすることは禁止されています。
DLC データフレームに格納するデータのbyte数を指定。0~8byteの範囲で指定でき、例えば8byteのデータを送信したい場合はDLC=8となります。
データフレーム CAN通信で送信したいデータを格納するフレームで0~8byteのデータを格納できる。
原理 【CAN通信】原理・ビットレート・データ長・主な用途など
参考 https://github.com/m5stack/M5-ProductExampleCodes/tree/master/Module/COMMU/Arduino/CANhttps://github.com/m5stack/M5-ProductExampleCodes/tree/master/Module/COMMU/Arduino/DependentLibrary/MCP_CAN_lib/examples
機材名 数量
M5Stack Gray(約4500円) 2
Commuモジュール(約1500円) 2

■commu_can_receiver.ino(受信側)

■commu_can_transmitter.ino(送信側)

サンプルプログラム一式はこちら
1 https://github.com/nishizumi-lab/sample/tree/master/m5stack/commu

実行結果

【拡張フォーマット】CAN通信・送受信のサンプルコード

CAN通信の拡張フォーマットでは、29bitの識別IDと0~8byteのデータフレーム、データをやり取りします。

説明
ID 識別子(Identifier)の略。データ内容や送信ノードを識別する他、通信調停の優先順位を決定します。拡張フォーマットでは標準ID11ビットと拡張ID18ビットを併せて29ビット長で、IDの範囲は0x0~0x1FFFFFFFとなり、約540万種類の識別ができます。標準フォーマット同様、上位7ビットを全てリセッシブ(ID:0b1111111XXXX…)にすることは禁止されています。
DLC データフレームに格納するデータのbyte数を指定。0~8byteの範囲で指定でき、例えば8byteのデータを送信したい場合はDLC=8となります。
データフレーム CAN通信で送信したいデータを格納するフレームで0~8byteのデータを格納できる。
詳細 【CAN通信】原理・ビットレート・データ長・主な用途など

■commu_can_receiver.ino(受信側)

■commu_can_transmitter.ino(送信側)

サンプルプログラム一式はこちら
1 https://github.com/nishizumi-lab/sample/tree/master/m5stack/commu

関連記事
1 【M5Stack入門】できること・使い方
2 M5Core クイックスタート – Arduino Win
M5Stack
技術雑記

コメント

タイトルとURLをコピーしました