EEPROM I2Cのクロックを早くすると・・・
これが「Wire」ライブラリのデフォルト、100kHz
でのSDA、SCL信号波形。
6バイトのデータを書き込んでいます。
プルアップ抵抗は2.2kΩ。
それを400kHzにすると。
およそ4倍に増速。
2kバイトのチップなので、コマンドにアドレスの
上位3ビットを混ぜ、その後に下位アドレス8ビット
が続きます。
ch1の波形は、書き込み開始から終わりまでの時間。
ch1がHになってSCLが出てくるまでの時間が、
関数内での前処理にかかっている時間になります。
波形を拡大。まず100kHz。
400kHzだと波形の立ち上がりが鈍って見えます。
SDA、SCLラインのプルアップ抵抗を大きくすると
鈍りが大きくなります。
4.7kΩにした波形です。
このくらいならまだ大丈夫。
プルアップ、1kΩだと電流を流しすぎの感じだし、
4.7kΩで400kHzだと立ち上がりの鈍りが気になります。
その中間で2.2kΩにしました。
その後、2kバイトのEEPROMから8kバイトのFRAMに交換。
「FM24C64」になると「コマンド+アドレス上位+アドレス下位」
の順で書き込みが始まり、その後にデータが続きます。
6バイトのデータを連続書き込みすると、ページ境界で分断される
ことがあるので、たまに、2回に分けて書き込みが行われます。
その時、FRAMだと「書き込み完了待ち」をしなくてすむので、
連続書き込みがスムーズに進みます。
※EEPROMだと4msほど待たなければならない。
あえて「書き込み完了チェック」を入れた様子がこの波形。
(ACK、NACKの確認)
6バイトのうち、前半で4バイト、後半で2バイトの書き込み
をしています。
FRAMなので、後半書き込み前の待ち時間が不要になります。
1回の書き込み完了確認で済んでいる様子が見えています。
※FRAMを使う前提ならこの待ちは不要
EEPROMだとACkが返ってくるまで4msほど待ちが続きます。
EEPROMよりFRAMのほうが便利、というところでしょうか。
| 固定リンク
「Arduino」カテゴリの記事
- Arduino UNO R3で±19.9V表示電圧計(2023.10.14)
- 「御詠歌プレーヤー」の製作 (MP3-TF-16Pモジュールの使用例)(2023.08.10)
- Arduino UNO R3のソケット・・思えば違和感がぁ(2023.07.07)
- 初めて買ったArduino UNO・・・今は(2023.05.25)
- 液晶表示コントローラ HD44780で迎撃(2023.05.16)
コメント