実際のところ
VScode上のplatformio環境でやります
ライブラリ導入
lib_depsに必要なライブラリ記述を追記
[env:m5stack-core2] platform = espressif32 board = m5stack-core2 framework = arduino lib_deps = m5stack/M5Stack@^0.4.6, coryjfowler/mcp_can@^1.5.0
スクリプト本体
#include <M5Stack.h> #include <mcp_can.h> #include <SPI.h> const int SPI_CS_PIN = 12; MCP_CAN CAN(SPI_CS_PIN); void setup() { M5.begin(); M5.Power.begin(); while (CAN_OK != CAN.begin(MCP_ANY, CAN_500KBPS, MCP_8MHZ)) { M5.Lcd.println("CAN BUS init failed. Retrying..."); delay(100); } M5.Lcd.println(""); } void loop() { unsigned char stmp[8] = {0, 1, 2, 3, 4, 5, 6, 7}; CAN.sendMsgBuf(0x00, 0, 8, stmp); M5.Lcd.println("Sent msg"); delay(1000); }
通信レート
500Kbpsでは早すぎるケースはあるかと思います
その場合、マクロで値を別途
mcp_can.hの更に参照先mcp_can_dfs.hの中で定義されています
#define CAN_5KBPS 1 #define CAN_10KBPS 2 #define CAN_20KBPS 3 #define CAN_31K25BPS 4 #define CAN_33KBPS 5 #define CAN_40KBPS 6 #define CAN_50KBPS 7 #define CAN_80KBPS 8 #define CAN_100KBPS 9 #define CAN_125KBPS 10 #define CAN_200KBPS 11 #define CAN_250KBPS 12 #define CAN_500KBPS 13 #define CAN_1000KBPS 14