📢 Webサイト閉鎖と移転のお知らせ
このWebサイトは2026年9月に閉鎖いたします。
新しい記事は移転先で追加しております。(旧サイトでは記事を追加しておりません)

ページの作成:「== 概要 == Octo SPIは、Quad SPIを8ビット拡張したパラレル通信機能である。<br> したがって、マイコンの基礎 - Quad SPIを先に読むこ…」
 
編集の要約なし
 
(同じ利用者による、間の1版が非表示)
13行目: 13行目:
<br>
<br>
下図に、STマイクロ社のSTM32L4+シリーズに搭載されているOcto SPIを示す。<br>
下図に、STマイクロ社のSTM32L4+シリーズに搭載されているOcto SPIを示す。<br>
 
[[ファイル:MCU Octo SPI 1.jpg|フレームなし|中央]]
<center>図. STM32L4+シリーズに搭載されているOcto SPI</center><br>
<center>図. STM32L4+シリーズに搭載されているOcto SPI</center><br>
<br><br>
<br><br>
30行目: 30行目:
<br>
<br>
下図のように、RWDS信号は、書き込み時にはライトストローブとして、読み出し時にはリードクオリファイとして機能する。<br>
下図のように、RWDS信号は、書き込み時にはライトストローブとして、読み出し時にはリードクオリファイとして機能する。<br>
 
[[ファイル:MCU Octo SPI 2.jpg|フレームなし|中央]]
<center>図. Octo SPIの特長</center><br>
<center>図. Octo SPIの特長</center><br>
<br><br>
<br><br>
49行目: 49行目:
Quad SPIとして使用する場合は4レーンのみ使用、Octo SPIとして使用する場合は8レーン使用する。<br>
Quad SPIとして使用する場合は4レーンのみ使用、Octo SPIとして使用する場合は8レーン使用する。<br>
Dual Quad SPIとして使用する場合は8レーンを2つに分けて、それぞれを2つのQuad SPIメモリに接続する。(下図を参照)<br>
Dual Quad SPIとして使用する場合は8レーンを2つに分けて、それぞれを2つのQuad SPIメモリに接続する。(下図を参照)<br>
 
[[ファイル:MCU Octo SPI 3.jpg|フレームなし|中央]]
<center>図. Octo SPIの信号ライン (STM32L4Rxxx and STM32L4Sxxxリファレンスマニュアル(RM0432)から抜粋)</center><br>
<center>図. Octo SPIの信号ライン (STM32L4Rxxx and STM32L4Sxxxリファレンスマニュアル(RM0432)から抜粋)</center><br>
<br><br>
<br><br>
55行目: 55行目:
== プロトコル ==
== プロトコル ==
Octo SPIインタフェースは、2つの異なるプロトコルで動作することができる。
Octo SPIインタフェースは、2つの異なるプロトコルで動作することができる。
* レギュラーコマンドプロトコル(シングルエンドクロック : 3.3[V]信号)
* レギュラーコマンドプロトコル
* HyperBusプロトコル(差動クロック : 1.8[V]信号)
*: シングルエンドクロック : 3.3[V]信号
* HyperBusプロトコル
*: 差動クロック : 1.8[V]信号
<br>
<br>
各プロトコルは、インダイレクトモード、自動ステータスポーリングモード、メモリマップドモードの3つの動作モードをサポートしている。<br>
各プロトコルは、インダイレクトモード、自動ステータスポーリングモード、メモリマップドモードの3つの動作モードをサポートしている。<br>
65行目: 67行目:
<br>
<br>
対応可能な外部メモリは、Single SPI、Dual SPI、Quad SPI、Dual Quad SPI、Octo SPIのメモリである。(下図を参照)<br>
対応可能な外部メモリは、Single SPI、Dual SPI、Quad SPI、Dual Quad SPI、Octo SPIのメモリである。(下図を参照)<br>
[[ファイル:MCU Octo SPI 4.jpg|フレームなし|中央]]
<center>図. レギュラーコマンドプロトコルの例 (アプリケーションノートOcto-SPI interface on STM32 microcontrollers(AN5050)から抜粋)</center><br>
<br>
==== HyperBusプロトコル ====
HyperBusプロトコルは、HyperRAMやHyperフラッシュメモリと通信するプロトコルである。(下図を参照)<br>
[[ファイル:MCU Octo SPI 5.jpg|フレームなし|中央]]
<center>図. HyperBusプロトコルの例 (アプリケーションノートOcto SPI interface on STM32 microcontrollers(AN5050)から抜粋)</center><br>
<br>
HyperBusは、ダブルデータレートインタフェースを採用しており、1クロック当たり2つのデータバイトがDQ入出力信号を介して転送されるため、<br>
高いスループットの読み出しや書き込みが可能である。<br>
<br>
フレームは、コマンド / アドレスフェーズ(以下、CAと呼ぶ)とデータフェーズの2つのフェーズで構成される。<br>
CA期間中、OCTOSPI_DQSラインはリードライトデータストローブ(以下、RWDSと呼ぶ)として使用され、追加の初期アクセスレイテンシを挿入する必要があるかどうかを示す。<br>
<br>
CA期間中にRWDSがLowである場合、1つのレイテンシーカウント(以下、tACCと呼ぶ)のみが挿入される。<br>
また、Highである場合、追加で2倍のtACCが挿入される。<br>
<br>
tACCは、データが転送される前に初期レイテンシー要件を満たすために使用され、データ転送のないクロックサイクル数を表す。<br>
特定のクロック周波数に必要な初期レイテンシーカウントはデバイスに依存し、HyperRAMのコンフィギュレーションレジスタで定義される。<br>
<br>
Hyperフラッシュメモリの場合、RWDSはリードデータストローブとしてのみ使用される。<br>
<br><br>


<center>図. レギュラーコマンドプロトコルの例 (アプリケーションノートOcto-SPI interface on STM32 microcontrollers(AN5050)から抜粋)</center><br>
== 動作モード ==
動作モードには、インダイレクトモード、自動ステータスポーリングモード、メモリマップドモードの3種類がある。<br>
<br>
* インダイレクトモード
*: 通常のSPIと同じモード(読み出し / 書き込み / 消去操作)のことである。
*: HyperBusプロトコルやレギュラーコマンドプロトコルは問わない。
*: CPUやDMAを用いて、Octo SPIのデータレジスタを介して行う全ての操作に対応している。
*: また、外部メモリデバイスの設定にも使用できる。
*: <br>
* 自動ステータスポーリングモード
*: メモリのステータスレジスタをハードウェアで完全に管理する自動ポーリングが可能である。
*: この機能により、ソフトウェアのオーバーヘッドやソフトウェアによるポーリングが不要となる。
*: ポーリングの結果が一致した場合は、割り込みを発生させることもできる。
*: <br>
* メモリマップドモード
*: 外部メモリに対して、あたかもメモリマップに割り当てられた内蔵メモリのようにアクセスできるモードである。
*: また、外部メモリからコードを実行することもできる。(下図を参照)
*: [[ファイル:MCU Octo SPI 6.jpg|フレームなし|中央]]
*: <center>図. 外部メモリマッピング</center>
<br><br>
<br><br>


__FORCETOC__
__FORCETOC__
[[カテゴリ:ARM]][[カテゴリ:AVR]][[カテゴリ:MSP430]][[カテゴリ:STM32]][[カテゴリ:H8]]
[[カテゴリ:ARM]][[カテゴリ:AVR]][[カテゴリ:MSP430]][[カテゴリ:STM32]][[カテゴリ:H8]]