2021年6月20日日曜日

製品紹介 MCP25625-breakout


背景

MCP25625とはCan busという通信形式を扱うための集積回路です。
マイコンなどのCan busを扱いたい装置からはSPIで通信で利用します。
SPI通信で扱うCan busのコントローラー(MCP2515)と、コントローラーの信号をCan bus形式の信号に変換するトランシーバー(MCP2562)が1つの集積回路になった製品と言えるので、プログラムはMCP2515のものが使えます。

MCP25625は足が28本あるのですが、電源と通信線に絞ると10本あれば自分の用途では十分でした。
必要な信号線だけ出ている装置が欲しかったので、作ってみました。

スイッチサイエンスで購入可能です。

MCP25625-breakout

この製品を利用してArduinoでCANを扱う記事を書いたので、良かったらこちらもご覧ください。

CANをArduinoで扱ってみた

Arduinoで使う場合はこちらのライブラリで制御可能です。

CanBusMCP2515-arduino

機能の紹介

ピンの役割

本製品からは11本のピン(信号線)が出ています。
裏側にピンの役割を大きく表示しています。


各ピンの役割はこちらです。
ピン名 役割
SCK SPI通信線の1つです。
MISO SPI通信線の1つです。
MOSI SPI通信線の1つです。
CS SPIでこの装置とやり取りする際にマイコン側で電位を下げるピンです。
INT 情報が蓄積されたことをマイコンに伝えるピンです。
マイコンの割り込みを受け付けるピンに接続します。
GND グラウンドピンです。
Reset リセットピンです。
電位を下げると装置が再起動します。
このピンを使えばSPIの同期外れによる不具合も対応可能です。
VIO コントローラーへの給電ピンです。
このピンの電圧がSPIの通信線の電圧になります。
対応電圧は2.7~5.5Vです。
VDDA Can busトランシーバーへの給電ピンです。
対応電圧は4.5~5.5Vです。
CAN H Can busの高電位側です。
CAN H Can busの低電位側です。

ちなみに、旧製品はリセットピンが無い10ピンでした。


終端抵抗スイッチ


Can busは通信線の終端に120Ωの抵抗を配置する仕様です。
本製品はスイッチでその抵抗の有効化と無効化の切り替えが可能です。
NC(not connected)が無効で、USEが有効です。

既存のCan bus通信網に接続する場合はNCにして、Can bus通信網を新たに作る場合は端のものだけUseにしてご利用ください。

16MHzの水晶振動子を利用


16MHzの水晶振動子を振動源として搭載しています。
これにより、装置から外に出るピンの数を減らせています。
MCP2515のライブラリを利用する際は16Mhz動作としてご利用ください。

ちなみに、Rev2021.04はセラロックを利用していました。


利用例

このMCP25625の信号線を変換基盤でブレッドボードに引き出してProMicroと接続するとこのようになります。
ProMicroの場合はCSを10番として割り当てれば、ProMicroの横に本製品を配置することでSCK、MOSI、MISO、CSの4本をジャンパワイヤ無しでブレッドボードを介して接続可能です。


ProMicroで利用されるATmega32u4は7番ピンに割り込み機能を割り当てられるため、INTを7番に接続しています。
またRSTを接続して制御することで、SPIの同期外れによる不調に対応可能です。


旧型Rev2021.04の接続例です。



MCP25625と変換器番を利用して配線した同様構成の装置に比べて配線が少なく済みます。


まとめ

MCP25615を少ない配線で利用でき、終端抵抗の有無をスイッチで変更可能な基盤を作りました。
Can bus機能が付いていないマイコンでCan bus通信したい際に良かったらご利用ください。

MCP25625-breakout

参考

設計情報
MCP25625-breakout

Arduinoライブラリ
CanBusMCP2515-arduino

変更履歴

2021.06.28 スイッチサイエンスの商品リンクを追加しました。
2021.07.13 関連記事(ArduinoでCANを扱ってみた)のリンクを追加しました。
2023.04.18 ピンが11本になり、水晶振動子を利用するRev2023.02の説明に変更しました。
2025.01.16 Arduinoのライブラリへのリンクを追加しました。

2 件のコメント :

Noname さんのコメント...
このコメントは投稿者によって削除されました。
Asuki Kono さんのコメント...

ご利用ありがとうございます。
自分はESP32をmicro-pythonで利用したことがないのと、MCP25625を長時間運用した経験が無いので、申し訳ないですがその不具合に関する知見がありません。
不具合発生時にMCP25625の再起動で問題が解決するのでしたら、Resetピンを一度GNDに落としてからプログラムのMCP25625の制御ライブラリの初期化をし直す対応はいかがでしょう?