AN74875 シリアル I2C nvSRAM を使った設計 作成者: Shivendra Singh 関連プロジェクト: あり 関連製品ファミリ: CY14xxxxI、 CY14xxxxJ ソフトウェア バージョン: PSoC ® Creator™ 3.0 以降 関連アプリケーション ノート: AN61546、AN43593 AN74875 は、I2C nvSRAM デバイスの設計ガイドラインと回路例を提供します。I2C nvSRAM は、ゼロサイクル遅延の書き 込み動作と無制限の SRAM 書き換え回数を備えた高性能の不揮発性シリアル メモリです。I2C nvSRAM はスレーブ I2C デ バイスであり、システムにアクセスするために I2C のマスター コントローラが必要です。PSoC3 の関連ライブラリ コンポーネ ントもサンプル プロジェクトとして提供されます。 目次 はじめに はじめに ............................................................................. 1 サイプレスの nvSRAM は、SRAM セルと不揮発性メモリ セルを 単一の nvSRAM セルに統合しています。通常の動作モードでは、 全ての読み出しと書き込みは nvSRAM の SRAM 部からの読み 出 し と SRAM 部 へ の 書 き 込 み が 直 接 行 わ れ ま す 。 こ れ は EEPROM やフラッシュなど既存の不揮発性メモリ技術に比べて、 より高速な読み書きアクセスを提供します。システムの電源喪失 が発生した場合、SRAM からのデータは、VCAP ピンに接続されて いる小さなコンデンサに蓄積されたエネルギーを使用して、不揮発 性セルに自動的に転送されます。次の電源投入サイクル中に、不 揮発性セルからのデータは自動的に SRAM アレイにリコールされ、 利用できるようになります。VCAP ピンに接続されたコンデンサは通 常処理中に nvSRAM によって充電されます。 I2C nvSRAM のコンフィギュレーション ................................. 2 I2C バス プロトコル機能の適用性 ................................... 2 I2C nvSRAM デバイスのオプション ................................. 2 I2C nvSRAM デバイスの接続......................................... 3 2 I C のプルアップ抵抗値を決定 ............................................ 5 制御入力ピンのコンフィギュレーション ............................. 7 RTC 部固有のピン配置.................................................. 8 I2C nvSRAM の動作........................................................... 9 高速モード (Hs モード) の動作...................................... 10 I2C nvSRAM でのアドレス指定..................................... 10 I2C nvSRAM のアクセス .............................................. 12 まとめ ............................................................................... 16 付録 A (疑似コード例) ....................................................... 17 I2C の書き込み ............................................................ 17 I2C の読み出し............................................................. 18 ワールドワイドな販売と設計サポート ................................. 20 nvSRAM は、その不揮発性セルに対して 100 万回の書き換え回 数を仕様として定めています。nvSRAM での書き換え回数は、 STORE 処理を行っている間にデータが SRAM セルから不揮発 性セルに転送された場合にのみカウントされます。nvSRAM の不 揮発性ストア処理は、デバイスの電源が所定の閾値レベル (VSWITCH) を下回った時に自動的に開始するか、またはコマンド レ ジスタ (0xAA) にコマンドを書き込むか、あるいはハードウェア ピン (HSB) を LOW にトグルすることで要求に応じて開始します。 nvSRAM のコマンド レジスタは制御レジスタ空間で定義されてい ます。制御レジスタは専用の I2C スレーブ ID を介してアドレス指 定されます。nvSRAM のアドレス指定の詳細は、本アプリケーショ ン ノートの後半に説明する I2C nvSRAM の節に記載されていま す。 システムの電源障害が検出され、SRAM に書き込まれた新しい データが不揮発性セルに安全にに移動する必要がある場合にの み 、 nvSRAM は 不 揮 発 性 ス ト ア を 開 始 し ま す 。 し た が っ て 、 nvSRAM で測定される不揮発性セルの合計書き換え回数は、 SRAM 書き込みサイクルではなく、不揮発性ストア サイクルの合 計になります。 電力喪失が発生した場合に実行時の重要な情報を瞬時に保存す ることを必要とする多くのデータ ロギング アプリケーションがあり japan.cypress.com 文書番号: 001-92723 Rev. ** 1 2 シリアル I C nvSRAM を使った設計 ます。この重要な情報には、コントローラの実行時の状態、スク ラッチ パッド データ、パラメータ設定およびコントローラによって測 定された他の環境変数が含まれています。I2C nvSRAM はその 高速不揮発性書き込み速度によって、そのようなデータ ロギング アプリケーションに理想的に適合することができます。nvSRAM では、I2C マスター コントローラが数十マイクロ秒で数百バイトの データをログできるのに対して、EEPROM やフラッシュ メモリでは 同 じ 量 の デ ー タ を 書 き 込 む に は 数 十 ミ リ 秒 が 必 要 で す 。 I2C nvSRAM は、業界標準の 8 ピン SOIC と 16 ピン SOIC パッケー ジで提供されています。 上記の 4 バス モードは全てのデバイス コンフィギュレーションで 提供されており (表 1 を参照) 、デバイスでの特別な設定を必要と しません。 I2C バス プロトコル機能の適用性 表 1 は、標準的な I2C のスレーブ バス仕様のすべての必須の機 能と任意選択の機能をまとめたものです。I2C nvSRAM は、標準 的な I2C のスレーブ デバイスのすべての必須機能に対応してい ます。 このアプリケーション ノートでは、I2C nvSRAM のコンフィギュレー ション、異なるパッケージ オプションの回路例、I2C バスのプル アップ抵抗の適切な値を決定する方法、nvSRAM での I2C 通信 のデータ バイト形式、メモリにアクセスするための I2C アドレス指 定機構、リール タイム クロック(RTC)、および nvSRAM の制御機 能について説明します。 I2C nvSRAM に関する他の詳細につい ては、固有のデバイス データシートを参照してください。 表 1. I2C バス プロトコルの適用性 I2C nvSRAM のコンフィギュレーション 2 I C nvSRAM は、最高 3.4M ビット/秒のレート (I C クロック 周波数が 3.4MHz) で I2C のデータ転送をサポートし、I2C バス規 格の仕様で定義された他の全ての低周波数アクセスもサポートし ています。 2 2 機能 PSoC 3 nvRAM I2C のライブラリ コンポーネントは関連プロ ジェクトとして本アプリケーション ノートに添付されています。 2 高速モード (Hs) - ビット レートが最大 3.4Mbit/s I C 仕様規格 I C nvSRAM START 状態 必須 √ STOP 状態 必須 √ アクノリッジ 必須 √ 7 ビット スレーブ アドレ ス 10 ビット スレーブ アドレ ス クロック ストレッチ 必須 √ 任意に選択 未提供 任意に選択 不要 一般的な呼び出しアドレ ス デバイス ID 任意に選択 未提供 任意に選択 未提供 ソフトウェア リセット 任意に選択 未提供 標準モード (Sm) - ビット レートが最大 100Kbit/s I2C nvSRAM デバイスのオプション ファースト モード (Fm) - ビット レートが最大 400Kbit/s 表 2 に示すように、サイプレスは異なるコンフィギュレーションと パッケージ オプションで I2C nvSRAM に対応します。 ファースト モード プラス (Fm+) - ビット レートが最大 1Mbit/s 表 2. I2C nvSRAM のコンフィギュレーション nvSRAM の 製品番号 状況 動作電圧 (標準値) CY14CXXXJ1 NRND 2.5V CY14BXXXJ1 NRND 3V CY14EXXXJ1 NRND 5V CY14CXXXJ2 NRND 2.5V CY14BXXXJ2 NRND 3V CY14EXXXJ2 NRND 5V CY14CXXXJ3 NRND 2.5V CY14BXXXJ3 NRND 3V CY14EXXXJ3 NRND 5V CY14CXXXI サイプレスにお問 い合わせ 2.5V CY14BXXXI 製造中 3V CY14EXXXI 製造中 5V パッケージ WP ピン VCAP ピン/ AutoStore (HSB) ピン /HW ストア A0 ピン I2C バスに対す るデバイス数 RTC 8 SOIC 有 無/無 無/無 有注 1 4 または 8 注 1 無 8 ピン SOIC 有 有/有 無/無 無 4 無 16 ピン SOIC 有 有/有 有 有注 1 4 または 8 注 1 無 16 ピン SOIC 有 有/有 有 有注 1 4 または 8 注 1 有 NRND – 新規設計用にはお勧めできません。 注 1: 最下位のスレーブ アドレス ビット空間 (A0) は 1M ビットの nvSRAM デバイスで内部で使用されているため、1M ビットのメモリ容量オプションでは使用でき ません。A0 ピンは J2 部を除き、全ての 512K ビット以下のメモリ容量オプションで利用可能です。A0 ピンがないと、I2C nvSRAM は、I2C バスに対して最大 4 個 のデバイスに制限されます。 japan.cypress.com 文書番号: 001-92723 Rev. ** 2 2 シリアル I C nvSRAM を使った設計 I2C nvSRAM デバイスの接続 標準的な I2C のシングル マスター マルチ スレーブのコンフィ 2 ギュレーションは図 1 に示します。I C のマスター デバイスは、 2 I C のマスター プロトコルを生成できるマイクロコントローラま たはプログラム可能なデバイスのいずれかであり、スレーブ デバイスは標準的な I2C のスレーブ デバイスのいずれかです。 図 1 の例では、I2C nvSRAM は I2C のスレーブとして扱われ ます。512K ビット以下のメモリ容量の I2C nvSRAM は、いくつ かのパッケージ オプションで 3 つのスレーブ アドレス指定ビッ トをサポートしているため、同じ I2C バスで最大 8 個のデバイ スを接続できます。ユニークなスレーブ ID は、スレーブ選択ア ドレス線 (A2、A1、A0) を 8 種類の異なる組み合わせで設定 することにより各スレーブ デバイスに割り当てられます。A0 が 使用できないパッケージ コンフィギュレーションでは、スレーブ 選択アドレス ピン A2 と A1 を設定することで同じバスを共有 する最大 4 個のスレーブ デバイスのみ接続できます。 図 1.標準的な I2C のマスター スレーブのコンフィギュレーション Vcc Rp Rp SCL Microcontroller SDA Vcc nvSRAM A0 Vcc nvSRAM SCL A0 A1 SCL A0 A1 A2 SDA SCL A1 A2 #0 nvSRAM SDA A2 #1 SDA #7 I2C nvSRAM デバイスの一般的なシステム レベルのコンフィギュレーションは図 2 に示します。専用 I2C バスを持たないマイクロコント ローラの場合、汎用 I/O ポートはビット バンギングによって SCL と SDA 用に使用されます。 図 2. 一般的な I2C nvSRAM の接続 VCC Controller or SOC Controller Core Digital Blocks Power and Clocks I2C Control (Master) Analog Blocks Rp General Purpose I/O Memory Blocks Rp I2C nvSRAM SCL SCL A0 /NC SDA SDA A1 A2 GPIO1 WP GPIO2 INT GPIO3 HSB Controlled by GPIOs or Externally hardwired A0 is a NC pin in 1Mbit nvSRAM devices These are optional connections. These pins can be configured to their default logic state japan.cypress.com 文書番号: 001-92723 Rev. ** 3 2 シリアル I C nvSRAM を使った設計 回路例 以下の図 (図 3~5) は、1M ビット I2C nvSRAM の詳しい回路図の接続を示します。I2C マスターと nvSRAM スレーブ間のハードウェ ア接続は全ての小メモリ容量 (512K ビット以下) 部品で同じです。 図 3. 8 ピン SOIC の 1M ビット I2C nvSRAM のインターフェース (VCAP なし) 全ての任意選択の接続は 点線で示しています。 Vcc 0.1 µF Vcc 10 KΩ Vcc 10 KΩ 1* NC/A0 FROM MASTER 2 A1 FROM MASTER 3 A2 CY14x101J1 8 SOIC 4 VSS 8 VCC 7 WP 6 SCL 5 SDA Vcc Vcc FROM MASTER Rp FROM MASTER Rp FROM / TO MASTER A2 と A1 上のプルアップ 抵抗は、スレーブ アドレス ビット A2 と A1 を「1」に設 定します。システムがアド レス ピンのいずれかを「0」 に設定するよう要求する 場合は、プルアップ抵抗を 取り外して、ピンをフロー ティング状態にします。弱 プルダウン 抵抗によ って 内部で LOW にプルされま す。 図 4. 8 ピン SOIC の 1M ビット I2C nvSRAM のインターフェース (VCAP 付き) Vcc 0.1 µF Vcc 10 KΩ FROM MASTER FROM MASTER Vcc 10 KΩ 47 uF +/-10%, (6.3V) VCAP 1 8 VCC A1 2 7 WP A2 VSS japan.cypress.com 3 CY14x101J2 8 SOIC 4 文書番号: 001-92723 Rev. ** 6 5 SCL SDA Vcc Vcc FROM MASTER Rp FROM MASTER Rp FROM /TO MASTER 4 2 シリアル I C nvSRAM を使った設計 図 5. 16 ピン SOIC の 1M ビット (RTC) I2C nvSRAM のインターフェース Vcc 0.1 µF Vcc VCC NC 1 16 VRTCbat 2* * 15 INT/SQW XOUT 3* 14 XIN 4 10 KΩ 3V Li Battery 47 uF +/-10%, (6.3V) XOUT XIN Vcc 10 KΩ FROM MASTER WP 5 NC/A0 6 VRTCcap 7 VSS 8 * CY14x101I 16 SOIC FROM MASTER 470 mF (12 days RTC Backup) TO MASTER + * Vcc VCAP 13 A2 12 SDA 11 SCL 10 A1 Vcc Vcc 10 KΩ FROM MASTER Rp Vcc 9 FROM / TO MASTER Rp Vcc 10 KΩ FROM MASTER 10 KΩ FROM MASTER HSB FROM/ TO MASTER Y1 = 32.768 KHz (12.5 pF) Pin marked with ‘*’ are specific to the RTC nvSRAM part. These pins become no connect (NC) pin in non RTC parts. XIN XOUT C1 12 pF Pin 6 of CY14x101I (Figure 5)and Pin 1 of CY14x101J1 (Figure 3) are NC pins for 1 Mbit density. It is enabled as Slave Address bit 0 (A0) for 512 Kbit and lower density parts. C2 68 pF Connect either a battery on the VRTCbat or a super capacitor on the VRTCcap pin. I2C のプルアップ抵抗値を決定 I2C バスは SDA と SCL ライン上にデータとクロックを伝送し ます。SDA と SCL ラインはオープンドレイン (TTL ファミリでは オープンコレクタとしても知られている) 出力ドライバであり、即 ち、I2C マスターとスレーブ デバイスはこれらのラインを論理 LOW にのみ駆動するか、または開放したままにできます。同 じバスにある I2C デバイスがラインを LOW にプルしていない 場合、終端抵抗 (Rp) はラインの HIGH レベルを得るのに VCC にプルします。マルチ マスターのコンフィギュレーションや スレーブによるクロック ストレッチなどの特別な I2C の機能に 対応するためにオープンドレイン ドライバのコンフィギュレーシ ョンが必要です。クロック ストレッチは I2C 規格の任意選択機 能であり、I2C nvSRAM ではサポートされていないため、I2C のクロック信号は I2C nvSRAM では入力 (のみ) 信号になりま す。 合計バス容量 (Cb) と共に終端抵抗 (Rp) は SDA と SCL の 信号のタイミング動作に影響を与えます。I2C デバイスはオー プンドレインのドライバでラインをプルダウンしている間に、プ japan.cypress.com ルアップ抵抗 Rp は指定された時間内に信号を HIGH レベル に戻す役割があります。プルアップ抵抗 Rp の値は、動作電圧 (VCC)、デバイスの出力 LOW 論理レベル (VOL) 仕様;即ち吸 い込み電流 (IOL) 仕様、バスの合計通信容量 (Cb) および立 ち上がり時間 (tR) 仕様のようなタイミング パラメータなど、複 数の電気的パラメータに依存します。 次の節では、特定のシステム コンフィギュレーションで I2C バ スのプル抵抗の値を決定する方法について説明します。 Rp (Max) の決定 RC 時定数の計算のために、CMOS 論理レベルの入力閾値 を VIH = 0.7VCC (Min) および VIL = 0.3VCC (Max) と考えてみ ます。 V(t) = VCC (1 − e−t / RC)、ここで「t」は充電開始時からの時間 であり、RC は時定数です。 V (t1) = 0.3 × VCC = VCC (1 − e−t1 / RC) のとき: 文書番号: 001-92723 Rev. ** 𝐭𝟏 = 𝟎. 𝟑𝟓𝟔𝟔𝟕𝟒𝟗 × 𝐑𝐂 式1 5 2 シリアル I C nvSRAM を使った設計 𝐑𝐩 𝐌𝐢𝐧 ≤ 𝐑𝐩 ≤ 𝐑𝐩(𝐌𝐚𝐱) 式 6 V (t2) = 0.7 × VCC = VCC (1 − e−t2 / RC) のとき: 𝐭𝟐 = 𝟏. 𝟐𝟎𝟑𝟗𝟕𝟐𝟗 × 𝐑𝐂 式2 合計の立ち上がり時間 (T) は、バス容量の電圧レベルを VIL から VIH に充電するのに要する時間です: T = t2 − t1 = 1.2039729 × RC - 0.3566749 × RC = 𝟎. 𝟖𝟒𝟕𝟑 × 𝐑𝐂 式3 式 3 は、I2C ラインに接続するためにプルアップ抵抗値の上限 を決定するために使用されます。表 3 は、全てのタイミング モードに対してバス容量の関数として最大 Rp を示します。各 モードに対して Rp (max) は、最小立ち上がり時間 (tR) と推定 されるバス容量 (Cb) の関数です: 𝐭𝐫 𝐑𝐩 (𝐌𝐚𝐱) = (𝟎.𝟖𝟒𝟕𝟑∗𝐂𝐛) 式 4 バス容量 (Cb) は、配線部、接続部、端子部の合計容量です。 低消費電力の設計では、電流消費量を制限するために範囲 の上限に向かう値を使って選ぶ必要があります。 表 3 は、特定のバス負荷条件と動作電圧に対応する Rp の値 (Min, Max) の一覧を提供しています。表 3 に表示していない 値は、Rp (Max) と Rp (Min) を計算するための式 4 と式 5 か ら得られます。 表 3 の網掛け領域は、特定の動作電圧の条件下でいくつか のバス負荷 (Cb) に対して Rp (Min) が Rp (Max) を超えてい ることを示します。Rp (Min) が Rp (Max) を超えることができ ないため、これは I2C バスに使用される最大の容量負荷 (Cb) を制限します。 例えば: 3V の部品が最小 VCC 電源 (VCC = 2.7V) で動作する ように設定された場合、システムが以下のバス モードで動作 する時、SCL と SDA ライン上に以下に示す負荷 (pF 単位) を 超えてはいけません: Sm = Cb ≤ 550 pF; 0.77 kΩ ≤ Rp ≤ 2.15 kΩ Rp (Min) の決定 Fm = Cb ≤ 450 pF; 0.77 kΩ ≤ Rp ≤ 0.79 kΩ 動作電圧と吸い込み電流 (IOL) はプルアップ抵抗の最小値、 Rp (min) を 制 限 し ま す 。 VCC と IOL の 関 数 で あ る Rp (Min) は式 5 を使って計算されます。 Fm+ = Cb ≤ 150 pF; 0.77 kΩ ≤ Rp ≤ 0.94 kΩ 𝐑𝐩 (𝐦𝐢𝐧) = 𝐕𝐜𝐜−𝐕𝐎𝐋 (𝐦𝐚𝐱) 𝐈𝐎𝐋 式5 Rp の値は、仕様の最小値と最大値の範囲内で選択する必要 があります。 Hs = Cb ≤ 100 pF; 0.77 kΩ ≤ Rp ≤0.94 kΩ 同様に、他の動作電圧と動作周波数に対応した最大のバス負 荷 (Cb) と I2C のプルアップ抵抗 (Rp) の値が表 3 と図 6 から 得られます。 表 3. 異なるバス負荷と動作電圧に対応する Rp (Min, Max) Cb (pf) 10 20 30 40 50 60 70 80 90 100 125 150 200 250 300 350 400 450 500 550 Rp(Min) (kΩ) Rp(Max) (kΩ) 2.45V 100 KHz 400 KHz 1 MHz 3.4 MHz 0.68 0.68 0.68 0.68 0.68 0.68 0.68 0.68 0.68 0.68 0.68 0.68 0.68 0.68 0.68 0.68 0.68 0.68 0.68 0.68 118.02 35.41 14.16 59.01 17.70 7.08 39.34 11.80 4.72 29.51 8.85 3.54 23.60 7.08 2.83 19.67 5.90 2.36 16.86 5.06 2.02 14.75 4.43 1.77 13.11 3.93 1.57 11.80 3.54 1.42 9.44 2.83 1.13 7.87 2.36 0.94 5.90 1.77 0.71 4.72 1.42 0.57 3.93 1.18 0.47 3.37 1.01 0.40 2.95 0.89 0.35 2.62 0.79 0.31 2.36 0.71 0.28 2.15 0.64 0.26 japan.cypress.com 9.44 4.72 3.15 2.36 1.89 1.57 1.35 1.18 1.05 0.94 0.76 0.63 0.47 0.38 0.31 0.27 0.24 0.21 0.19 0.17 Cb (pf) 10 20 30 40 50 60 70 80 90 100 125 150 200 250 300 350 400 450 500 550 Rp(Min) (kΩ) Rp(Max) (kΩ) 2.7V 100 KHz 400 KHz 1 MHz 3.4 MHz 0.77 0.77 0.77 0.77 0.77 0.77 0.77 0.77 0.77 0.77 0.77 0.77 0.77 0.77 0.77 0.77 0.77 0.77 0.77 0.77 118.02 35.41 14.16 59.01 17.70 7.08 39.34 11.80 4.72 29.51 8.85 3.54 23.60 7.08 2.83 19.67 5.90 2.36 16.86 5.06 2.02 14.75 4.43 1.77 13.11 3.93 1.57 11.80 3.54 1.42 9.44 2.83 1.13 7.87 2.36 0.94 5.90 1.77 0.71 4.72 1.42 0.57 3.93 1.18 0.47 3.37 1.01 0.40 2.95 0.89 0.35 2.62 0.79 0.31 2.36 0.71 0.28 2.15 0.64 0.26 文書番号: 001-92723 Rev. ** 9.44 4.72 3.15 2.36 1.89 1.57 1.35 1.18 1.05 0.94 0.76 0.63 0.47 0.38 0.31 0.27 0.24 0.21 0.19 0.17 Cb (pf) 10 20 30 40 50 60 70 80 90 100 125 150 200 250 300 350 400 450 500 550 Rp(Min) (kΩ) Rp(Max) (kΩ) 4.5V 100 KHz 400 KHz 1 MHz 3.4 MHz 1.37 1.37 1.37 1.37 1.37 1.37 1.37 1.37 1.37 1.37 1.37 1.37 1.37 1.37 1.37 1.37 1.37 1.37 1.37 1.37 118.02 35.41 14.16 59.01 17.70 7.08 39.34 11.80 4.72 29.51 8.85 3.54 23.60 7.08 2.83 19.67 5.90 2.36 16.86 5.06 2.02 14.75 4.43 1.77 13.11 3.93 1.57 11.80 3.54 1.42 9.44 2.83 1.13 7.87 2.36 0.94 5.90 1.77 0.71 4.72 1.42 0.57 3.93 1.18 0.47 3.37 1.01 0.40 2.95 0.89 0.35 2.62 0.79 0.31 2.36 0.71 0.28 2.15 0.64 0.26 9.44 4.72 3.15 2.36 1.89 1.57 1.35 1.18 1.05 0.94 0.76 0.63 0.47 0.38 0.31 0.27 0.24 0.21 0.19 0.17 6 2 シリアル I C nvSRAM を使った設計 図 6.異なるバス負荷と動作電圧に対応する Rp (Min, Max) 3.4 MHz 1 MHz 400 KHz 100 KHz Operating Voltage (Vcc), V Bus Load (Cb), pF 制御入力ピンのコンフィギュレーション I2C nvSRAM は入力ピンである数多くの制御ピンを備えてい て、それらのピンはデバイスの正常な動作のために固定され た論理状態 (HIGH または LOW) に適切にバイアスされる必 要があります。制御入力ピンが適切な論理レベル (HIGH また は LOW のいずれか) にバイアスされずにフローティング状態 になっていると、フローティング ピンがデバイス動作をランダム にするいくつかの中間準安定状態に定まることがあります。そ のため、内部プルアップまたはプルダウン オプションがない未 使用の入力ピンは、常にプルアップまたはプルダウン抵抗を 使用して外部的に適切な論理レベルに接続する必要がありま す。 1 kΩ~10 kΩ の抵抗がこの目的に使用されます。 WP ピン: WP ピンはアクティブ HIGH ピンであり、書き込み処理からメモ リ全体と全てのレジスタを保護します。このピンが HIGH にな ると、全てのメモリとレジスタ書き込みは禁止され、アドレス カ ウンタはインクリメントされません。I2C nvSRAM では、このピ ンに内部プルダウン抵抗を取り付けています。したがって、 書き込み保護機能が使われない場合、このピンはフローティン グ状態 (未接続) にできます。このピンが外部制御用にコント ローラ I/O に接続される場合は、外部プルアップ抵抗が推奨さ れて、このライン上のノイズに起因する望ましくないトリガを防 ぎます。1 kΩ~10 kΩ の抵抗がこの目的に使用されます。 A2、A1、A0 ピン: これらはスレーブ アドレス ピンであり、マルチ スレーブのコン フィギュレーションに際し異なるスレーブ デバイスに対応した 異なるスレーブ アドレスを設定するために使用されます。これ らのピンは内部的に LOW にプルされるため、使用されない場 合はフローティング(未接続)のままにできます。論理 HIGH 状 態に設定するために、これらのピンは外部プルアップ抵抗に接 japan.cypress.com 続するか、または直接 VCC 電源に接続する必要があります。 1kΩ~10kΩ の抵抗がプルアップ抵抗として使用できます。シ ステムがスレーブ アドレスをダイナミックに変更するよう要求 する幾つかのコンフィギュレーションでは、これらのアドレス ピ ンは、実行中にスレーブ選択アドレス ピン (A2、A1、A0) を設 定するためにコントローラ I/O に接続し、デバイスにアクセスす る必要があります。 HSB ピン: HSBピンは nvSRAM の双方向ピンです。出力ピンとして動作 する場合、このピンは通常処理中は nvSRAM のレディまたは ビジー状態にします。デバイスの電源投入時または不揮発性 ストア サイクルが進行中には、HSBピンはそのビジー状態を 表す示すデバイスによって LOW にプルされます。HSBピンは HIGH 状態になると、デバイスが通常の読み書き処理に応じ たレディ状態にあることを示します。入力ピンとして動作する場 合、HSBピンはコントローラで LOW にプルすることで外部で ハードウェア STORE を開始するのに使用されます。このピン は任意の GPIO に接続されていない場合、フローティングのま まにすることができます。I2C nvSRAM は、通常動作中にHSB ピンを HIGH に保つために、このピンに内部の弱プルアップ抵 抗を用意しています。このピンが外部制御用にコントローラ I/O に接続される場合は、外部プルアップ抵抗が推奨されて、この ライン上のノイズに起因する望ましくないトリガを防ぎます。 1 kΩ~10 kΩ の抵抗がこの目的に使用されます。 VCAP: VCAP ピンに接続されたコンデンサは、電力喪失時にデータを SRAM から不揮発性素子に転送するために nvSRAM に電源 を供給します。通常処理中に、デバイスは VCC から電流を引き 込んで、VCAP ピンに接続されたコンデンサを充電します。VCAP での蓄積された電荷は、nvSRAM デバイスが一回の STORE 文書番号: 001-92723 Rev. ** 7 2 シリアル I C nvSRAM を使った設計 処 理 を 実 行 す る た め に 使 用 さ れ ま す 。 VCC ピ ン の 電 圧 が VSWITCH を下回ると、デバイスは自動的に VCAP ピンを VCC か ら切り離し、STORE 処理は VCAP の蓄積電荷を使用して開始 されます。 正常な AutoStore 処理のために、VCAP ピンに適切な値のコン デンサを接続する必要があります。選択したコンデンサの値は、 デバイスのデータシートに規定された範囲内である必要があり ます。コンデンサの不適切な選択はデバイスの誤動作につな がることがあります。nvSRAM 製品用のコンデンサ選択のガ イドラインの詳細については、アプリケーション ノート AN43593 - Storage Capacitor Options for Cypress nvSRAM を参照してください。 RTC 部固有のピン配置 RTC 機能はパッケージに以下の追加ピンを必要とします。正 常な RTC 機能のために、これらのピンは適切に設定される必 要があります。 INT ピン: これは RTC 部の出力ピンです。RTC nvSRAM は、 アラーム、ウォッチドッグタイマ、校正クロック出力、および方形 波ジェネレータなど様々な機能を提供しています。INT 出力は、 nvSRAM 内で定義された RTC レジスタの設定とそれらの優 先順位に応じて、機能面の状態/出力を引き出すために多重 化されています。INT ピンは設定可能なドライバ出力です。 INT ピンの出力モードは、I2C スレーブ デバイス内の割り込み 状態/制御レジスタ (0x06) の「H/L」ビットをセットすることで 設定されます。H/L ビットを「1」にセットすると、INT 出力はアク ティブ HIGH として設定され、ドライブ モードがプッシュ プルに なります。H/L ビットを「0」にセットすると、INT 出力ドライブは アクティブ LOW のオープン ドレイン出力として設定されます。 したがって、デバイスによって駆動されていない場合、INT 出 力を論理 HIGH 状態に駆動するための外部プルアップ抵抗が 必要です。アクティブ LOW モード (H/L ビットが「0」にクリアさ れる) で INT を使用する場合、1kΩ~10kΩ の外部プルアップ 抵抗を使用して INT ピンを VCC にプルする必要があります。 「0」にセットされた H/L H/L =0 P/L=0 Pulled HIGH with External Pull up Hi-Z When no pull up Interrupt Occurs 200 ms H/L =0 P/L=1 VRTCbat と VRTCcap ピン: システムの電源供給 (VCC) がダウンし ている場合、これらのピンは、RTC 回路網にバックアップ電源 を供給するのに使用されて発振器のクロック実行を持続させ ます。電源喪失中の RTC 発振をバックアップするためには、 VRTCbat を再充電できないバッテリに接続するか、VRTCcap ピン のスーパーキャパシタに接続するかのどちらかです。使用され ない場合、これらのピンはフローティングのままにする必要が あります。 注意 VRTCcap ピンは通常の動作中にそれに接続されている スーパー キャパシタを充電するために使用されるため、このピ ンを直接 VSS に短絡することはできません。そのため、VRTCcap ピンを直接グラウンド (VSS) に接続すると、nvSRAM から過剰 な電流を引き込むことがあります。 nvSRAM RTC の設計ガイドラインおよびベスト プラクティスに ついては、アプリケーション ノート、AN61546 - Non Volatile Static Random Access Memory (nvSRAM) Real Time Clock (RTC) Design Guidelines and Best Practice を参照し てください。 異なる H/L と P/L 設定に対応した INT ピンの動作: H/L ビット の設定は、割り込みが発生した時に INT ピン出力の状態が HIGH であるか、LOW であるかを決定します。同様に、P/L 設 定 は INT ピ ン の パ ル ス ま た は レ ベ ル を 決 定 し ま す 。 I2C nvSRAM の割り込みピン (INT) の動作は図 7 に示します。 図 7. INT ピンの動作 (RTC) 「1」にセットされた H/L H/L =1 P/L=0 Interrupt Occurs 200 ms H/L =1 P/L=1 japan.cypress.com 文書番号: 001-92723 Rev. ** 8 2 シリアル I C nvSRAM を使った設計 I2C nvSRAM の動作 み書きに対応しています。各バイトは、ACK 応答 (A) ビットの 後に続く必要があります。データは各バイト転送で最上位ビッ ト (MSb) を最初に、最下位ビット (LSb) を最後に転送します。 図 8 は I2C nvSRAM のデータ転送を示します。 I2C nvSRAM のアクセスは常にバイト形式であり、SDA ライン 上の全てのバイトは 8 ビット長でなければなりません。転送ご とに伝送できるバイト数は無制限のため、バースト モードの読 図 8.I2C nvSRAM のデータ転送 I2C nvSRAM のデータ転送は図 9 図 9 に示されている形式に 従います。START 状態(S)の後、スレーブ アドレスが送信さ れます。このアドレスはデータ方向ビット(R/W)である 8 番目の ビット後に続く 7 ビット長です。ビット (R/W)が 「0」にセットされ ると、転送 (WRITE) を示し、ビット (R/W) が「1」にセットされる と、データのリクエスト (READ) を示します。データ転送は、常 にマスターで生成された STOP 状態(P) で終了します。ただし、 マスターがバスでの通信をまだ要求している場合は、反復の START 状態(Sr) を生成し、スレーブを再びアドレスするか、ま たは STOP 状態を生成せずに別のスレーブ デバイスで通信 します。高速モードを除き、全ての標準的な I2C モードは図 9 に示すデータ形式に従います。 図 9. I2C のデータ バイト形式 (Sm、Fm、Fm+) S S 7 Bits Slave Address R/W 7 Bits Slave Address A DATA A A DATA R/W A DATA DATA A/A P A/A P A = Acknowledged (SDA LOW ACK clock) A = Acknowledged (SDA during LOW during ACK clock) = From I2C Master I2C Slave = From I2C to Master to I2C Slave A = NotAAcknowledged (NACK) (SDA HIGH in ACK = Not Acknowledged (NACK) (SDA HIGH in clock) ACK clock) S/P = START Condition /STOP/STOP Condition = From I2CtoSlave to I2C Master S/P = START = From I2C Slave I2C Master 図 10. データ バイト形式 (Sm、Fm、Fm+) – 書き込み処理 S 7 Bits Slave Address 0 A DATA A DATA A P A/A P 図 11. データ バイト形式 (Sm、Fm、Fm+) – 読み出し処理 S japan.cypress.com 7 Bits Slave Address 1 A DATA A 文書番号: 001-92723 Rev. ** DATA 9 2 シリアル I C nvSRAM を使った設計 後に続く 7 ビットのスレーブ アドレスを転送します。 ビット (R/W )が 「0」にセットされると、転送 (WRITE) を示し、ビット (R/W) が「1」にセットされると、データのリクエスト (READ) を 示します。データ転送は、常にマスターで生成された STOP 状 態 (P) で終了します。ただし、マスターが HS モードのバスで 通信をまだ要求している場合は、反復の START 状態(Sr) を 生成し、STOP 状態を生成せずにスレーブをアドレスすること ができます。 高速モード (Hs モード) の動作 Hs モードでは、nvSRAM は最高 3.4Mbit/s までのビットレート でデータを転送することができます。START 状態(S) が生成さ れ た 後 、 8 ビ ッ ト の マ ス タ ー コ ー ド (0000 1XXXb) は 、 nvSRAM が NACK (A)を送信しますが、全ての後続動作に対 応した HS モードのデータ インターフェースを配置するために 送信されます。デバイスは、STOP (P) 状態に従った後にのみ HS モードを終了します。スレーブを HS モードに配置した後、 I2C マスターは、データ方向ビット (R/W) である 8 番目のビット 図 12. I2C のデータ バイト形式 (Hs) SM/ FM/ Fm+ Mode S Hs Mode Master Code (0000 1XXX) A/A Sr 7 Bits Slave Address R/W A SM/ FM/ Fm+ Mode DATA A DATA A/A P A = Acknowledged (SDA LOW during ACK clock) = From I2C Master to I2C Slave Hs Mode Continues A = Not Acknowledged (NACK) (SDA HIGH in ACK clock) Sr S/P = START /STOP Condition = From I2C Slave to I2C Master 7 Bits Slave Address Sr - Repeated Start 図 13. I2C のデータ バイト形式 (Hs) – 書き込み処理 SM/ FM/ Fm+ Mode S Hs Mode Master Code (0000 1XXX) A/A Sr 7 Bits Slave Address 0 A DATA A DATA A P A DATA A/A P 図 14. I2C のデータ バイト形式 (Hs) – 読み出し処理 SM/ FM/ Fm+ Mode S Hs Mode Master Code (0000 1XXX) A/A S 7 Bits Slave Address 1 A DATA 図 15 は、I2C バスを介して転送されているアドレス ビット例を 示します。 I2C nvSRAM でのアドレス指定 I2C マスター コントローラは、バイト単位で I2C nvSRAM のス レーブと通信し、バイト転送の間は常に最初のクロック サイク ルで最上位ビットを、8 番目のクロック サイクルで最下位ビット を転送します。これは、コマンド、アドレスおよびデータ バイトを 含む全ての I2C 通信にとって良い状況です。同様に、I2C nvSRAM が読み出し処理中にデータ バイトを転送する場合は、 常に最上位ビットを最初に、最下位ビットを最後に転送します。 7 ビット長のスレーブ アドレスは、頭文字「SA [16:0]」を使用す るメモリ アドレス ビットと区別するために、頭文字「SA [6:0]」で 表現します。このため、これ以降の全ての節で、スレーブ アド レス ビットを SA [x]として表示します。 図 15. I2C nvSRAM でのアドレス ビット転送 7 Bits Slave Address S 4 Bits Slave Device Address (SA [6:3]) japan.cypress.com SA2 SA1 Address Byte2 (MSB) SA0 / A16 0 A A15 A14 A13 A12 A11 A10 Address Byte1 (LSB) A9 文書番号: 001-92723 Rev. ** A8 A A7 A6 A5 A4 A3 A2 A1 A0 A 10 2 シリアル I C nvSRAM を使った設計 スレーブ デバイス アドレス I2C の nvSRAM スレーブは、7 ビットのスレーブ アドレス指定 SA [6:0] に対応しています。その内最上位の 4 アドレス ビット SA [6:3] がデバイス内で固定され、ユーザーは変更できませ ん。残りの最下位 3 アドレス ビット SA [2:0] は、デバイスに用 意されている外部アドレス ピン (A2、A1、A0) を介して設定可 能です。I2C nvSRAM は、単一のデバイス内にデータ メモリ、 RTC 機能およびその他の制御として 3 つの異なる機能を備 えています。I2C nvSRAM は、I2C マスターがこれらの機能に アクセスできるように、スレーブ アドレス SA [6:3] の上位 4 ビット (表 4 を参照) を固定することにより、3 つのユニーク なスレーブ ID を割り当てています。 表 4.スレーブ デバイス アドレス バス上で他の任意のスレーブ ID が、上位 4 スレーブ アドレス ビット SA [6:3] に一致している場合、ユーザーは、ユニークなスレーブ ID が同じシステム バスを共有する各スレーブ デバイスに割り当てられるように、下位スレーブ アドレス ビット SA [2:0]を別々に設定 する必要があります。 図 16. スレーブ デバイス アドレス選択 7 Bits Slave Address 7 Bits Slave Address S 1 0 1 Slave Device Address (Memory) 0 SA2 SA1 SA0 / A16/X R/W S 1 1 0 1 SA2 7 Bits Slave Address SA1 SA0 / X Slave Device Address (RTC) R/W S 0 0 1 1 SA2 SA1 SA0 / X R/W Slave Device Address (Controls) 表 5. SRAM 読み書き用の I2C nvSRAM のアドレス指定 注: 2 最上位アドレス バイト (MSB) の未使用ビットは「ドントケア」ビットであり、nvSRAM によって無視されます。ただし、ファームウェア内で未使用のアドレス ビッ ト位置を「0」にセットするのは良い方法です。このアプローチにより、将来のさらなる大容量オプションに移行する際に、ファームウェアを更新するのは容易になり ます。 注: 3 いくつかの nvSRAM デバイスのコンフィギュレーションでは、パッケージ上にピンが足りないか、または A0 アドレス ビットが内部で使用されているかのどち らかに起因して、2 個のアドレス ピン (A2 と A1) のみが用意されています。1M ビットのメモリ容量を持つ I2C nvSRAM は、その全体のメモリ位置をマッピングす るために、17 アドレス ビット A [16:0]を必要とします。したがって、スレーブ アドレス空間 SA0 は、これらの部品で A16 アドレス ビットを転送するために使用され、 2 ビット SA [2:1]のみがスレーブ アドレスを外部で設定することができます。ピン不足のパッケージ故に A0 が利用できない低メモリ容量のデバイス (512K ビット 以下) では、このビットは内部でドントケア (「X」) になります。スレーブ アドレス ビット A0 がドントケアである I2C のスレーブ デバイスは、I2C のマスターによって送 信された 2 つのスレーブ アドレス (A0=0 と A0=1) に対応して ACK 応答をします。 japan.cypress.com 文書番号: 001-92723 Rev. ** 11 2 シリアル I C nvSRAM を使った設計 I2C nvSRAM のアクセス する簡略化したフロー図を示します。I2C nvSRAM の各機能と それらの実装の詳細については、デバイスのデータシートを参 照してください。 標準的な機能 (メモリの読み書き) と特別な機能 (NV 処理、デ 2 バイス ID、シリアル番号) を含めた全ての I C nvSRAM 機能 2 は、標準的な I C の読み書きプロトコルを介してアクセスされ ます。図 17~図 21 は、I2C nvSRAM の読み書き処理を説明 図 17. I2C nvSRAM のデータ メモリ書き込みの簡略フロー図 Device Idle Start (S) /Repeat Start (Sr) Slave Address 1010 SA[2:0] (R/W =0) No Did Slave Address Match? Yes Send ACK Receive Addr bytes Send ACK Bus status P or Sr? No Are Two Bytes Addr Rcvd? No Yes Internal address counter is set to the new address. Yes Bus status P or Sr? No Yes Send NACK Is it protected memory? No Once address counter reaches to the last addressable location of data memory, the auto increment will roll over to the start address 0x0000 and start overwriting previously written data Receive data byte. Auto increment to next address Send ACK Bus status P or Sr? No Yes Device Idle japan.cypress.com 文書番号: 001-92723 Rev. ** 12 2 シリアル I C nvSRAM を使った設計 図 18. I2C nvSRAM RTC と制御レジスタ書き込みの簡略フロー図 Device Idle Device Idle Start (S) / Repeated Start (Sr) Start (S) / Repeated Start (Sr) Slave Address 0011 SA[2:0] (R/W =0) Slave Address 1101 SA[2:0] (R/W =0) No Did Slave Address Match? No Did Slave Address Match? Yes Send ACK Yes Send ACK Receive Addr bytes Receive Addr bytes Yes Yes Send NACK Send NACK Is Add Out of Bound? No Send ACK No Send ACK Bus status P or Sr? No Bus status P or Sr? Internal address counter is set to the new Cntrl Reg Addr. No Internal address counter is set to the new RTC Reg Addr. Yes Is Add Out of Bound? Yes Once the address counter reaches to the last writable location in control register, the auto increment will go to the next addressable location and stays there. Device will return a NACK for all Subsequent bytes sent by master for write. Bus status P or Sr? No Bus status P or Sr? No No Once address counter reaches to the last addressable location of RTC Regs, the auto increment will roll over to the start address 0x00 and start overwriting previously written data Receive data byte. Auto increment to next address Send ACK Bus status P or Sr? No Is Current address writable? Yes Receive data byte Receive data byte. Auto increment to next address Send ACK Send NACK Bus status P or Sr? Yes Yes Device Idle Device Idle japan.cypress.com 文書番号: 001-92723 Rev. ** No 13 2 シリアル I C nvSRAM を使った設計 図 19. I2C nvSRAM データ メモリの現時点でのアドレス読み出しの簡略フロー図 Device is Idle Start (S) / Repeated Start (Sr) Slave Address 1010 SA[2:0] (R/W =1) No Did Slave Address Match? Yes Send ACK Yes Once address counter reaches to the last addressable location of the data memory, the auto increment will roll over to the start address 0x0000 and start reading data from there onwards. Bus status P or Sr? No Send Data Byte from Current Addr. Auto Increment to Next Addr. No ACK Rcvd from Master? Yes No Bus Status P or Sr? Yes Device Idle japan.cypress.com 文書番号: 001-92723 Rev. ** 14 2 シリアル I C nvSRAM を使った設計 図 20. I2C nvSRAM RTC と制御レジスタの現時点のアドレス読み出しの簡略フロー図 Device is Idle Device is Idle Start (S) / Repeated Start (Sr) Start (S) / Repeated Start (Sr) Control Function RTC Function Slave Address 011 SA[2:0] (R/W =1) Slave Address 1101 SA[2:0] (R/W =1) Did Slave Address Match? Yes Send ACK Yes Send ACK Yes Yes No Did Slave Address Match? No Bus status P or Sr? No Send Data Byte from Current Addr. Auto Increment to Next Addr. Once address counter reaches to the last addressable location of te RTC registers, the auto increment will roll over to the start address 0x00 and start sending data out from there onwards. Once the address counter reaches to the last readable address location in control register, the auto increment will go to the start address 0x00 and start sending data out from there onwards. Bus status P or Sr? No Send Data Byte from Current Addr. Auto Increment to Next Addr. No No No No ACK Rcvd from Master? ACK Rcvd from Master? Yes Yes No No Bus Status P or Sr? Bus Status P or Sr? Yes Yes Device Idle Device Idle 図 19 と図 20 に示したフローチャートは、データ メモリ、RTC レジスタおよび制御レジスタから読み出された現時点の位置です。現時 点の位置は、前の読み書き処理を終了する際のアドレス カウンタのアドレスです。ユーザーは別の位置から読み出しをしようとする場 合、図 21 に示すように、書き込みサイクルを実行することでアドレス カウンタを新しいアドレスに設定する必要があります。 japan.cypress.com 文書番号: 001-92723 Rev. ** 15 2 シリアル I C nvSRAM を使った設計 図 21. I2C nvSRAM データ メモリ、RTC、および制御レジスタのランダム アドレス読み出しの簡略フロー図 Set Current Address for Data Memory Set Current Address for RTC Registers Set Current Address for Control Registers Device Idle Device Idle Device Idle Start (S) / Repeated Start (Sr) Start (S) / Repeated Start (Sr) Start (S) / Repeated Start (Sr) Slave Address 1101 SA[2:0] (R/W =0) Slave Address 0011 SA[2:0] (R/W =0) Slave Address 1010 SA[2:0] (R/W =0) No No Did Slave Address Match? Did Slave Address Match? Yes Send ACK Yes Send ACK Yes Send ACK Receive Addr bytes Receive Addr bytes Receive Addr bytes No Did Slave Address Match? Send ACK Bus status P or Sr? Is Add Out of Bound? No Is Add Out of Bound? Send NACK No Send ACK No Are Two Bytes Addr Rcvd? Yes Yes Send NACK No Internal address counter is set to the new RTC Reg Addr. Internal address counter is set to the new Cntrl Reg Addr. Initiate a Read by S or Sr Initiate a Read by S or Sr Yes Internal address counter is set to the new address. Initiate a Read by S or Sr けを借りてアプリケーションで I2C nvSRAM を設定する方法を 示しています。 まとめ サイプレスの I2C nvSRAM は、他の全ての不揮発性 I2C メモ リ製品と同様に、標準的な I2C のアクセス プロトコルをサポー トしています。これにより、nvSRAM と I2C マスター コントロー ラとの互換性が高まり、システム開発サイクル時間を低減しま す。このアプリケーション ノートは、回路図とタイミング図の助 japan.cypress.com 文書番号: 001-92723 Rev. ** 16 2 シリアル I C nvSRAM を使った設計 付録 A (疑似コード例) I2C の書き込み /*Sm, Fm, Fm+ Mode*/ void I2C_Write_nvSRAM(BYTE slave_Addr,BYTE Addr_MSB, BYTE Addr_LSB, BYTE *Data, int n_Byte) { int i=0; BYTE txBuffer[2]; txBuffer[0]=Addr_MSB; //Copy I2C slave address in local buffer txBuffer[1]=Addr_LSB; I2CHW_ClrWrStatus(); //Clear the status register of I2C master I2CHW_fSendStart(slave_Addr, I2CHW_WRITE); //Returns a non zero if slave device ACKs while(!I2CHW_bReadI2CStatus() & I2CHW_WR_COMPLETE); //Wait till all bits are transmitted for (i=0;i<n_Byte; i++){ I2CHW_fWrite( Data[i]); //Master transmit data bytes while (!I2CHW_bReadI2CStatus() & I2CHW_WR_COMPLETE); } I2CHW_SendStop (); // Master sends S/Sr to terminate write \\} /*Hs Mode*/ void I2C_Write_HSMODE_nvSRAM(BYTE slave_Addr,BYTE Addr_MSB, BYTE Addr_LSB, BYTE *Data, int n_Byte) \\{ int i=0; BYTE txBuffer[2]; txBuffer[0]=Addr_MSB; txBuffer[1]=Addr_LSB; //Copy I2C slave address in local buffer I2CHW_ClrWrStatus(); //Clear the status register of I2C master //0x00001xxx is a HS mode address hence. (Read/Write also don’t care).HS mode command byte can be set anything from 0x08 to 0x0F I2CHW_fSendStart( 0x04, I2CHW_WRITE); //No ACK from any slave. while(!I2CHW_bReadI2CStatus() & I2CHW_WR_COMPLETE);//Wait till all bits are transmitted I2CHW_fSendRepeatStart(slave_Addr, I2CHW_WRITE); //Send repeat start with slave ID to access a slave in HS mode. while(!I2CHW_bReadI2CStatus() & I2CHW_WR_COMPLETE); for (i=0;i<n_Byte; i++){ I2CHW_fWrite( Data[i]); while(!I2CHW_bReadI2CStatus() & I2CHW_WR_COMPLETE); \\} I2CHW_SendStop (); //Master sends S/Sr to terminate write \\} japan.cypress.com 文書番号: 001-92723 Rev. ** 17 2 シリアル I C nvSRAM を使った設計 I2C の読み出し /*Sm, Fm, Fm+ Mode*/ void I2C_Read_nvSRAM(BYTE slave_Addr, int n_Byte) \\{ int i=0; BYTE dataRD; I2CHW_ClrWrStatus();//Clear the status register of I2C master I2CHW_fSendStart( slave_Addr, I2CHW_READ); while(!I2CHW_bReadI2CStatus() & I2CHW_RD_COMPLETE); for(i=0;i<n_Byte; i++) { if(i==(n_Byte-1)) { dataRD =I2CHW_bRead (I2CHW_NAKslave); //Master sends NACK for the last read to terminate the Read while(!I2CHW_bReadI2CStatus() & I2CHW_RD_COMPLETE); //Wait till all bits Rcvd \\} else { dataRD =I2CHW_bRead (I2CHW_ACKslave); while(!I2CHW_bReadI2CStatus() & I2CHW_RD_COMPLETE); \\} \\} I2CHW_SendStop (); //Master sends S/Sr to terminate Read \\} /*Hs Mode*/ void I2C_Read_HSMODE_nvSRAM(BYTE slave_Addr, int n_Byte) \\{ int i=0; BYTE dataRD; I2CHW_ClrWrStatus();//Clear the status register of I2C master I2CHW_fSendStart( 0x04, I2CHW_READ); //0x0000 1xxx is a HS mode address hence slave addr can be 0x0X. No ACK from any slave. while(!I2CHW_bReadI2CStatus() & I2CHW_RD_COMPLETE);//Wait till all bits received I2CHW_fSendRepeatStart( slave_Addr, I2CHW_READ); //Send repeat start with slave ID to access a slave in the HS mode. while(!I2CHW_bReadI2CStatus() & I2CHW_RD_COMPLETE); for(i=0;i<n_Byte; i++){ if(i==(n_Byte-1)) { dataRD =I2CHW_bRead (I2CHW_NAKslave); while(!I2CHW_bReadI2CStatus() & I2CHW_RD_COMPLETE); \\} else { dataRD =I2CHW_bRead (I2CHW_ACKslave); while(!I2CHW_bReadI2CStatus() & I2CHW_RD_COMPLETE); \\} \\} I2CHW_SendStop //Master sends S/Sr to terminate Read \\} japan.cypress.com 文書番号: 001-92723 Rev. ** 18 2 シリアル I C nvSRAM を使った設計 改訂履歴 文書名: シリアル I2C nvSRAM を使った設計- AN74875 文書番号: 001-92723 版 ECN 変更者 提出者 ** 4395691 HZEN 06/17/2014 japan.cypress.com 変更内容 これは英語版 001-74875 Rev. *E を翻訳した日本語版 Rev. **です。 文書番号: 001-92723 Rev. ** 19 2 シリアル I C nvSRAM を使った設計 ワールドワイドな販売と設計サポート サイプレスは、事業所、ソリューション センター、メーカー代理店および販売代理店の世界的なネットワークを保持しています。お客様 の最寄りのオフィスについては、サイプレスのロケーション ページをご覧ください。 PSoC® ソリューション 製品 車載用 cypress.com/go/automotive psoc.cypress.com/solutions クロック&バッファ cypress.com/go/clocks PSoC 1 | PSoC 3 | PSoC 4 |PSoC 5LP インターフェース cypress.com/go/automotive サイプレス開発者コミュニティ 照明&電源管理 cypress.com/go/powerpsoc cypress.com/go/plc メモリ cypress.com/go/memory 光学式ナビゲーションセンサ cypress.com/go/ons PSoC cypress.com/go/psoc タッチ センシング cypress.com/go/touch USB コントローラ cypress.com/go/usb ワイヤレス/RF cypress.com/go/wireless コミュニティ | フォーラム | ブログ | ビデオ | トレーニング テクニカル サポート cypress.com/go/support 本書で言及するその他すべての商標または登録商標は、各社の所有物です。 Cypress Semiconductor 198 Champion Court San Jose, CA 95134-1709 電話番号 : 408-943-2600 ファックス : 408-943-4730 ウェブサイト: www.cypress.com © Cypress Semiconductor Corporation, 2011-2014. 本文書に記載される情報は、予告なく変更される場合があります。Cypress Semiconductor Corporation (サイプレス セミコンダクタ社) は、サイプレス製品に組み込まれた回路以外のいかなる回路を使用することに対して一切の責任を負いません。サイプレス セミコン ダクタ社は、特許またはその他の権利に基づくライセンスを譲渡することも、または含意することもありません。サイプレス製品は、サイプレスとの書面による合意 に基づくものでない限り、医療、生命維持、救命、重要な管理、または安全の用途のために使用することを保証するものではなく、また使用することを意図したもの でもありません。さらにサイプレスは、誤動作や故障によって使用者に重大な傷害をもたらすことが合理的に予想される生命維持システムの重要なコンポーネント としてサイプレス製品を使用することを許可していません。生命維持システムの用途にサイプレス製品を供することは、製造者がそのような使用におけるあらゆる リスクを負うことを意味し、その結果サイプレスはあらゆる責任を免除されることを意味します。 このソースコード (ソフトウェアおよび/またはファームウェア) はサイプレス セミコンダクタ社 (以下「サイプレス」) が所有し、全世界の特許権保護 (米国およびそ の他の国)、米国の著作権法ならびに国際協定の条項により保護され、かつそれらに従います。サイプレスが本書面によりライセンシーに付与するライセンスは、 個人的、非独占的かつ譲渡不能のライセンスであり、適用される契約で指定されたサイプレスの集積回路と併用されるライセンシーの製品のみをサポートするカ スタム ソフトウェアおよび/またはカスタム ファームウェアを作成する目的に限って、サイプレスのソースコードの派生著作物をコピー、使用、変更そして作成する ためのライセンス、ならびにサイプレスのソースコードおよび派生著作物をコンパイルするためのライセンスです。上記で指定された場合を除き、サイプレスの書面 による明示的な許可なくして本ソースコードを複製、変更、変換、コンパイル、または表示することは全て禁止します。 免責条項: サイプレスは、明示的または黙示的を問わず、本資料に関するいかなる種類の保証も行いません。これには、商品性または特定目的への適合性の黙 示的な保証が含まれますが、これに限定されません。サイプレスは、本文書に記載される資料に対して今後予告なく変更を加える権利を留保します。サイプレス は、本文書に記載されるいかなる製品または回路を適用または使用したことによって生ずるいかなる責任も負いません。サイプレスは、誤動作や故障によって使 用者に重大な傷害をもたらすことが合理的に予想される生命維持システムの重要なコンポーネントとしてサイプレス製品を使用することを許可していません。生命 維持システムの用途にサイプレス製品を供することは、製造者がそのような使用におけるあらゆるリスクを負うことを意味し、その結果サイプレスはあらゆる責任 を免除されることを意味します。 ソフトウェアの使用は、適用されるサイプレス ソフトウェア ライセンス契約によって制限され、かつ制約される場合があります。 japan.cypress.com 文書番号: 001-92723 Rev. ** 20