初期化~通信フォーマット設定シーケンス
<説明>
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をクリアして下さい。