「マイコンの基礎 - Octo SPI」の版間の差分

(ページの作成:「== 概要 == Octo SPIは、Quad SPIを8ビット拡張したパラレル通信機能である。<br> したがって、マイコンの基礎 - Quad SPIを先に読むこ…」)
 
65行目: 65行目:
<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]]