Microchip ATSAMD51P19を搭載したプロトタイプボード「WioTerminal」でCAN通信を試してみました。
はじめに、ATSAMD51にはCANコントロール機能がありません。
以前、M5StickC Plus(ESP32PICO)でCAN通信の実装を行いました。
ESP32にはTWAIコントローラ(=CAN)が内蔵されており、レジスタ操作によってCAN信号の読み書きが可能です。
従って、CAN H, CAN Lの差動信号に変換する「CANトランシーバ」を用意することで、CAN通信ができます。
WioTerminalには、CANプロトコルを生成するCANコントロール機能さえもないため、別途CANコントローラを用意する必要があります。
今回は、CANコントローラとして「MPU2515」を購入し、以前使用した CANトランシーバ「CANBusUnit For M5Stack」を活かしたCAN通信の実装を示します。
準備
実験に必要な機材、ソフトウェアを示します。
Hardware
- WioTerminal / Seeed
- CANBus Unit for M5Stack / M5Stack
- MCP2515 / Microchip
- ブレッドボードやユニバーサル基板
- 水晶発振子(16MHz or 20MHz)
- 15pF コンデンサ (積層セラミックコンデンサ15pF)2個
- 10kΩカーボン抵抗
- ジャンパワイヤ 11本以上
- USB CAN Module / InnoMaker (検証用)
- Windows PC
Library
- 学習のために自作したため、無し
MCP2515の紹介
- MCP2515は、一般的なマイコンに搭載さているシリアル通信である「SPI(Serial Peripheral Interface)」によってデータを制御し、CAN通信を実現(フレーム変換)するためのCANコントローラです。
Step 1 MCP2515の回路組み立て
基本はデータシートを読みます。
1. 電源、信号レベルの確認
- WioTerminalとMCP2515の接続
- WioTerminalのGPIO信号は3.3V
- MCP2515は最低2.7Vの電源電圧で駆動します(Ref : MCP2515 DataSheet Section.13)
- WioTerminalのGPIOにSPIがある(Ref : WioTerminal取扱説明書参照、BCM8~11)
よって、電圧変換なしに使用可能
- MPU2515 と CAN Bus Unit for M5Stack
- CAN Bus Unitの電源電圧は5Vで、WioTerminalのGPIOに5V出力がある
- M5StackのGrove信号レベルは3.3V
- MPU2515のCANTX, CANRXの信号レベルは3.3V
- 1.で、MCP2515への電源供給を3.3Vとしたため(Ref. MCP2515 DS Table1-1)
よって、CAN BUS Unitを駆動可能かつ、MCP2515とCAN BUS Unitを接続して通信可能
2. MCP2515駆動回路の設計
MCP2515を起動させるための、最小限の回路接続です。
- 電源端子とGND端子の接続(Ref. DS Table1-1)
- リセット端子の接続(Ref. DS Section 9)
- OSC1, OSC2へのクロック接続(Refs. DS Table1-1, subsection 8.0)
※ この図とデータシートの端子番号の順番が異なります
1 2 3 4 5 6 7 8 9 → データシートの 10 11 12 13 14 15 16 17 18
①②③④⑤⑥⑦⑧⑨ → データシートの 9 8 7 6 5 4 3 2 1
MCP2515のIC上の切り欠けは、本図の右側に来ます。
Step 2 WioTerminalとの接続
SPIで、Master(WioTerminal)とSlave(MCP2515)を接続する
1. SCK, MOSI, MISO, CSを接続する
- SCK = Serial Clock
- MOSI = Master Out Slave In
- MISO = Master In Slave Out
- CS(又はSS) = Chip Select (Slave Select)
信号線 | WioTerminal | MCP 2515 (18 Lead) |
---|---|---|
SCK | 23ピン | 13ピン |
MISO | 21ピン | 15ピン |
MOSI | 19ピン | 14ピン |
CS | 24ピン | 16ピン |
2. 3.3V信号、GNDをブレッドボードに接続
3. 5V信号、GNDをCANBus Unitに接続
※ この図とデータシートの端子番号の順番が異なります
1 2 3 4 5 6 7 8 9 → データシートの 10 11 12 13 14 15 16 17 18
①②③④⑤⑥⑦⑧⑨ → データシートの 9 8 7 6 5 4 3 2 1
MCP2515のIC上の切り欠けは、本図の右側に来ます。
次回は、MCP2515のビットレート計算および、WioTerminalとMCP2515のSPI通信、レジスタ設定について書きます。