SSPコントローラ制御用ライブラリ
本モジュールは、以下の機能を提供します。
送信/受信処理のキューイング数は次の定義で設定します。
送信キュー数: AG903_SSP_TXQUE_NUM
受信キュー数: AG903_SSP_RXQUE_NUM
注:0は設定禁止です。
本モジュールの対応フォーマットは以下です。
<SPIによる送受信の注意事項>
SPIフォーマットで送受信両方でのアクセスが必要なデバイスを使用するときは AG903_SSPMgrSpiで始まるSPIモード専用の関数を使用してください。 通常は全二重で送受信する AG903_SSPMgrSpiSendReceive を使用します。
SPIモード設定でSPIフラッシュ特化モードを指定していると SSPが有効である間データの送受信と無関係にSSP_FS信号をアサートし続けることができるようになります。 ただクロックもデータの送受信と無関係に出力され続けたりSSP_TXD端子から不定な値が出力される等の 副作用があるため制御が難しく対応できるデバイスも限られます。 そのためSSP_FS信号のアサートをプログラム制御したい場合はSPIフラッシュ特化モードは使用せず SSP_FS端子をGPIOとして制御することを推奨します。
送信または受信のどちらか片方のみで十分な場合は必ずしもSPIモード専用関数を使用する必要はありません。
本モジュールはシステムレジスタへのアクセスはサポートしません。
コントローラに対するクロックの供給については『AX51903仕様書』を参照して下さい。
本モジュールは「National Semiconductor MICROWIRE Frame Format」には対応していません。
本モジュールが動作するために次のライブラリが必要です。
初期化~通信フォーマット設定シーケンス
<説明>
1. 初期化。「AG903_SSPMgrInit」
2. SSP入出力端子およびクロックの供給設定。(システムレジスタで設定。詳細は『AX51903仕様書』参照。)
3. ハンドル取得。「AG903_SSPMgrGetHandle」
4. リセット。「AG903_SSPMgrReset」 ※リセットが不要な場合は省略可能。
5. コールバック登録。「AG903_SSPMgrSetCallback」 ※外部プログラム制御のDMAを使用する場合は省略可能。
6. 通信フォーマット設定。「AG903_SSPMgrSetXXXXXMode」 (注1)
7. DMAによりSSP転送する場合は、DMAをSSPとハンドシェークしながら転送できるように初期化。
注1:通信フォーマットにより使用する関数が異なります。(下表参照)
通信フォーマット |
関数名 |
SSP | |
I2S | |
S/PDIF |
注:コントローラに対するクロックの供給を予めシステムレジスタで設定しておく必要があります。詳細は『AX51903仕様書』参照。
PIO送信シーケンス
<説明>
※ハンドルの確保~通信フォーマット設定は実施済みとします。
1. 送信バッファ設定。「AG903_SSPMgrSetSendBuf」 ※キュー数分のキューイングが可能。
2. 伝送開始。「AG903_SSPMgrEnableTransfer」
3. 指定サイズ分の送信をし終えるまで、割込み要因に応じた処理を実施。
4. 指定サイズ分の送信完了でコールバック。コールバック後にキューを確認。(空なら終了)
5. 伝送停止。「AG903_SSPMgrDisableTransfer」
6. ハンドル解放。「AG903_SSPMgrReleaseHandle」
DMA送信シーケンス(ユーザーがDMA制御する場合)
<説明>
※ハンドルの確保~通信フォーマット設定は実施済みとします。
1. DMAモード有効設定。「AG903_SSPMgrEnableDmaMode」
2. DMAC転送開始。(手順は『DMACManagerリファレンスマニュアル』参照)
3. 伝送開始。「AG903_SSPMgrEnableTransfer」
4. DMAC転送完了通知。(詳細は『DMACManagerリファレンスマニュアル』参照)
5. 伝送停止。「AG903_SSPMgrDisableTransfer」
6. ハンドル解放。「AG903_SSPMgrReleaseHandle」
※ライブラリ内部プログラムによりDMA制御する場合は 2でのDMAモード有効設定の後に AG903_SSPMgrAttachDmaで使用するDMAチャンネルとインターフェースを指定し、 AG903_SSPMgrSendDma で送信してください。 転送完了通知は AG903_SSPMgrSetCallback で登録したコールバックで受け取ることができます。
※DMACによって転送されたデータは一旦送信FIFOに格納されてから出力されます。
DMAC転送完了後などにFIFOの状態を確認する場合は AG903_SSPMgrGetStatus を使用します。
PIO受信シーケンス
<説明>
※ハンドルの確保~通信フォーマット設定は実施済みとします。
1. 受信バッファ設定。「AG903_SSPMgrSetReceiveBuf」 ※キュー数分のキューイングが可能。
2. 送信バッファ設定。「AG903_SSPMgrSetSendBuf」 ※注
3. 伝送開始。「AG903_SSPMgrEnableTransfer」
4. 指定サイズ分の受信をし終えるまで、割込み要因に応じた処理を実施。
5. 指定サイズ分の受信完了でコールバック。コールバック後にキューを確認。(空なら終了)
6. 伝送停止。「AG903_SSPMgrDisableTransfer」
7. ハンドル解放。「AG903_SSPMgrReleaseHandle」
注:自身がMasterでダミー送信によるクロック生成が必要な場合のみ実施します。
送信バッファを設定しなかった場合、 AG903_SSPMgrEnableTransfer でクロック出力が開始されて AG903_SSPMgrDisableTransfer で停止します。
従ってサイズを意識せずに受信し続ける場合、送信バッファの設定は不要です。
DMA受信シーケンス(ユーザーがDMA制御する場合)
<説明>
※ハンドルの確保~通信フォーマット設定は実施済みとします。
1. DMAモード有効設定。「AG903_SSPMgrEnableDmaMode」
2. DMAC転送開始。(手順は『DMACManagerリファレンスマニュアル』参照)
3. 伝送開始。「AG903_SSPMgrEnableTransfer」
4. DMAC転送完了通知。(詳細は『DMACManagerリファレンスマニュアル』参照)
5. 伝送停止。「AG903_SSPMgrDisableTransfer」
6. 受信FIFOクリア。「AG903_SSPMgrClearRxFifo」
7. ハンドル解放。「AG903_SSPMgrReleaseHandle」
※ライブラリ内部プログラムによりDMA制御する場合は 2でのDMAモード有効設定の後に AG903_SSPMgrAttachDmaで使用するDMAチャンネルとインターフェースを指定し、 AG903_SSPMgrReceiveDma で受信してください。 転送完了通知は AG903_SSPMgrSetCallback で登録したコールバックで受け取ることができます。
※DMACによって転送されたデータは一旦受信FIFOに格納されてから読み出されます。
DMAC転送完了後などにFIFOの状態を確認する場合は AG903_SSPMgrGetStatus を使用します。
※自身がMasterの場合、 AG903_SSPMgrEnableTransfer でクロック出力が開始されて AG903_SSPMgrDisableTransfer で停止します。
従ってDMAC転送完了後も AG903_SSPMgrDisableTransfer を使用するまで受信し続ける為、伝送停止後 に AG903_SSPMgrClearRxFifo で受信FIFOをクリアして下さい。
名前 |
説明 |
アプリケーションにSSPコントローラ制御の為のI/Fを提供します。 | |
マネージャにSSPコントローラレジスタアクセスの為のI/Fを提供します。 | |
|