お世話になります
RIIC マスターモード で使用しています転送速度について 教えてくださいStandard Mode 時 100KHz のClk波形が確認できましたFast Mode 時 370KHz程度の Clk波形でした
400KHz のClkが出力されていると思っていたのですが 想定よりClkが遅いですRate =Fast Mode に設定するだけでは ダメなのでしょうか?
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に近い出力になると思います。