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

送信バッファ設定 (PIO)

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

送信バッファ設定 (PIO)結果

返値の詳細 
説明 
正常終了 
-AG903_EINVAL 
引数異常 
-AG903_EBUSY 
ハンドル使用中(キューイング数がMAX) 
-AG903_EPERM 
状態異常(DMA有効状態) 

送信バッファの設定をします。 

 

データはWord単位でシリアライズされて出力されます。 

Wordのビット長、シリアライズのビットシフトの方向等は別途モード設定に従います。 

データはコピーせずに指定アドレスから順に直接出力します。 

サイズ分の送信終了までバッファを保持して下さい。 

Wordのビット長が8の倍数でない場合、次のWordはバッファ上では バイト単位で切り上げたアドレスから出力されます。 

Wordのビット長が32ビットに満たない場合は右詰めになります。

1: int32_t AG903_SSPMgrSetSendBuf(AG903_SSPMgrHandle* handle, uint8_t* buf, uint32_t size) 2: { 3: AG903_SSPMgrQue que; 4: int32_t retval = AG903_ENONE; 5: uint32_t status; 6: uint32_t div; 7: uint8_t enable; 8: uint8_t ch; 9: uint8_t entry; 10: uint8_t threshold; 11: 12: retval = SSPMgr_CheckHandle(handle, &ch); 13: if(AG903_ENONE != retval) { 14: return -AG903_EINVAL; 15: } 16: if((NULL == buf) || (0 >= size)) { 17: return -AG903_EINVAL; 18: } 19: if(0 != SspChStat[ch].dma) { 20: return -AG903_EPERM; 21: } 22: 23: div = SspChStat[ch].wordlen / 8; 24: if(0 != (SspChStat[ch].wordlen%8)) { 25: div++; 26: } 27: 28: do { 29: que.size = size*div; 30: que.buf = buf; 31: retval = SSPMgr_SetTxQue(ch, &que); 32: if(AG903_ENONE != retval) { 33: break; 34: } 35: 36: if(AG903_SSP_ENABLE_SEND & SspChStat[ch].pio) { 37: break; 38: } 39: 40: retval = SSPMgr_SetTxData(ch, true); 41: if(AG903_ENONE != retval) { 42: break; 43: } 44: AG903_SSPPrmGetTxFifoEntry(ch, &entry); 45: if(AG903_SSP_TXFIFO_THRESHOLD >= entry) { 46: threshold = 1; 47: } 48: else { 49: threshold = AG903_SSP_TXFIFO_THRESHOLD; 50: } 51: SspChStat[ch].pio |= AG903_SSP_ENABLE_SEND; 52: AG903_SSPPrmSetTxFifoThreshold(ch, threshold); 53: AG903_SSPPrmCheckEnable(ch, &enable); 54: if(0 == enable) { 55: AG903_SSPPrmGetIntStatus(ch, &status); 56: } 57: else { 58: AG903_SSPPrmEnableTxInt(ch); 59: } 60: }while(0); 61: 62: return retval; 63: }
Copyright (c) 2017-2025 Axell Corporation. All rights reserved.