AG903ライブラリリファレンス
内容インデックスホーム
前へ上へ次へ
AG903_SSPMgrSendDma 関数

DMAによるデータ送信

Syntax
C++
int32_t AG903_SSPMgrSendDma(AG903_SSPMgrHandle* handle, const uint8_t* buf, uint32_t size);
引数 
説明 
AG903_SSPMgrHandle* handle 
[in] SSPハンドル 
const uint8_t* buf 
[in] 送信データ先頭アドレス 
uint32_t size 
[in] 送信サイズ(単位[Word] 下記参照) 

送信結果

返値の詳細 
説明 
正常終了 
-AG903_EINVAL 
引数異常 
-AG903_EPERM 
状態異常 

DMAによりデータを送信します。 

 

この関数は AG903_SSPMgrEnableTransfer と組み合わせて使用します。 

実行前に AG903_SSPMgrEnableDmaMode によりDMAによる送信を有効にし、 AG903_SSPMgrAttachDma でSSPにDMAを取り付けてください。 

転送を開始すると直ちに戻ります。 転送の完了は AG903_SSPMgrSetCallback によるコールバックで確認できます。 

送信データのバッファはキャッシュ不可メモリに確保するか送信前にCleanしてください。 

SSPからのDMA要求に対し AG903_DMACMgrSetSyncPeripheral と同様の同期が設定されます。 

データワードのビット長とシリアライズについては AG903_SSPMgrSetSendBuf での説明と同様です。

1: int32_t AG903_SSPMgrSendDma(AG903_SSPMgrHandle* handle, const uint8_t* buf, uint32_t size) 2: { 3: int32_t retval = AG903_ENONE; 4: uint8_t ch; 5: 6: retval = SSPMgr_CheckHandle(handle, &ch); 7: if(AG903_ENONE != retval) { 8: return -AG903_EINVAL; 9: } 10: if((NULL == buf) || (0 >= size)) { 11: return -AG903_EINVAL; 12: } 13: 14: if (AG903_SSP_DMA_SEND & SspChStat[ch].dma) { 15: return SSPMgr_SendDma(ch, buf, size); 16: } else { 17: return -AG903_EPERM; 18: } 19: }
Copyright (c) 2017-2025 Axell Corporation. All rights reserved.