WioTerminalでCAN通信~回路組み立て編~

Microchip ATSAMD51P19を搭載したプロトタイプボード「WioTerminal」でCAN通信を試してみました。

はじめに、ATSAMD51にはCANコントロール機能がありません。
以前、M5StickC Plus(ESP32PICO)でCAN通信の実装を行いました。
ESP32にはTWAIコントローラ(=CAN)が内蔵されており、レジスタ操作によってCAN信号の読み書きが可能です。
従って、CAN H, CAN Lの差動信号に変換する「CANトランシーバ」を用意することで、CAN通信ができます。

embaud-ot.hateblo.jp

WioTerminalには、CANプロトコルを生成するCANコントロール機能さえもないため、別途CANコントローラを用意する必要があります。
今回は、CANコントローラとして「MPU2515」を購入し、以前使用した CANトランシーバ「CANBusUnit For M5Stack」を活かしたCAN通信の実装を示します。

準備

実験に必要な機材、ソフトウェアを示します。

Hardware

Software

Library

  • 学習のために自作したため、無し

References

shop.cqpub.co.jp

  • CAN通信の仕組み、MPU2515のレジスタ操作について解説されています。

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)
    • 入力信号をLOWレベルにするとリセットが働く
    • コマンド送信によってもリセット操作ができるとのことですので、常時HIGHで良い
      • リセット端子への電流を制限するために、抵抗(10kΩ)を設けています
    • ハードウェアリセットをかけたい(Power On Reset)場合は、ダイオードコンデンサで電力供給を遅延させる回路を作成します。
      • データシートの9章に例があります
      • 抵抗とコンデンサ容量は、「RC回路」「時定数」がキーワードです
  • OSC1, OSC2へのクロック接続(Refs. DS Table1-1, subsection 8.0)
f:id:prescott0216:20210208211239p:plain
MCP2515のブレッドボード上の基本接続図

※ この図とデータシートの端子番号の順番が異なります
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に接続

f:id:prescott0216:20210208211648p:plain
MCP2515とWioTerminalの接続図

※ この図とデータシートの端子番号の順番が異なります
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通信、レジスタ設定について書きます。