PR

DS3231 データシート日本語

これを参考にしてます。

姫野秀徳

組み込みエンジニアとしてメーカー勤務10年。
第二種電工事士、基本情報技術者、Code.org認定教師。
microbitを用いた電子工作&プログラミング教室を開校。
組み込み開発の実際を発信するyoutube活動も行う。

無料で学べる組み込み開発オンラインスクールはじめました!
https://kumicla.tatepro.com

姫野秀徳をフォローする

一般的な説明

DS3231は、低コストで非常に高精度なI2Cリアルタイムクロック(RTC)で、温度補償型クリスタルオシレーター(TCXO)とクリスタルが統合されています。
このデバイスはバッテリー入力を内蔵しており、メイン電源が遮断されても正確な時刻を保持します。
クリスタル共振器の統合により、デバイスの長期的な精度が向上し、製造ラインでの部品点数も減少します。
DS3231は商用および産業用の温度範囲で提供され、16ピンの300ミルSOパッケージで提供されます。

RTCは秒、分、時間、曜日、日付、月、および年の情報を保持します。
月末の日付は31日未満の月に合わせて自動的に調整され、うるう年の修正も行います。
時計は24時間形式または12時間形式(AM/PMインジケーター付き)で動作します。
2つのプログラム可能な時刻アラームと、プログラム可能な正方形波出力が提供されます。
アドレスとデータはI2C双方向バスを介してシリアルに転送されます。

精密な温度補償型電圧リファレンスとコンパレータ回路がVCCの状態を監視し、電源障害を検出してリセット出力を提供し、必要に応じてバックアップ電源に自動的に切り替えます。
さらに、RSTピンはプッシュボタン入力として監視され、マイクロプロセッサのリセットを生成します。

利点と特徴

  • 非常に高精度なRTCが全ての時刻管理機能を完全にサポート
  1. リアルタイムクロックは秒、分、時間、月の日付、月、曜日、および年をカウントし、うるう年の補正も行います。2100年まで有効です。
  2. 精度:0°Cから+40°Cで±2ppm
  3. 精度:-40°Cから+85°Cで±3.5ppm
  4. デジタル温度センサー出力:±3°Cの精度
  5. エイジングトリム用レジスタ
  6. RST出力/プッシュボタンリセットデバウンス入力
  7. 2つの時刻アラーム
  8. プログラム可能な正方形波出力信号
  • シンプルなシリアルインターフェースでほとんどのマイコンに接続可能
  1. 高速(400kHz)I2Cインターフェース
  • バッテリーバックアップ入力による連続的な時刻管理
  1. 低消費電力動作でバッテリーバックアップの稼働時間を延長
  2. 3.3V動作
  • 動作温度範囲:商用(0°Cから+70°C)および産業用(-40°Cから+85°C)
  • Underwriters Laboratories®(UL)認定

アプリケーション

定格

推奨環境

電気的特性

I2Cデータ通信

警告: バッテリーバックアップモードの間に-0.3V以下の負のアンダーシュートが発生すると、データが失われる可能性があります。

注記 2: -40°Cでの限界は設計によって保証されており、生産テストは行われていません。

注記 3: すべての電圧はグラウンドに対して参照されています。

注記 4: ICCA—SCLクロックが最大周波数400kHzで動作します。

注記 5: 電流は温度変換電流を含む平均入力電流です。

注記 6: RSTピンには内部に50kΩ(名目値)のプルアップ抵抗がVCCに接続されています。

注記 7: この期間が経過した後、最初のクロックパルスが生成されます。

注記 8: デバイスは、SCL信号の下降エッジの未定義領域をブリッジするために、SDA信号に対して少なくとも300nsのホールドタイムを内部的に提供する必要があります(SCL信号のVIH(MIN)に関連付けられます)。

注記 9: デバイスがSCL信号の低期間(tLOW)を伸ばさない場合にのみ、最大tHDを満たす必要があります。

注記 10: ファストモードデバイスはスタンダードモードシステムで使用できますが、その場合、tSU≥ 250nsの要件を満たす必要があります。デバイスがSCL信号の低期間を伸ばさない場合、自動的にこの要件が満たされます。デバイスがSCL信号の低期間を伸ばす場合、次のデータビットをSDAラインに出力する必要があります。tR(MAX) + tSU= 1000 + 250 = 1250nsの間にSCLラインが解放される前に出力する必要があります。

注記 11: CB—1つのバスラインの総キャパシタンス(pF単位)です。

注記 12: tOSFパラメータは、0.0V ≤ VCC ≤ VCC(MAX)および2.3V ≤ VBAT ≤ 3.4Vの電圧範囲でOSFフラグがセットされるまでにオシレーターが停止している必要がある時間の期間です。

注記 13: この遅延は、オシレーターが有効で動作している場合にのみ適用されます。EOSCビットが1の場合、tRECはバイパスされ、RSTはすぐにハイになります。RSTの状態はI2Cインターフェース、RTC、またはTCXOには影響しません。

詳細説明

DS3231は、温度補償型の32kHzクリスタルオシレーターによって駆動されるシリアルRTCです。
このTCXO(温度補償型クリスタルオシレーター)は、安定で高精度な基準クロックを提供し、-40°Cから+85°Cの範囲でRTCを年間±2分以内の精度で維持します。
TCXOの周波数出力は32kHzピンで利用可能です。
RTCは低消費電力のクロック/カレンダーで、2つのプログラム可能な時刻アラームと、プログラム可能な正方形波出力を備えています。
INT/SQWピンは、アラーム条件による割り込み信号または正方形波出力のいずれかを提供します。
クロック/カレンダーは、秒、分、時間、曜日、日付、月、年の情報を提供します。
月末の日付は、31日未満の月に自動的に調整され、うるう年の修正も行います。
時計は24時間形式または12時間形式(AM/PMインジケーター付き)で動作します。
内部レジスタはI2Cバスインターフェースを通じてアクセス可能です。

温度補償型の電圧リファレンスとコンパレータ回路がVCCのレベルを監視し、電源障害を検出して必要に応じてバックアップ電源に自動的に切り替えます。
RSTピンは外部プッシュボタン機能を提供し、電源障害のイベントを示すインジケーターとして機能します。

動作

ブロックダイアグラムは、DS3231の主要な要素を示しています。
これらの8つのブロックは、4つの機能グループに分類できます:TCXO、電源制御、プッシュボタン機能、およびRTC。
各ブロックの動作は、以下のセクションで個別に説明されています。

32kHz TCXO

温度センサー、オシレーター、および制御ロジックがTCXO(温度補償型クリスタルオシレーター)を形成します。
コントローラーは、オンチップの温度センサーの出力を読み取り、ルックアップテーブルを使用して必要なキャパシタンスを決定し、AGEレジスタのエイジング補正を追加してから、キャパシタンス選択レジスタを設定します。
AGEレジスタの変更を含む新しい値は、温度値に変化があったとき、またはユーザーが開始した温度変換が完了したときにのみ読み込まれます。
温度変換は、VCCが最初に適用されたときと、その後64秒ごとに実行されます。

電源制御

この機能は、温度補償型の電圧リファレンスとコンパレータ回路によって提供され、VCCのレベルを監視します。
VCCがVPFより大きい場合、デバイスはVCCによって電源が供給されます。
VCCがVPFより小さいがVBATより大きい場合、DS3231はVCCによって電源が供給されます。
VCCがVPFより小さく、VBATよりも小さい場合、デバイスはVBATによって電源が供給されます。詳細は、表1を参照してください。

<表1>

バッテリーを保護するために、VBATがデバイスに初めて適用されるとき、VCCがVPFを超えるまで、または有効なI2Cアドレスがデバイスに書き込まれるまで、オシレーターは起動しません。
オシレーターの典型的な起動時間は1秒未満です。VCCが適用されてから約2秒後、または有効なI2Cアドレスが書き込まれると、デバイスは温度測定を行い、計算された補正をオシレーターに適用します。
一度オシレーターが動作し始めると、有効な電源(VCCまたはVBAT)が利用可能である限り、オシレーターは継続して動作し、デバイスは64秒ごとに温度を測定し、オシレーターの周波数を補正し続けます。

電源(VCC)が初めて適用されるか、有効なI2Cアドレスがデバイスに書き込まれると(VBAT)、時刻と日付のレジスタは01/01/00 01 00:00:00(DD/MM/YY DOW HH:MM)にリセットされます。

VBAT動作

VBATが供給されているとき、いくつかの動作モードによってVBATから引き出される電流量が変わります。
デバイスがVBATで動作しており、シリアルインターフェースがアクティブな場合、アクティブバッテリー電流(IBATA)が引き出されます。
シリアルインターフェースが非アクティブな場合は、時刻保持電流(IBATT)が使用されます。
IBATTには、平均温度変換電流(IBATTC)が含まれます(詳細はアプリケーションノート3644: 「正確なリアルタイムクロックのための電力考慮事項」を参照してください)。
温度変換電流(IBATTC)は、システムが定期的な高電流パルスをサポートし、かつ有効な電圧レベルを維持できる必要があるため、仕様として示されています。
データ保持電流(IBATTDR)は、オシレーターが停止しているとき(EOSC = 1)のデバイスによって引き出される電流です。
このモードは、時間と日付の情報を維持する必要がない場合、例えばシステムが顧客に出荷されるのを待っているときなどにバッテリーの要求を最小限にするために使用できます。

プッシュボタンリセット機能

DS3231は、RST出力ピンにプッシュボタンスイッチを接続するための機能を提供します。
DS3231がリセットサイクル中でないとき、RST信号の低下エッジを継続的に監視します。
エッジ遷移が検出されると、DS3231はRSTを低くしてスイッチのデバウンスを行います。
内部タイマー(PBDB)が期限切れになると、DS3231はRSTラインを引き続き監視します。
ラインがまだ低い場合、DS3231はラインの上昇エッジを探し続けます。
リリースを検出すると、DS3231はRSTピンを低くし、tRSTの間低く保ちます。

RSTはまた、電源障害条件を示すためにも使用されます。
VCCがVPFより低い場合、内部電源障害信号が生成され、RSTピンが低くなります。
VCCがVPFより高いレベルに戻ると、RSTピンは約250ms(tREC)の間低く保たれ、電源供給が安定するのを待ちます。
VCCが適用されるときにオシレーターが動作していない場合(電源制御セクションを参照)、tRECはバイパスされ、RSTはすぐにハイになります。
プッシュボタンによるリセットまたは電源障害検出によるRST出力のアサーションは、DS3231の内部動作には影響しません。

リアルタイムクロック

TCXOからのクロックソースを使用して、RTCは秒、分、時間、曜日、日付、月、年の情報を提供します。
月末の日付は、31日未満の月に自動的に調整され、うるう年の修正も行います。
時計は24時間形式または12時間形式(AM/PMインジケーター付き)で動作します。
クロックは2つのプログラム可能な時刻アラームと、プログラム可能な正方形波出力を提供します。
INT/SQWピンは、アラーム条件による割り込みを生成するか、正方形波信号を出力します。
選択は、INTCNビットによって制御されます。

<図1>

アドレスマップ

図1は、DS3231の時刻保持レジスタのアドレスマップを示しています。
マルチバイトアクセス中に、アドレスポインタがレジスタスペースの末尾(12h)に達すると、アドレスポインタは00hの位置にラップアラウンドします。
I2CのSTART条件やアドレスポインタが00hの位置にインクリメントされると、現在の時刻が別のレジスタセットに転送されます。
このセカンダリレジスタから時刻情報が読み取られ、その間もクロックは動作し続けることができます。
これにより、メインレジスタが読み取り中に更新されてもレジスタを再読する必要がなくなります。

I2Cインターフェース

I2Cインターフェースは、VCCまたはVBATが有効なレベルにある限り、アクセス可能です。
もしマイコンがVCCの喪失やその他のイベントによってリセットされると、マイコンとDS3231のI2C通信が非同期になる可能性があります(例えば、マイコンがDS3231からデータを読み取っている間にリセットされるなど)。
マイコンがリセットされた場合、DS3231のI2Cインターフェースは、SCLをトグルすることで既知の状態に戻すことができます。
SDAがハイレベルであるのが観察されると、その時点でマイコンはSDAをローにし、SCLをハイのままにしてSTART条件を生成するべきです。

時計とカレンダー

時刻とカレンダーの情報は、適切なレジスタバイトを読み取ることで取得します。
図1はRTCレジスタを示しています。
時刻とカレンダーのデータは、適切なレジスタバイトを書き込むことで設定または初期化されます。
時刻とカレンダーレジスタの内容は、2進化十進法(BCD)形式です。
DS3231は12時間モードまたは24時間モードのいずれかで動作させることができます。
時刻レジスタのビット6が12時間モードまたは24時間モードの選択ビットとして定義されています。
このビットがハイの場合、12時間モードが選択されます。
12時間モードでは、ビット5がAM/PMビットで、ロジックハイがPMを示します。
24時間モードでは、ビット5は20時間ビット(20〜23時間)を示します。
世紀ビット(月レジスタのビット7)は、年レジスタが99から00にオーバーフローするときに切り替わります。

曜日レジスタは真夜中にインクリメントします。
曜日に対応する値はユーザー定義ですが、順序的でなければなりません(例えば、1が日曜日であれば、2は月曜日、という具合です)。
不正な時刻や日付の入力は、未定義の動作を引き起こします。

時刻と日付のレジスタを読み取ったり書き込んだりする際には、内部レジスタが更新される際のエラーを防ぐために、セカンダリ(ユーザー)バッファが使用されます。
時刻と日付のレジスタを読み取るとき、ユーザーバッファは内部レジスタと同期されます。
この同期は、START条件が発生したときやレジスタポインタがゼロに戻るときに行われます。
時計が動作し続ける間、セカンダリレジスタから時刻情報が読み取られます。
これにより、メインレジスタが読み取り中に更新されてもレジスタを再読み取る必要がなくなります。

秒レジスタに書き込みが行われると、カウントダウンチェーンがリセットされます。
書き込み転送は、DS3231からのアクノリッジがあるときに発生します。
カウントダウンチェーンがリセットされた後は、ロールオーバーの問題を避けるために、残りの時刻と日付のレジスタを1秒以内に書き込む必要があります。
1Hzの正方形波出力が有効な場合、秒データ転送後500msにハイに遷移します。
ただし、オシレーターがすでに動作していることが前提です。

アラーム

DS3231には、2つの時刻/日付アラームがあります。
アラーム1はレジスタ07hから0Ahに書き込むことで設定できます。
アラーム2はレジスタ0Bhから0Dhに書き込むことで設定できます。
アラームは、アラーム有効ビットおよびINTCNビットを制御レジスタで設定することで、アラーム条件に一致したときにINT/SQW出力をアクティブにするようにプログラムできます。
各時刻/日付アラームレジスタのビット7はマスクビットです(表2)。
各アラームのマスクビットがすべてロジック0の場合、アラームは時刻保持レジスタの値が対応するアラームレジスタの値と一致する時にのみ発生します。
アラームは、1秒、1分、1時間、1日、または1日に繰り返し設定することもできます。
表2に示されている設定が可能です。
表に記載されていない構成は、非論理的な動作を引き起こす可能性があります。

DY/DTビット(アラーム日付/曜日レジスタのビット6)は、そのレジスタのビット0から5に格納されたアラーム値が曜日を反映するか月の日付を反映するかを制御します。
DY/DTがロジック0に設定されている場合、アラームは月の日付と一致することによって発生します。
DY/DTがロジック1に設定されている場合、アラームは曜日と一致することによって発生します。

RTCレジスタの値がアラームレジスタの設定と一致すると、対応するアラームフラグ「A1F」または「A2F」ビットがロジック1に設定されます。
対応するアラーム割り込み有効ビット「A1IE」または「A2IE」もロジック1に設定され、INTCNビットがロジック1に設定されている場合、アラーム条件によってINT/SQW信号がアクティブになります。
この一致は、時刻および日付レジスタの1秒ごとの更新時にテストされます。

<表2>

特殊用途レジスタ

DS3231には、リアルタイムクロック、アラーム、正方形波出力を制御する2つの追加レジスタ(制御レジスタとステータスレジスタ)があります。

制御レジスタ (0Eh)

ビット7: オシレーター有効 (EOSC)

ロジック0に設定すると、オシレーターが起動します。
ロジック1に設定すると、DS3231がVBATに切り替わるときにオシレーターが停止します。
このビットは、電源が最初に供給されるときにクリア(ロジック0)されます。
DS3231がVCCで動作している場合、EOSCビットの状態に関係なくオシレーターは常にオンです。
EOSCが無効化されている場合、すべてのレジスタデータは静的になります。

ビット6: バッテリー駆動の正方形波出力有効 (BBSQW)

INTCN = 0 かつ VCC < VPF のときにこのビットがロジック1に設定されると、正方形波が有効になります。
BBSQWがロジック0の場合、VCC < VPF のときにINT/SQWピンはハイインピーダンスになります。
このビットは、電源が最初に供給されるときに無効化(ロジック0)されます。

ビット5: 温度変換 (CONV)

このビットを1に設定すると、温度センサーが温度をデジタルコードに変換し、TCXOアルゴリズムを実行してキャパシタンスアレイをオシレーターに更新します。
この操作は、すでに変換が進行中でないときにのみ行われます。
ユーザーは、新しいTCXOの実行を強制する前に、ステータスビットBSYを確認する必要があります。
ユーザーが開始した温度変換は、約2msの間BSYビットに影響を与えません。
CONVビットは書き込まれてから変換が完了するまで1のままで、変換が完了するとCONVとBSYの両方が0になります。
CONVビットは、ユーザーが開始した変換の状態を監視する際に使用されるべきです。

ビット4およびビット3: レート選択 (RS2 と RS1)

これらのビットは、正方形波出力が有効になっているときの正方形波の周波数を制御します。
次の表は、RSビットで選択可能な正方形波の周波数を示しています。
これらのビットは、電源が最初に供給されるときにロジック1(8.192kHz)に設定されます。
これらのビットは、正方形波出力が有効になっているときの正方形波の周波数を制御します。
次の表は、RSビットで選択可能な正方形波の周波数を示しています。
これらのビットは、電源が最初に供給されるときにロジック1(8.192kHz)に設定されます。

ビット2: 割り込み制御 (INTCN)

このビットはINT/SQW信号を制御します。
INTCNビットがロジック0に設定されていると、INT/SQWピンに正方形波が出力されます。
INTCNビットがロジック1に設定されていると、時刻保持レジスタといずれかのアラームレジスタの一致がINT/SQW出力をアクティブにします(アラームが有効な場合)。
対応するアラームフラグは、INTCNビットの状態に関係なく常に設定されます。
INTCNビットは、電源が最初に供給されるときにロジック1に設定されます。

ビット1: アラーム2割り込み有効 (A2IE)

このビットがロジック1に設定されると、ステータスレジスタのアラーム2フラグ (A2F) ビットがINT/SQWをアサートすることを許可します(INTCN = 1のとき)。
A2IEビットがロジック0に設定されているか、INTCNがロジック0に設定されている場合、A2Fビットは割り込み信号を発生させません。
A2IEビットは、電源が最初に供給されるときに無効化(ロジック0)されます。

ビット0: アラーム1割り込み有効 (A1IE)

このビットがロジック1に設定されると、ステータスレジスタのアラーム1フラグ (A1F) ビットがINT/SQWをアサートすることを許可します(INTCN = 1のとき)。
A1IEビットがロジック0に設定されているか、INTCNがロジック0に設定されている場合、A1FビットはINT/SQW信号を発生させません。
A1IEビットは、電源が最初に供給されるときに無効化(ロジック0)されます。

ステータスレジスタ (0Fh)

ビット7: オシレーター停止フラグ (OSF)

このビットがロジック1の場合、オシレーターが停止しているか、ある期間停止していたことを示します。このビットはオシレーターが停止した時にロジック1に設定されます。OSFビットが設定される条件の例は以下の通りです:

  1. 初めて電源が供給された時。
  2. VCCとVBATの両方の電圧が振動をサポートするのに不十分な場合。
  3. バッテリー駆動モードでEOSCビットがオフにされた場合。
  4. 外部の影響によるクリスタルの問題(ノイズ、リークなど)。

このビットはロジック0に書き込むまでロジック1のままです。

ビット3: 32kHz出力有効 (EN32kHz)

このビットは32kHzピンの状態を制御します。
ロジック1に設定されると、32kHzピンが有効になり、32.768kHzの正方形波信号が出力されます。
ロジック0に設定されると、32kHzピンは高インピーダンス状態になります。
このビットの初期電源投入状態はロジック1で、電源がDS3231に供給された後に32.768kHzの正方形波信号が32kHzピンに現れます(オシレーターが動作している場合)。

ビット2: ビジー (BSY)

このビットはデバイスがTCXO機能を実行中であることを示します。
温度センサーへの変換信号がアサートされるとロジック1に設定され、デバイスが1分間のアイドル状態になるとクリアされます。

ビット1: アラーム2フラグ (A2F)

アラーム2フラグビットがロジック1の場合、時刻がアラーム2レジスタと一致していることを示します。
A2IEビットがロジック1で、INTCNビットがロジック1に設定されていると、INT/SQWピンもアサートされます。
A2Fビットはロジック0に書き込むことでクリアされます。このビットはロジック0にのみ書き込むことができ、ロジック1に書き込もうとすると値は変更されません。

ビット0: アラーム1フラグ (A1F)

アラーム1フラグビットがロジック1の場合、時刻がアラーム1レジスタと一致していることを示します。
A1IEビットがロジック1で、INTCNビットがロジック1に設定されていると、INT/SQWピンもアサートされます。
A1Fビットはロジック0に書き込むことでクリアされます。
このビットはロジック0にのみ書き込むことができ、ロジック1に書き込もうとすると値は変更されません。

エイジングオフセット

エイジングオフセットレジスタは、ユーザーが提供する値を使用して、容量アレイレジスタ内のコードに加算または減算します。
このコードは二進数補数形式でエンコードされており、ビット7が符号ビットを表します。
1 LSB(最下位ビット)は、クリスタルピンの容量アレイにスイッチインまたはスイッチアウトされる小容量のコンデンサー1つを表します。
エイジングオフセットレジスタの容量値は、デバイスが各温度補償のために計算した容量値に加算または減算されます。
オフセットレジスタは、前回の変換から温度が変化した場合や、手動ユーザー変換(CONVビットの設定)中に、通常の温度変換中に容量アレイに追加されます。
エイジングレジスタの効果を即座に32kHz出力周波数に反映させたい場合は、各エイジングレジスタの変更後に手動変換を開始するべきです。
正のエイジング値は、アレイに容量を追加し、オシレーターの周波数を遅くします。
負の値は、アレイから容量を取り除き、オシレーターの周波数を速くします。
1 LSBあたりのppm(百万分の1)の変化は、異なる温度で異なります。
このレジスタで使用される値によって、周波数と温度の曲線がシフトします。
+25°Cでは、1 LSBが通常約0.1ppmの周波数変化を提供します。

エイジングレジスタを使用する必要はなく、ECテーブルで定義された精度を達成するために必要な精度は得られますが、特定の温度でのエイジング補償に役立てることができます。
レジスタの温度に対する精度への影響を示すグラフは、典型的な動作特性セクションで確認できます。

温度レジスタ (11h–12h)

温度は10ビットコードで表され、解像度は0.25°Cです。
位置11hと12hでアクセスできます。
温度は二進数補数形式でエンコードされています。上位8ビット(整数部)は位置11hにあり、下位2ビット(小数部)は位置12hの上位ニブルにあります。
例えば、00011001 01b は +25.25°C です。電源がリセットされると、レジスタはデフォルトの温度0°Cに設定され、コントローラが温度変換を開始します。
温度は、VCCが最初に適用された時またはVBATでのI2Cアクセス時に読み取られ、その後は64秒ごとに読み取られます。
温度レジスタは、各ユーザー主導の変換後および64秒ごとの変換時に更新されます。
温度レジスタは読み取り専用です。

I2Cシリアルデータバス

DS3231は双方向I2Cバスとデータ伝送プロトコルをサポートしています。
バスにデータを送信するデバイスは「送信機」と定義され、データを受信するデバイスは「受信機」と定義されます。
メッセージを制御するデバイスは「マスター」と呼ばれ、マスターによって制御されるデバイスは「スレーブ」と呼ばれます。
バスは、シリアルクロック(SCL)を生成し、バスアクセスを制御し、STARTおよびSTOP条件を生成するマスターデバイスによって制御されなければなりません。
DS3231はI2Cバス上でスレーブとして動作します。
バスへの接続は、SCL入力およびオープンドレインSDA I/Oラインを介して行われます。
バス仕様には、標準モード(最大100kHzクロックレート)とファーストモード(最大400kHzクロックレート)が定義されています。DS3231は両方のモードで動作します。

以下のバスプロトコルが定義されています(図2参照):

  • データ転送は、バスがビジーでないときにのみ開始できます。
  • データ転送中、クロックラインが高い間はデータラインが安定している必要があります。クロックラインが高い間にデータラインが変化する場合は、制御信号として解釈されます。

以下のバス条件が定義されています:

  • バスがビジーでない: データラインとクロックラインの両方が高い。
  • データ転送のSTART: クロックラインが高い間にデータラインが高から低に変わると、START条件が定義されます。
  • データ転送のSTOP: クロックラインが高い間にデータラインが低から高に変わると、STOP条件が定義されます。
  • データが有効: START条件の後、データラインがクロック信号の高い期間中に安定しているときにデータが有効とされます。データラインの値は、クロック信号の低い期間中に変更する必要があります。データの各ビットごとに1クロックパルスがあります。
    各データ転送はSTART条件で開始され、STOP条件で終了します。
    STARTとSTOP条件の間に転送されるデータバイトの数に制限はなく、マスターデバイスによって決定されます。
    情報はバイト単位で転送され、各受信機は9ビット目のビットでアクノリッジします。
  • アクノリッジ: 各受信機デバイスは、アドレス指定されると、各バイト受信後にアクノリッジを生成する必要があります。
    マスターデバイスは、このアクノリッジビットに関連付けられた追加のクロックパルスを生成する必要があります。
    アクノリッジを行うデバイスは、アクノリッジのクロックパルス中にSDAラインを引き下げる必要があります。
    このため、SDAラインはアクノリッジに関連するクロックパルスの高い期間中に安定して低くなっている必要があります。
    もちろん、セットアップ時間とホールド時間も考慮する必要があります。
    マスターは、スレーブから最後のバイトがクロックアウトされたときにアクノリッジビットを生成せずにデータの終了を信号として送ります。
    この場合、スレーブはデータラインを高い状態に保ち、マスターがSTOP条件を生成できるようにします。

図3および図4は、I2Cバスでのデータ転送の詳細を示しています。R/Wビットの状態によって、2種類のデータ転送が可能です。

マスター送信機からスレーブ受信機へのデータ転送:

マスターが最初に送信するバイトはスレーブアドレスです。
その後、いくつかのデータバイトが続きます。スレーブは各受信バイトの後にアクノリッジビットを返します。
データは最上位ビット(MSB)が最初に送信されます。

スレーブ送信機からマスター受信機へのデータ転送:

最初のバイト(スレーブアドレス)はマスターによって送信されます。
スレーブはアクノリッジビットを返します。
その後、スレーブからマスターへいくつかのデータバイトが送信されます。
マスターは最後のバイト以外のすべての受信バイトの後にアクノリッジビットを返します。
最後の受信バイトの後にはアクノリッジなし(ノーアクノレッジ)が返されます。

マスターデバイスはすべてのシリアルクロックパルスとSTARTおよびSTOP条件を生成します。
転送はSTOP条件または繰り返しSTART条件で終了します。
繰り返しSTART条件は次のシリアル転送の開始でもあるため、バスは解放されません。
データは最上位ビット(MSB)が最初に送信されます。

DS3231は以下の2つのモードで動作できます:

スレーブ受信モード(DS3231書き込みモード):

シリアルデータとクロックはSDAおよびSCLを通じて受信されます。
各バイトが受信された後、アクノリッジビットが送信されます。
STARTおよびSTOP条件はシリアル転送の開始と終了として認識されます。
スレーブアドレスと方向ビットを受信した後にハードウェアによってアドレス認識が行われます。
スレーブアドレスバイトは、マスターがSTART条件を生成した後に最初に受信されるバイトです。
スレーブアドレスバイトには7ビットのDS3231アドレス(1101000)が含まれ、その後に方向ビット(R/W)が続きます。書き込みの場合、R/Wビットは0です。
スレーブアドレスバイトを受信してデコードした後、DS3231はSDAでアクノリッジを出力します。
DS3231がスレーブアドレス+書き込みビットをアクノリッジした後、マスターはDS3231にワードアドレスを送信します。これにより、DS3231のレジスタポインタが設定され、DS3231は転送をアクノリッジします。その後、マスターはゼロまたはそれ以上のデータバイトを送信でき、DS3231は各受信バイトをアクノリッジします。レジスタポインタは各データバイト転送後にインクリメントされます。マスターはデータ書き込みを終了するためにSTOP条件を生成します。

スレーブ送信モード(DS3231読み取りモード):

最初のバイトはスレーブ受信モードと同様に受信されて処理されます。
ただし、このモードでは方向ビットが転送方向が逆であることを示します。
シリアルデータはSDAでDS3231によって送信され、シリアルクロックはSCLで入力されます。
STARTおよびSTOP条件はシリアル転送の開始と終了として認識されます。
スレーブアドレスバイトは、マスターがSTART条件を生成した後に最初に受信されるバイトです。
スレーブアドレスバイトには7ビットのDS3231アドレス(1101000)が含まれ、その後に方向ビット(R/W)が続きます。読み取りの場合、R/Wビットは1です。
スレーブアドレスバイトを受信してデコードした後、DS3231はSDAでアクノリッジを出力します。
DS3231は、レジスタポインタによって指し示されたレジスタアドレスからデータの送信を開始します。
レジスタポインタが読み取りモード開始前に書き込まれていない場合、最初に読み取られるアドレスはレジスタポインタに最後に保存されたアドレスです。
DS3231は、読み取りを終了するためにノーアクノレッジを受け取る必要があります。

この内容が良いと思ったら、いいね💖を押して教えてください!

組みクラ – 組み込み開発を学び、未来を創るエンジニアへ
無料で学べる!組み込み開発の基礎から応用までをマスターできるオンラインスクール「組みクラ」

組み込みエンジニアは、あらゆる産業の基盤を支える重要な職業です。
私たちタテプロは、次世代の組み込みエンジニアを育成し、業界の競争力を高めるために活動しています。
あなたも、無料で学べる「組みクラ」で、組み込み開発のスキルをしっかり身につけ、キャリアを加速させましょう!
今すぐ学び始めて、将来の自分をステップアップさせる第一歩を踏み出しませんか?

\立プロとLINEで友だちになりませんか/
立プロと友だちになる
組み込み機器
シェアしていただけると嬉しいです!

コメント

タイトルとURLをコピーしました