CAN 接続の実験系は確保したのですが、製作中の MIDI/CV モジュールから CAN 信号を送ると信号が認識されません。バス上の信号を見れば何かわかるに違いないと、オシロスコープで観測することにしました。
しかし CAN バスは下図のように CANH と CANL の二本線の電圧の差分を見るものですから、オシロスコープのグラウンドをどこにあてれば良いか迷います。


試行錯誤してわかったのは当たり前のことで、オシロスコープのグラウンドが測定する回路から独立していることが重要で、そうであればあとはどこへなり好きにあてなさいと。今使っているオシロスコープが PicoScope という USB で PC につないで使うもので、同じ回路に同じ PC の USB から一つでもオシロスコープ以外の接続があるとオシロスコープもグラウンドが回路のグラウンドに固定されてしまいます。なので、回路につながっていたドングルだのロジックアナライザだの(これも USB タイプ) 全部外しました。この状態なら単純に CANL をグラウンドに、CANH にプローブを当てれば測定できますが、やっぱり信号線にグラウンドをつなぐのは何かと心配です。なので、CAN トランシーバの Vref をグラウンドにとってプローブ二本を CANH と CANL にあてたところきれいに波形が観測できました。以下は正しく動いている CAN 信号を観測したものです。青線が CANH で赤線が CANL です。波形の乱れはプローブの校正不足のせいも混じっている気がしますが校正するにはそれ用の道具を作るか買う(多分すごくオーバースペックで高価)必要があり、後日対応したいなあと思ってます。

上はうまく通信できている例ですけれども、 MIDI/CV から発生した CAN 信号はおかしいです。以下はトランシーバの Tx 端子から取り出した信号ですけれども、最終的にエラーで終わってひたすら再送されています。CAN のプロトコルはすっかり忘れてしまいましたが、確かメッセージを送った時誰か別のモジュールが応答しないとエラーになってひたすら再送する仕様だったはず。他のトランシーバの Rx 端子を見ると信号が来ていないので、信号が認識されていないようです。どういうこと?

ということで、オシロスコープ波形を見てみました。信号来てるよなあ。電圧も低すぎることなさそうだし。あれ?でも極性が逆じゃね?

なんという間抜けでしょう。極性をひっくり返したら再送が止まりました。やっとメッセージが認識されるようになった模様。が、ずいぶん語長が長いな。

ロジックアナライザを見たら通信中何かのエラーが発生している模様。

詳細が思い出せないけどこのエラーはソフトウェア的なものの気がします。MIDI/CV では hello world 的に適当なメッセージを送っただけですので。とりあえず信号が認識されない問題は解決したのでやっと MIDI/CV モジュールでの CAN 通信実装に進めます。