年末年始休みの開発テーマ
連休に何もしないのも退屈だし、
しかし、直近のテーマは少々停滞気味だ....
ということで、長らく謎の、CANの通信不調に
対する基礎的な実験準備をする。
------
どうも、このCANというヤツ。
いい加減な設定でも、何となく動いているように
見えるのもあって、危険なセッティングのものが
製品として出回っているような気がする。
気がする、どまりなのは、
製品のCANセッティングに関する情報が
取れることはまずないし。
なんなら、製造元がそもそもこの手の
セッティングの存在について
全く把握してない、って状況もある。
本職のはずなのに、製造元のはずなのに、
このレベルの技術的問い合わせに
回答できるところなんて、ほんとに
お目にかかれないんだよなあ....
で、こんな微妙なものを買い集めて
なんとなく試作品を作って、納品したりするもんだから
なんとも制御不能なトラブルが起きたりする。
もう、ずっとこの状況は変わらないし、
周りもみな、そういう状況なので、
”そういうもの”としてすら、扱われている始末だ。
こんなんだから、皆扱うのを嫌ったりするんだよな....
------
これじゃどうにもならないんだけど、
だれも手を付けようとはしていなさそうだ。
こういうのは、克服すると色々オイシイ話もあったりするので
ちょっと掘ってみることにする。
------
怪しんでいるのは、データサンプリングタイミングに
関するところ。
具体的には、CANコントローラーのうち、
SJWのセッティングがおかしい、
もしくはSJWが機能しない状態にあるのでは?と
思われるものの存在。
あぶりだすのも難しいし、特定できたところで
製品の中身をいじれる可能性は、ほぼないので
追及しても仕方ない、ともいえるんだけど。
少なくとも、状況を把握できれば、
本質的な対策の可能性は出てくる。
------
ここから先は推測なんだけど、
どうやってこの状況を作り出すか、について。
微妙にビットクロックレートをずらしてやれば、
そのうち完全に同期がずれて、SJWが動作するようになる。
通常のSTD IDで、8バイトデータであれば、
1パケット111ビット~なので、 0.5~1%ほど
ずらして、エラーが頻発するようだと
同期機構が機能してない、と判断できそう。
マイコンでやろうとすると、
システムクロックを外部のVFOとかで作って
微調整すればいけそうだけど、
動作中に周波数を連続的に可変出来て、
かつ安定した動作ができるVFOはなかなかない。
------
そこで、STM32F4で、PLLのセッティングを動作中に
いじることで、システムクロックを152MHz~168MHzの
間を、0.25MHzステップで、可変できるようにしてみた。
これで、APB1につながっているCANコントローラが
出力するパケットのビットレートも
950kbps~1050kbpsの間で調整できるようになる。
これを、CANの送信エラーカウンタをモニタしながら
操作することで、SJWが機能不全で、
いきなりエラーを出し始めるような、
躾のできてないユニットがあぶりだせる
のではないか?と思っている。
------
とりあえず、PLLをいじって、システムクロックを
微調するのはうまく機能しているようだ。
システムの暴走とかもなさそう。
これで、実際のCAN BUSにつなげてみて、
わざとずれたビットレートパケットに対する
BUSの挙動を洗い出してみる。
| 固定リンク | 0
コメント