バックナンバーはこちら。
https://www.simulationroom999.com/blog/diagnostic-communication-backnumber/
はじめに
ISO11898-1ことCANのデータリンク層について。
の後編あたり。
登場人物
博識フクロウのフクさん

イラストACにて公開の「kino_k」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=iKciwKA9&area=1
エンジニア歴8年の太郎くん

イラストACにて公開の「しのみ」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=uCKphAW2&area=1
CANのボーレート復習

CANのデータリンク層の続きだね。

うん。

前回、ボーレートに関わる話として、
クウォンタムとサンプリングポイントの話をしたと思う。

CANのシステムクロックはクウォンタム時間を決定するもので、
そのままボーレートになるわけじゃないって話だよね。

ボーレートとしてはクウォンタム時間を意識すればOKなんだけど、
サンプリングポイントの決定の話として、セグメントの話が必要となる。

(また、よくわからん用語をぶっこんできやがった。)
CAN於けるセグメントの話

セグメントは複数のクウォンタムで構成されてて、
4つで構成される。
- Synchronization Segment
- Propagation Segment
- Phase Segment1
- Phase Segment2
そして、全部合わせて1bit分。

このセグメントはそれぞれどういう意味があるの?

とりあえず表にしてみよう。
セグメント | 日本語名 | 機能 |
---|---|---|
Synchronization Segment | 同期セグメント | バスレベルのエッジが発生 |
Propagation Segment | 伝播時間セグメント | 遅延時間を補正 |
Phase Segment1 | 位相バッファセグメント1 | サンプリングポイントの前 |
Phase Segment2 | 位相バッファセグメント2 | サンプリングポイントの後ろ |

んー。まだわからん。

次は絵に描いてみよう。


あ、なるほど。
それぞれのセグメントのクウォンタム数が確定するとサンプリングポイントも確定って感じか。

あれ?
でも、「Synchronization Segment」と「Propagation Segment」って要らなくない?

サンプリングポイントの決定には必要ないんだけど、
CANのハードウェア仕様としては必要な概念になるね。
Synchronization Segmentはエッジを作るところだから当然必要。
Propagation Segmentは回線遅延補正用で、ソフトウェアからは見ない形で伸縮している。
実際、CANコントローラによっては、Propagation SegmentとPhase Segment1と統合した状態で設定するのも多いので、あまり気にしなくても良いだろうね。
ちなみに、Propagation SegmentとPhase Segment1を統合した場合の表現は、大体以下になる。
- Propagation Segment+Phase Segment1:tseg1
- Phase Segment2:tseg2

ということはCANコントローラによって表現が違うことがあるってこと?

そうなるね。
よって、両方の呼び方を覚えておいた方が良いね。

確かにこれは覚えておかないと危険そうだ。

とりあえず、Vector社の「はじめてのCAN/CAN-FD」に書かれていなさそうば部分の補完はOKかな。

(CANの話で3回も消費するとは。この先どうなるんだ?)
まとめ

まとめだよ。
- サンプリングポイントを決定するには各セグメントのクウォンタム数を決定する必要がある。
- セグメントは4種で1bit分。
- Synchronization Segment。
- Propagation Segment。
- Phase Segment1。
- Phase Segment2。
- Propagation Segment+Phase Segment1でtseg1、Phase Segment2をtseg2と表現することもある。
バックナンバーはこちら。
ボッシュ自動車ハンドブック 日本語第4版
CAN入門講座: 組込みマイコンで学ぶCANプロトコルとプログラミング
CANおよびCANopenによる組み込みネットワーク
カーハッカーズ・ハンドブック ―車載システムの仕組み・分析・セキュリティ
車載イーサネット “クルマIT”高度化への基盤技術
詳解 車載ネットワーク -CAN、CAN FD、LIN、CXPI、Ethernetの仕組みと設計のために
自動車用ECU開発入門 システム・ハードウェア・ソフトウェアの基本とAUTOSARによる開発演習 (エンジニア入門シリーズ122)
車載ネットワ-ク・システム徹底解説: CAN,LIN,FlexRayのプロトコルと実装 (Design wave mook)
コメント