CAN モニタを基板に載せる

VCA の製作中ですが、部品が足りなく作業が止まってしまいました。足りない部品が届くまで手が止まってしまうので、その間に CAN モニタを作ることにしました。

今まで使っていたモニタはブレッドボード上に組んでいましたが、でかいしどこかに接触しそうだし落としたら動かなくなりそうだしで使い勝手は良くありませんでした。Analog3 のファームウェア開発中は常時バスをモニタしているのでこのブレッドボードのモニタを使い続けるのはストレスが大きい。基板に載せてできれば箱入れした方が良かろう、ということで待ち時間をこれに費やすことにしました。モニタを作るのにはもう一つ狙いがあって、次の Analog3 モジュールから使う予定のマイクロコントローラ STM32C092KCT6 からの CAN 接続は未経験なので、部品が届く前に慣れておこうという目論見もあります。ちなみにブレッドボード上で組んだモニタは PSoC 4 から MCP2515 CAN コントローラを駆動しています。

プロジェクトのリソースは github に上げました。

https://github.com/naokiiwakami/can-monitor

モニタは USB を直接繋ぐことも考えましたがシリアルの方が慣れているのでさっさと終わらせるということで FTDI 互換の USB to UART ドングルをさして使うことにしました。STM32 は 3.3V 電源なので USB 5V からの降圧をドングルにやってもらってそこから電源を得るという狙いもあります。

新たな STM32 コントローラに慣れておくという目論見は当たって、CAN 接続には大変苦労しました。問題に次ぐ問題でようやく動き出すまでに二日かかりました。今後のためにちょっとメモ。問題の一つはアップグレードした IDE にバグがあったことでそれを突き止めるのにも多大な時間を使いましたがそれは今後の参考にはならないので省略。(翌日 ST マイクロから「必読」というメールが来ていて脱力しました)

48 MHz 水晶発振子を取り付けるも 48 MHz クロックが得られない

これは理由がまだわかっていませんし解決もしていません。電気的な問題の可能性が大きいと思うのですけれども。VCA 基板でも 48 MHz 水晶を使っているので懸念事項ではありますが、とりあえず 24 MHz の水晶発振子に取り替えて問題回避しました。ST Micro から CAN 接続時には非推奨とされていますが内部クロックで 48 MHz を選んでも動くことは動きます。

トランシーバがスタンバイモードに入っていて全く動かず

使った TCAN3413 トランシーバは 1 ピンがスタンバイモード設定に使われており、このピンが未接続だと内部でプルアップされていてスタンバイモードに入ります。通常モードにするにはグラウンドに落とさないといけません。これを失念していて「なんで CAN メッセージが入ってこないし出て行かないんだー?」と頭を抱えてしまいました。CAN トランシーバあるあるかもしれません。8 ピン CAN トランシーバは電源・I/O・CAN 接続用のピンはどの型番でも同じですが、残った 5 ピンと 8 ピンは 型番によって役割が違います。僕だけかもしれませんが 5 ピンは大体間違えずに使えてますが 8 ピンは見落としがちです。

3.3V トランシーバを使うと送信ができない

トランシーバのモード問題に気づいて直したところ受信はできるようになりましたが送信がエラーになってしまいできません。バス上の信号や他のトランシーバをチェックしたところ送信メッセージはバス上に流れているけれどもトランシーバが認識しないことがわかりました。同じトランシーバを他のノードに移すと送受信問題なし。TCAN3413 は 3.3V 稼働のトランシーバですが、これを5V のトランシーバに入れ替えたところきちんと送受信できる、ということで、謎が深かったのですが、送信された波形を見るとメッセージの最初で大きく崩れているのに気づきました。これは電源を取っている安いシリアルドングルでは CAN バスを駆動するのに十分な電源の容量がないのかも、と思い当って、電源に 100μF のパスコンを入れたところ正常動作するようになりました。

このように問題を踏むだけ踏んだので VCA モジュールではもう少しすんなり行ってほしいと思います。

せっかく基板に載せたので箱にも入れてみました。色々と雑ですけどそれでもやっぱり箱に入れると安心度が上がります。

Comments

No comments yet. Why don’t you start the discussion?

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください