マイコンの基礎 - Octo SPI
概要
Octo SPIは、Quad SPIを8ビット拡張したパラレル通信機能である。
したがって、マイコンの基礎 - Quad SPIを先に読むことを推奨する。
2015年以降、さらに繊細なグラフィックや幅広いマルチメディア、多量のデータを必要とするコンテンツへの需要が高まってきたため、
Quad SPIよりもデータスループットを向上させたOcto SPIがマイコンに搭載されるようになった。
Quad SPIと同様、メモリマップドモードを使用すると、外部メモリに対して内部メモリのようにアクセスすることができる。
これにより、システムのバスマスタ(例:DMA等)は、CPUが停止している低消費電力モードでも外部メモリに自動的にアクセスすることができ、
モバイルアプリケーションやウェアラブルアプリケーションにおいて、外部メモリのアクセス効率をさらに向上させることができる。
このページでは、STマイクロ社のSTM32L4+シリーズに搭載されているOcto SPIを例にして記載する。
下図に、STマイクロ社のSTM32L4+シリーズに搭載されているOcto SPIを示す。
Octo SPIの特長
Octo SPIインタフェースを使用すると、
マイコンは外部のSingle SPI(通常のSPI)、Dual SPI、Quad SPI、Dual Quad SPI、Octo SPIのメモリと通信することができる。
Octo SPIで接続されるメモリは、メモリ空間上にマッピングされているため、マイコンは内部メモリと同様にアクセスでき、読み出しや書き込みを行う。
わずか数本のピンで外部メモリを簡単に接続できることが大きな特長である。
これにより、Flash ROMやRAM等の外部メモリを簡単に増設することができる。
Octo SPIインタフェースは、1つのデータレーンから最大8つのデータラインまで、あらゆるSPIメモリに対応するフレームフォーマットの構成である。
Quad SPIと同様、設計者は各フェーズの有効化 / 無効化、各フェーズの長さの設定、各フェーズで使用するライン数の設定(1~8)を行うことができる。
下図のように、RWDS信号は、書き込み時にはライトストローブとして、読み出し時にはリードクオリファイとして機能する。
ハードウェアインタフェース
インタフェースは、次の信号ラインで構成される。
- チップセレクト用
- OCTOSPI_nCSライン
- クロック用
- OCTOSPI_CLKライン
- OCTOSPI_nCLK
- データストローブ用
- OCTOSPI_DQSライン
- データ用
- OCTOSPI_IO[0~7]ライン
クロックやチップセレクト信号ラインは、基本的にどの場合でも同じであるが、データラインの扱いは異なる。
Quad SPIとして使用する場合は4レーンのみ使用、Octo SPIとして使用する場合は8レーン使用する。
Dual Quad SPIとして使用する場合は8レーンを2つに分けて、それぞれを2つのQuad SPIメモリに接続する。(下図を参照)
プロトコル
Octo SPIインタフェースは、2つの異なるプロトコルで動作することができる。
- レギュラーコマンドプロトコル(シングルエンドクロック : 3.3[V]信号)
- HyperBusプロトコル(差動クロック : 1.8[V]信号)
各プロトコルは、インダイレクトモード、自動ステータスポーリングモード、メモリマップドモードの3つの動作モードをサポートしている。
レギュラーコマンドプロトコル
レギュラーコマンドプロトコルは、Octo SPIがコマンドを使用して外部メモリと通信する基本的なフレームフォーマットであり、
各コマンドは、最大5つのフェーズを含むことができる。
対応可能な外部メモリは、Single SPI、Dual SPI、Quad SPI、Dual Quad SPI、Octo SPIのメモリである。(下図を参照)