AG903ライブラリリファレンス
内容インデックスホーム
Body Source
本文ソース
1: int32_t AG903_SSPMgrSetReceiveBuf(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: 10: retval = SSPMgr_CheckHandle(handle, &ch); 11: if(AG903_ENONE != retval) { 12: return -AG903_EINVAL; 13: } 14: if((NULL == buf) || (0 >= size)) { 15: return -AG903_EINVAL; 16: } 17: if(0 != SspChStat[ch].dma) { 18: return -AG903_EPERM; 19: } 20: 21: div = SspChStat[ch].wordlen / 8; 22: if(0 != (SspChStat[ch].wordlen%8)) { 23: div++; 24: } 25: 26: do { 27: que.size = size*div; 28: que.buf = buf; 29: retval = SSPMgr_SetRxQue(ch, &que); 30: if(AG903_ENONE != retval) { 31: break; 32: } 33: 34: if(AG903_SSP_ENABLE_RECEIVE & SspChStat[ch].pio) { 35: break; 36: } 37: 38: retval = SSPMgr_GetRxData(ch, true); 39: if(AG903_ENONE != retval) { 40: break; 41: } 42: SspChStat[ch].pio |= AG903_SSP_ENABLE_RECEIVE; 43: AG903_SSPPrmSetRxFifoThreshold(ch, AG903_SSP_RXFIFO_THRESHOLD); 44: 45: AG903_SSPPrmCheckEnable(ch, &enable); 46: if(0 == enable) { 47: AG903_SSPPrmGetIntStatus(ch, &status); 48: } 49: else { 50: AG903_SSPPrmEnableRxInt(ch); 51: } 52: }while(0); 53: 54: return retval; 55: }
Copyright (c) 2017-2025 Axell Corporation. All rights reserved.