I2C OLDE設定で3MHzで正常に表示される理由は?

, ,

件名の通り、0.96インチのI2CソフトウェアOLED表示ライブラリを移植し、ハードウェアI2Cを手動で組み込んだ後、周波数を3MHzに設定したところ、なぜか正常に通信して表示されました。これはどういうことでしょう?先輩方

エレクトロニクス界の古典的法則:メーカーが提示するのは保証パラメータであり、爆発しなければそれが定格パラメータだ:rofl:
要するにSSD1306というチップは非常に頑丈で、出荷時からオーバークロック効果がついていて、あなたはもうその灰モードまでも開放している。
ただし友情提示:オーバークロックは一時的に楽しいが、量産時には火葬場状態になりかねない。自分用に遊ぶ分には好きにいじって構わないが、プロジェクトでこうやるのはやめろ。でないと量産時の環境ストレステストで、必ず面倒な不具合がたくさん出てくる。

使用しているMCUは何ですか?どのように設定しましたか?コードを表示してみてください。オシロスコープでI2Cバスの波形を測定してみてください。

クロックツリーが正しく設定されていない可能性があります。実際の動作周波数が3MHzではない可能性があります。

実験は真実を知る道であり、スレ主の探求精神に拍手を送ります。ただし、いわゆる「ベテラン」から一言だけアドバイス:動作が通ることは安定していることとは異なります。

このような過剰な仕様での動作は、研究室で実験として遊ぶ分には問題ありませんが、環境温度が上がったり、異なったロットのディスプレイに交換したりすると、データパケットの大量損失や初期化失敗などの問題が発生する可能性があります。製品として開発するのであれば、やはり400kHzに戻した方が無難でしょう。結局のところ、電子工学ではこの種の「謎の安定性」が最も怖いのです。

3MHz 居然没翻车?想请教下楼主,你用的主控是什么芯片?

我之前在 STM32 上试过 1MHz 就不太稳了。除了频率,你用的 I2C 上拉电阻是多大的?有没有外接其他的 I2C 设备?如果你手边有逻辑分析仪,能不能截个图让大家开开眼,看看这个 3MHz 下的 ACK 响应正不正。

それは非常に印象的な結果です!通常、SSD1306は最大400kHzで動作するように設計されています。3MHzまでPushしているということは、お使いの特定のモジュールのシリコンマージンがかなり余裕があることを示唆しています。

考慮すべき点がいくつかあります:

  • プルアップ抵抗: 1kΩまたは2.2kΩなど、非常に強いプルアップを使用していますか?これは3MHzでの立ち上がり時間を確実に短縮します。
  • バス容量: ジャンパーワイヤーは非常に短いと推測されますか?

オシロスコープでSCL/SDAラインを確認していただけると非常に助かります。波形が少し「丸みを帯びている」可能性があると思いますが、ロジック閾値内であれば問題ないでしょう。