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

簡易転送用ディスクリプタ設定

Syntax
C++
int32_t AG903_DMACMgrSetSimpleTrnsDesc(AG903_DMACMgrHandle * handle, void * from, uint32_t from_size, void * to);
引数 
説明 
AG903_DMACMgrHandle * handle 
[in] DMACハンドル 
void * from 
[in] 転送元メモリアドレス 
uint32_t from_size 
[in] 転送元メモリサイズ 
void * to 
[in] 転送先メモリアドレス 

エラーコード

返値の詳細 
説明 
正常終了 
-AG903_EINVAL 
パラメータ異常 
-AG903_EBUSY 
実行中 

簡易転送用ディスクリプタ設定 

DMA転送前に再設定した場合は後の内容で上書きされます。

1: int32_t AG903_DMACMgrSetSimpleTrnsDesc(AG903_DMACMgrHandle *handle, void *from, 2: uint32_t from_size, void *to) 3: { 4: uint32_t unit = ((AG903_DMACMgrHandleStat*)handle - handle_list); 5: AG903_DMACMgrDesc dmac_desc; 6: DMACPrmParamCFG cfg = {0}; 7: uint8_t enable; 8: 9: if(unit >= AG903_DMAC_UNIT_NUM || &handle_list[unit] != (AG903_DMACMgrHandleStat*)handle || 10: NULL == from || NULL == to || 0 == from_size || AG903_DMAC_1DTRANS_MAX < from_size) 11: { 12: return -AG903_EINVAL; 13: } 14: 15: 16: enable = DMACMgr_CheckEnable(unit); 17: if(true == enable) { 18: return -AG903_EBUSY; 19: } 20: 21: cfg.ChPri = 1; 22: AG903_DMACPrmSetCFG_REG(unit, &cfg); 23: 24: dmac_desc.SrcAddr = (uint32_t)from; 25: dmac_desc.DstAddr = (uint32_t)to; 26: dmac_desc.next = 0; 27: dmac_desc.Ctrl.val = 0; 28: dmac_desc.Trns.val = 0; 29: dmac_desc.Trns.d1.TCnt = from_size; 30: dmac_desc.Stride.val = 0; 31: 32: 33: write_desc(&dmac_desc, NULL, get_desc_reg_addr(unit), 1); 34: 35: return AG903_ENONE; 36: }
Copyright (c) 2017-2025 Axell Corporation. All rights reserved.