RA6M5にCANバスのアイドル時間を測定する機能があるようなので
バストラフィック測定を試みているのですが
取得できるアイドル時間のカウンタの値(BLSTSレジスタのBLC)がおかしいです。
CANバス完全アイドル状態で
測定時間を変えながら、BLCの値を取得してみたところ、下記のようになりました。
測定時間 1ms BLC:約680,000
測定時間 2ms BLC:約700,000
測定時間 4ms BLC:約770,000
測定時間10ms BLC:約785,000
測定時間100ms BLC:約1250,000
CANFDCLK クロックは 40 MHzのため
CANバス完全アイドル状態の時は
BLCの値× 25nsが 測定時間と一致するものかと思ったのですが、
680,000 × 25 ns = 17,000,000ns = 17ms
となり、良く分からない数値がBLCに入ってきてしまいます。
値も安定しておらず、測定区間1msのときで 650,000 - 690,000 くらいまでふらふらします。
CAN通信自体は問題なくできている状態です。
ユーザーズマニューアルにはテストモードだとうまく測定できないと記載されているので
下記のようにテストモードは使っていません。
CANバスにデータを流すと、若干BLCの数値が下がるため測定自体はしているようです。
何か分かる方おられましたらアドバイス頂けると助かります。
R_CANFD_Type * p_reg = R_CANFD;
// オペレーションモード中のみ有効
p_reg->CFDC2[1].BLCT_b.BLCE = 1; // 測定カウンタを動作モードに設定
p_reg->CFDC2[1].BLCT_b.BLCLD = 1; // カウンタをBLSTSにロード + カウンタリセット
BLC = (uint32_t)(p_reg->CFDC2[1].BLSTS >> 3);
idle_time_ns = BLC * 25; // CANFDCLK 40MHzのとき、25ns