こんにちは、みんな、
MAG3110 の I2Cを 参照する と 次のようになります :
SCL および SDA 信号は オープン ドレイン バッファ によって 駆動され ます...
この オープンドレイン を どう 処理します か?
誰か 私に 説明して くれませんか ?
よろしくお願いします
こんにちは、トーマス。
もし お時間 があれば 、 MAG3110 について質問 させてください
。 DR_STATUS は 、 更新 、 変更された レコードを 読み取るためだけに 使用し 、 適切 な レジスタ OUT_x_xSB を 読み取る 場合 に 使用します。
必要な 識別子( WHO_AM_I ) は 、 I2C を 配置するための I2C の アドレス指定( 0x0E) には 不十分です か?
AC = 1 および TM = 0 が 最良の選択です 。これらは、 レジスタの 更新を 設定するために 使用され 、その後 、 読み取り 時に アルゴリズムで そこに行くことを 決定します...
OUT_x_xSB の 値を調整するために レジスタ OFF_x_xSB を定義するにはどうすればよいですか?
REG2 が[ RAW] = 0 の場合、 MAG3110 は 修正 なし で OUTx_x_xSB を直接変更する SO、 アルゴリズムには 何も 実装 せず 、 OUT を 読み取る だけ ですか?
周波数 CTRL_REG1 を どのように設定すればよいですか?
よろしくお願いします、
ニキ
こんにちは、ニキさん
いいえ、バスの速度ではありません。バス クロックから I²C クロックまでのクロック速度を分割するプリスケーラがあります (MAG3110 は最大 400kHz の I²C 速度を受け入れます)。
たとえば、プロセッサ Expert を使用している場合は、I²C 分周レジスタを設定することでバス周波数を変更できます。
アンソニー
こんにちは、ニキさん
K10 RMについては、セクション44.3.2でI2C 周波数分周レジスタ (I2Cx_F)、I2Cx_F レジスタには 2 つのフィールドがあります。
- MULT --> バス クロックの分周係数を設定します。この MULT = 0b00 のままにすると、内部周波数 = バス クロックになります。
- ICR --> この値は SCL 分周器の値を示します。ICR値に対応するSCL値はセクション44.4.1.10で確認できます。I2C 分周器と値の保持。
I 2 C ボーレートを決定する式は次のとおりです。
I 2 Cボーレート = バス速度(Hz)/(mul × SCL分周器)
SCL 周波数を 100 kHz に設定する例を次に示します。
バス速度(Hz) = 48 MHz = 48 000 000 Hz
mul = 1
SCL分周器 = 480 (ICR = 0x27、表44.41を参照)
式に値を適用すると、次のようになります。
48 000 000 / (1 * 480) = 100 000 Hz = 100 kHz
この情報がお役に立つことを願っております。そうでない場合は、 Kinetis の専門家にお問い合わせください。
よろしくお願いいたします。
トーマス
はい 、 わかりました。 別のもの を思いつきました 。 返信 ありがとうございます 。
話は変わりますが 、 MK10DN512ZVLL10 に 接続する 必要があります 。
いくつか疑問 があります が、現在 主 なものは I2C レジスタ 周波数 分周器 レジスタ( I2Cx_F) の 定義 です 。
バスクロックのデフォルトは 48 MHzです。これはバスの速度ですか?
他のパラメータを 正しく 定義するにはどうすればいいでしょうか?
こんにちは、ニキさん
何を知りたいのかよく分かりません。質問を言い換えるか、詳細を追加していただけますか?
MAG3110FC は、標準モードと高速モードの両方で NXP I 2 C 仕様 ( UM10204 ) に準拠しています。これはオープン ドレイン通信規格であり、 MAG3110FC データシート の図 4 に示すように、通信を可能にするために I 2 C ラインから電源にコネクテッドされたプルアップ抵抗を必要とします。プルアップ抵抗は、オープンドレインインターフェースによってラインが低く駆動されていないときに、ラインを高く引き上げます。
お役に立てれば幸いです。
よろしくお願いいたします。
トーマス
追伸: 私の回答が質問の解決に役立った場合は、「正解」とマークしてください。ありがとう。