RA6M5 I2C転送速度

お世話になります

RIIC マスターモード で使用しています
転送速度について 教えてください
Standard Mode 時 100KHz のClk波形が確認できました
Fast Mode        時 370KHz程度の Clk波形でした

400KHz のClkが出力されていると思っていたのですが 想定よりClkが遅いです
Rate =Fast Mode に設定するだけでは ダメなのでしょうか?

Parents
  • I2Cはチャンネルによって100k/400k/1Mに対応したドライブ能力があります。それとは別にレジスタとしてICMRのCKSビット(PCLKからのプリスケーラ設定)、ICBRH、ICBRLがSCLクロック周波数に影響します。FSPのr_iic_b_masterのrate設定だけではなくRise Time/Fall Time/Duty CycleもSCL周波数に影響します。どの値が適正なのかまでは私はこれからRA6T2を用いた回路基板で確認しますが、rateだけではなく他の設定値にも注意してみてください。

  • 400kHzにならない 理由がなんとなく 理解できました
    チョコさん Yamamotoさん ありがとうございます。

  • RA6M5でI2C(RIIC)のクロックの速度をみてみましたが、

    Fast-mode設定で、

    周期 2.32us, 431kbps

    となりました。atsuatsuさまとは逆の結果になってしまいました。

    クロックは、外部水晶振動子 XTAL(24MHz)ベースで、PCLKB=50MHzです。

    FSPで設定されたレジスタ値を見ましたが、

    CKS=1(1/2分周)

    BRL(Lパルス幅を決めるレジスタ)=0x19 [Lパルス幅=1.14us]

    BRH(Hパルス幅を決めるレジスタ)=0x1a [Hパルス幅1.18us]

    でした。[内はパルス幅の実測値]

    ビットレートを変更する箱があるので、ここに、400,000を入れた場合は、空白の時と同じレジスタ値でした。

    手元の環境では、400kbpsより速いので、試しに375,000(375kbps)を設定した場合は

    BRL=0x1c [Lパルス幅=1.26us]

    BRH=0x1b [Hパルス幅1.23us]

    周期、2.49us, 401.6kbps

    になりました。

    atsuatsuさまの環境では、速度を速くしたい方向だと思いますが、400,000より大きな数値を入れるとエラーになります。ユーザプログラムで、BRLとBRHのレジスタを変更すれば、400kbpsに設定可能かとは思います。(PCLKB=50MHzで1/2分周の場合、1bitで40nsパルス幅が変わるはずです。)

  • チョコです。

    >Fast-mode設定で、

    >周期 2.32us, 431kbps

    これは明らかおかしいですね。Fast-modeは最大400kなので、規格を外れています。

    >BRL=0x1c [Lパルス幅=1.26us]

    これもSCLのL幅のMINを守れていませんね。

    Fast-mode Plusにでもなっているのですかね。

    以上

  • IICペリフェラルのレジスタはUART(SCI)のボードレートのようなもと同じ、プリスケーラとカウンタを組み合わせたような作りで規格に合う周波数とDutyになるように設定するだけです。元の投稿も含めてFSPの設定GUIおよび生成コードは残念ながらそれほど万能ではないということなんでしょうね。生成されたコードを見てみるとrate設定で速度モードを選べる意味が感じられないなと感じます。

  • tf さま

    お世話になります
    RIIC設定について教えてください

    >ビットレートを変更する箱があるので
    ---> どこにあるのでしょう?

    コンフィグ画面では Rateは standard/fast/fastplus の選択はあるのですが
    Custom Rateの欄がありません 。
    この場所を表示する手順を 教えてください

  • 特に奥まったところにある訳ではないのですが。

    FSP5.5.0です。


  • FSP 5.1.0 使用のため 見つからなかったみたいです
    ありがとうございました

  • こんにちは。

    FSPのr_iic_masterドライバにおいて、Fast-modeの設定時に400kbpsを超える出力になるという現象ですが、同ドライバの設定にある Rise Time, Fall Time を実際に測定した値に設定していないからではないでしょうか。ICBFH(I2C バスビットレートHigh レジスタ)にある計算式の説明に以下の注意書きがあります。

    「注 2. SCLn ライン立ち上がり時間[tr]および SCLn ライン立ち下がり時間[tf]は、バスライン総容量[Cb]とプルアップ抵抗[Rp]に依存します。詳細については、NXP 社の I2C バス規格書を参照してください。」

    実際に測定したtrとtfをドライバに設定すると、400kbpsに近い出力になると思います。

Reply
  • こんにちは。

    FSPのr_iic_masterドライバにおいて、Fast-modeの設定時に400kbpsを超える出力になるという現象ですが、同ドライバの設定にある Rise Time, Fall Time を実際に測定した値に設定していないからではないでしょうか。ICBFH(I2C バスビットレートHigh レジスタ)にある計算式の説明に以下の注意書きがあります。

    「注 2. SCLn ライン立ち上がり時間[tr]および SCLn ライン立ち下がり時間[tf]は、バスライン総容量[Cb]とプルアップ抵抗[Rp]に依存します。詳細については、NXP 社の I2C バス規格書を参照してください。」

    実際に測定したtrとtfをドライバに設定すると、400kbpsに近い出力になると思います。

Children
No Data