通信
組み込み

CAN通信用ICにチャレンジ(とりあえずハード側まで 2017-12-18)

この記事は高知工科大 Advent Calendar 2017の18日目の記事です。

はじめに

takamasavvv です。
突然ですが、一身上の都合でCAN通信を始めることになりました。
まだ完全には実装できていないので、今回はハードウェアだけやったよ日記を書きます。

CANって?

CANのプロトコルについてはここ を参照しています。
CANは、車載機器等に使われる、信頼性が大変高いプロトコルです。
データの信頼性を挙げるための様々な工夫がされており、データが落ちたことの検知は確実にできるようです。
細かい説明は上のリンクにあるので割愛します。

どうやるのか?

今回はCANコントローラーのMCP2515とCANトランシーバーのMCP2561を使用しました。
この2つでマイコンからSPIでCANを制御できるようになります。
構成としては以下のようになります。
sys.PNG

で、実際にブレッドボードに組んだのが以下のようになります。
bb_ana.JPG

このボードでとりあえずの動作試験をやります。
使ったマイコンはPSoC5LPのCY5888LTI-LP097です。
動作確認としては、MCP2515の設定用レジスタの一つであるCANCTRLというレジスタを読み、初期値になっているかどうかを確認します。

動作確認用プログラム(クソ)

信号の確認のためにシグナルアナライザー(ブレッドボード写真左)を使っています。
以下がシグナルアナライザーの信号です。
wav.PNG

上がMOSI側、下がMISO側です。
MOSIではマイコンがしっかりMCP2515にレジスタの読み込み命令を出していますね。それに対してMISOはレジスタ内部の値である135(dec)を返しています。
動作モードビットはコンフィグレーションモードに設定しているので、135(dec)=10000111(bin)が帰ってきたのは正常といえます。

ということで、ハードウェアは完成したっぽいです。

完成ついでに、基板を書きました。
print.JPG
(写真は後輩がはんだ付けしてくれたもの)
なかなか小さくまとめられました。やったね!

課題

  • どうやらクロック周りの部品設定が悪いのか、通信速度が遅い。要改善
  • 通信ソフトウェアをちゃんと実装するのが本番だよねー
  • ここまでするならPSoC搭載のCANモジュールでもいいのでは?

最後に

こんな感じで中途半端な状態で終わるのもなんなので、開発が進み次第、ここに追記していきます。
なので完成はもう少し待ってください。