この記事は高知工科大 Advent Calendar 2017の18日目の記事です。
はじめに
takamasavvv です。
突然ですが、一身上の都合でCAN通信を始めることになりました。
まだ完全には実装できていないので、今回はハードウェアだけやったよ日記を書きます。
CANって?
CANのプロトコルについてはここ を参照しています。
CANは、車載機器等に使われる、信頼性が大変高いプロトコルです。
データの信頼性を挙げるための様々な工夫がされており、データが落ちたことの検知は確実にできるようです。
細かい説明は上のリンクにあるので割愛します。
どうやるのか?
今回はCANコントローラーのMCP2515とCANトランシーバーのMCP2561を使用しました。
この2つでマイコンからSPIでCANを制御できるようになります。
構成としては以下のようになります。
このボードでとりあえずの動作試験をやります。
使ったマイコンはPSoC5LPのCY5888LTI-LP097です。
動作確認としては、MCP2515の設定用レジスタの一つであるCANCTRLというレジスタを読み、初期値になっているかどうかを確認します。
信号の確認のためにシグナルアナライザー(ブレッドボード写真左)を使っています。
以下がシグナルアナライザーの信号です。
上がMOSI側、下がMISO側です。
MOSIではマイコンがしっかりMCP2515にレジスタの読み込み命令を出していますね。それに対してMISOはレジスタ内部の値である135(dec)を返しています。
動作モードビットはコンフィグレーションモードに設定しているので、135(dec)=10000111(bin)が帰ってきたのは正常といえます。
ということで、ハードウェアは完成したっぽいです。
完成ついでに、基板を書きました。
(写真は後輩がはんだ付けしてくれたもの)
なかなか小さくまとめられました。やったね!
課題
- どうやらクロック周りの部品設定が悪いのか、通信速度が遅い。要改善
- 通信ソフトウェアをちゃんと実装するのが本番だよねー
- ここまでするならPSoC搭載のCANモジュールでもいいのでは?
最後に
こんな感じで中途半端な状態で終わるのもなんなので、開発が進み次第、ここに追記していきます。
なので完成はもう少し待ってください。