STM32WB - QUADSPI
Quad-SPI メモリインタフェース
1.1 版

こんにちは、STM32 Quad-SPI メモリインタフェースのプレゼ
ンテーションへようこそ。このプレゼンテーションでは、マイクロコントローラと外部メモリの接続に広く使われている QuadSPI メモリインタフェースの特徴について説明します。

1

概要

2

• Quad-SPI メモリインタフェースは、外部シリアル Flash メモリとの通信インタフェースを提供します。

QUADSPI
レジスタ／制御• 自由度の高い設定が可能
AHB

クロック管理QSPI 型 Flash
CLK

FIFO

BK1_IO0/SO
BK1_IO1/SI

シフトレジスタ

BK1_IO2
BK1_IO3
BK1_nCS

CLK• Execute in Place（XiP）に対応• メモリマップ

Q0/SI
Q1/SO
Q2/nWP
Q3/nHOLD

アプリケーション側の利点

nCS• あらゆる SPI Flash メモリに対応• 少ないピン数で対応可能• 既存プロジェクトへのメモリ追加が容易

STM32 製品に搭載の Quad-SPI メモリインタフェースは、マイクロコントローラが外部 SPI メモリ、および Quad-SPI メモリと通信するためのインタフェースを提供します。本インタ
フェースは自由度の高い設定が可能で、今日市場に存在するあらゆるシリアルメモリへの接続が容易になります。
アプリケーションは、数ピンを使用するだけで外部シリアルメモリと簡単に接続できます。より多くのメモリ空間の必要時には、メモリマッピング機能により、外部メモリを既存プロジェクトに簡単に取り込むことができます。

2

主な機能

3

• 3 つの動作モード• インダイレクト• ステータスポーリング• メモリマップド• Cortex®-M4 の周波数が 50MHz 未満では最高 50MHz まで（それ以外では最高 32MHz まで）最適化された動作• シングルデータレート（SDR）モードとデュアルデータレート（DDR）の各モードに対応

STM32 製品に搭載の Quad-SPI メモリインタフェースは 3つの動作モードを提供し、シングルおよびデュアルデータレート動作の両方に対応した外部メモリとの通信に最適化されています。これにより、DDR モードでのシングル読出しサ
イクルで 8bit でのアクセスが可能となっています。
Cortex-M4 の周波数が 50MHz 未満の場合、Quad-SPI ブ
ロックはバスに同じクロック周波数を使用できます。CortexM4 の周波数が高い場合（最大 64MHz）、Quad-SPI のプリスケーラは少なくともクロック2分周を保証する必要があります。

3動作モード

4• 柔軟な動作モードで CPU 負荷を軽減• インダイレクトモード• すべての動作はレジスタにより実行（従来の SPI）

• ステータスポーリングモード• Flash メモリステータスレジスタの定時読出しおよびマッチ時の割込み生成• メモリマップドモード• 外部 Flash メモリを内部メモリのように読出し可能

Quad-SPI メモリインタフェースは 3 つのモードで動作します。
1.インダイレクトモードでは、従来の SPI インタフェースとして動作し、全ての動作はレジスタを通じて実行されます。
2.ステータスポーリングモードでは、Flash ステータスレジスタが周期的に読み出され割込みが生成されます。
3.メモリマップドモードでは、外部 Flash メモリを内部メモリのように読み出すことができます。

4

フレームフォーマット

5

シングル／デュアル／クワッドSPIのすべてのシリアル Flash メモリに適合• QSPI コマンドには、最大5つの設定可能なフェーズが含まれています。
• 各フェーズは有効化または無効化が可能• 各フェーズの長さを設定可能• 各フェーズのライン数を設定可能
コマンド

nCS
SCLK
IO0
IO1
IO2
IO3

76543

アドレス2

10

データ

オルタネート ダミー

40

40

40

40

40

40

51

51515151

51

62

62

62

62

62

62

73

73

73

73

73

7

3

A23-16

A15-8

A7-0

M7-0

バイト1バイト2

出力から入力へのIO切り替え

Quad-SPI メモリインタフェースは、フレームフォーマットの設定で高い柔軟性を発揮します。この柔軟性により、あらゆるシリアル Flash メモリへのアドレッシングが可能になります。
ユーザは5つのフェーズを有効化または無効化でき、また各フェーズの長さや各フェーズで使用するライン数を設定できます。

5インダイレクト動作モード

6

従来の SPI インタフェース• 従来の通信IPと同じ使い方• データは、データレジスタへの書込みまたは読出しで転送• バイト数はデータ長レジスタに指定• データ FIFO の管理• 割込みフラグ（転送完了フラグ）• DMA サポート

• コマンドの開始• 命令が必要なときに命令を書込み• 命令とアドレスが必要なときにアドレスを書込み• データフェーズが必要なときにデータを書込み

Quad-SPI メモリインタフェースをインダイレクト動作モードで使用すると、従来の SPI インタフェースのように動作します。
転送データは、FIFOでデータレジスタを経由します。データの交換はソフトウェアまたは DMA 主導で行なわれ、そのときに Quad-SPI ステータスレジスタの割込みフラグを使用します。
各コマンドは命令を受けるコンテキストに応じて、命令、アドレス、または、データを書き込むと開始します。

6

ステータスポーリングモード

7

ソフトウェアオーバーヘッドの低減• ステータスレジスタポーリングの固有モード• プログラム可能なレジスタの長さ：8/16/24/32bit• 指定した間隔での繰返し読出し動作• 応答をマスクし、一致した際に割込みを生成• プログラム可能なマスク（PSMKR レジスタ）• 一致レジスタ（PSMAR）で、マスクした値をビットごとに比較します。
• 比較の結果は、AND または OR で処理されます。
• 一致を検出すると割込みを生成します（一致フラグで停止）。

• 一致を検出すると自動的に停止

Quad-SPI インタフェースには、指示を受けずに外部 Flashメモリのステータスレジスタを自律的にポーリングする固有のモードが実装されています。Quad-SPI インタフェースはまた、定期的に外部 Flash メモリ内のレジスタを読み出すように設定できます。応答データをマスクして、評価対象のビットを選択できます。選択したビットは、マッチレジスタに保存した要求値と比較します。比較の結果は、2通りの方法で取り扱われます。1つは論理積（AND）モードで、全ての選択ビットが一致したときに割込みを生成します。もう1つは論理和（OR）
モードで、選択したいずれかのビットが一致したときに割込みを生成します。一致が発生すると、Quad-SPI インタフェースは自動的に停止します。

7

メモリマップドモード

8

プロジェクトへのメモリの拡張が容易
低電力管理• XiP をサポートするプリフェッチ• ウェイトステート付きの内部メモリとみなされる外部 Flash メモリ• AHB アクセスにより、読出し動作が自動的に生成されます。
• インダイレクトモードと同様に、フレームとオペコードは IP 設定時に定義されます。

• nCS ピンはローのまま保持、クロックは停止して Quad-SPI バスをストールさせ、必要に応じてシーケンシャル読出しが再開• タイムアウトカウンタが nCS ピンをハイにリリースして低電力を実現

Quad-SPI メモリインタフェースはメモリマップドモードも備えています。本モードによるアプリケーションでの主な利点は、ウェイトステート数は異なるものの、内部メモリと外部接続メモリ間で読出しアクセスの手順に違いがないため、外部メモリの統合が容易になる点です。
本モードは読出し動作時にのみ適しています。外部 Flash メ
モリは、その速度の遅さを相殺するためのウェイトステートを持つ内部メモリと見なせます。本モードで対応できるサイズは最大で 256MB です。
プリフェッチバッファは Execution-in-Place（XiP）に対応しているため、コードを内部 RAM へダウンロードしなくても外部メモリから直接実行できます。
本モードはまた、一部の Flash メモリで提供されている
SIOO（Send Instruction Only Once = 初回命令再利用）モードにも対応しています。コントローラはこの機能により命令を1回送信するだけで、後続アクセスのための命令フェーズを省略することができます。

8

遅延データサンプリング

9

PCB レイアウトに起因する信号遅延対策として有益• サンプリングクロックは、1/2クロックサイクルだけシフト• SDR モードのみサポート• 出力データは、1/2システムクロックサイクルだけシフト• DDR モードのみサポート

遅延データサンプリングにより、PCB レイアウト最適化上の制約による信号の遅延を補正できます。これにより、SDRモード時のアプリケーションによるデータサンプリング時間が1/2クロックサイクルだけシフトできます。DDR モード時に出力データを 1/2システムクロックサイクルだけシフトすることで、ホールド時間の制約を緩和できます。

9

割込みと DMA
割込みイベント

10

説明

タイムアウト

タイムアウトの発生時にセットされます。

ステータス一致

自動ポーリングモードで、マスクされた受信データがマッチレジスタの該当ビットと一致したときにセットされます。

FIFO 閾値

インダイレクトモードで、FIFO 閾値に達したときにセットされます。

転送完了

インダイレクトモードで、プログラムされたデータ数が転送されたとき、またはモードに関係なく転送が中止されたときにセットされます。

転送エラー

インダイレクトモードで、無効なアドレスへのアクセスがあったときにセットされます。

• DMA リクエストは、インダイレクトモードで FIFO 閾値に達したときに生成されます。

Quad-SPI メモリインタフェースには 5 つの割込みソースがあります。タイムアウト、自動ポーリングモードでマスクされた受信データがマッチレジスタの該当ビットと一致したときのス
テータスマッチ、FIFO 閾値、転送完了、および転送エラーです。
DMA リクエストは、インダイレクトモードで FIFO 閾値に達したときに生成されます。

10低電力モードモード

11

説明

RUN

アクティブ

SLEEP

アクティブペリフェラル割込みによって、デバイスは SLEEP モードを終了します。

低電力 RUN

アクティブ

低電力 SLEEP

アクティブペリフェラル割込みによって、デバイスは低電力 SLEEP モードから復帰します。

STOP 0/STOP 1/STOP 2停止。ペリフェラルレジスタの内容は保たれます。

STANDBY

パワーダウン状態です。ペリフェラルは、STANBY モード終了後に再初期化する必要があります。

SHUTDOWN

パワーダウン状態です。ペリフェラルは、SHUTDOWN モード終了後に再初期化する必要があります。

Quad-SPI メモリインタフェースは、RUN、SLEEP、低電力RUN、低電力 SLEEP モード時にアクティブとなります。
Quad-SPI からの割込みにより、デバイスは SLEEP または低電力 SLEEP モードから復帰します。STOP 0、STOP 1、または STOP 2 モードでは、Quad-SPI は停止し、そのレジスタの内容は保持されます。STANDBY またはSHUTDOWN モードでは、Quad-SPI の電源はオフになり、後で再び初期化する必要があります。

11アプリケーションの例

12• 接続可能でユーザインタフェースを持つウェアラブルアプリケーション
BLE

シリアル Flash
アクセラレータ

Quad SPI

SPI

ボタン

I/O

USB コネクタUSB

I²C

STM32WB

I²S

センサ

オーディオコーデック• 外部 Quad-SPI は、ユーザインタフェースに必要なセンサデータロギングまたはオーディオデータを保存可能

ウェアラブルアプリケーションには、センサデータロギング、場合によりオーディオインタフェースに加えて、低電力管理機能が必要です。これは Quad-SPI インタフェースを使用して、外部 Flash メモリのセンサ用データログに保存することで可能になります。着信音やオーディオメッセージの生成に必要なオーディオデータも、外部 Flash メモリが提供する大きなスペースから恩恵を受けられます。一方で、このようなデバイスを駆動するのに必要なピン数も少ないので、高度に最適化されたシステム統合が可能になります。

12

関連ペリフェラル

13• このペリフェラルに関連する以下のペリフェラルトレーニングを参照してください。
• RCC（Quad-SPI クロック制御,、Quad-SPI イネーブル／リセット）• 割込み（Quad SPI 割込みマッピング）• DMA (Quad-SPI データ転送)• GPIO（Quad-SPI 入力／出力ピン）

詳しくは、RCC、割込み、DMA、および GPIO に関するペリ
フェラルトレーニングスライドを参照してください。

13

参照

14

• 詳細については、以下の資料を参照してください。
• AN4760 - Quad-SPI (QSPI) interface on STM32 microcontrollers

詳しくは、AN4760 - Quad-SPI (QSPI) interface on
STM32 microcontrollers を参照してください。
ありがとうございました。

14