AG903ライブラリリファレンス
内容インデックスホーム
前へ上へ次へ
bmuprm.c

BMU Primitive

BMU Primitive Layer.

none

AXELL CORPORATION

2017_02_22 初版 

2017_10_26 Ver2.0 

2019_03_08 [SDK2.2] BMU設定の引数チェックを追加 (#2208) 

2019_03_08 [SDK2.2] BMUバッファ数0を8とみなす仕様を追加 (#2209)

1: 11: 12: 16: 17: 18: #include "AG903_common.h" 19: 20: #include "bmu/bmuprm.h" 21: 22: 30: void AG903_BMUPrmSetCTRL(uint8_t unit, uint8_t en) 31: { 32: ASSERT(unit < AG903_BMU_UNIT_NUM); 33: ASSERT(en <= 1); 34: 35: AG903_BMUn(unit)->CTRL = (en << AG903_BMUn_CTRL_EN_POS) & AG903_BMUn_CTRL_EN_MSK; 36: } 37: 38: 46: void AG903_BMUPrmGetCTRL(uint8_t unit, uint8_t *en) 47: { 48: ASSERT(unit < AG903_BMU_UNIT_NUM); 49: ASSERT(en != NULL); 50: 51: *en = (AG903_BMUn(unit)->CTRL & AG903_BMUn_CTRL_EN_MSK) >> AG903_BMUn_CTRL_EN_POS; 52: } 53: 54: 64: void AG903_BMUPrmSetMOD(uint8_t unit, uint8_t ini, uint8_t mgr, uint8_t src) 65: { 66: ASSERT(unit < AG903_BMU_UNIT_NUM); 67: ASSERT(ini <= 1); 68: ASSERT(mgr <= 3); 69: 70: uint32_t reg = 0; 71: reg |= (ini << AG903_BMUn_MOD_INI_POS) & AG903_BMUn_MOD_INI_MSK; 72: reg |= (mgr << AG903_BMUn_MOD_MGR_POS) & AG903_BMUn_MOD_MGR_MSK; 73: reg |= (src << AG903_BMUn_MOD_SRC_POS) & AG903_BMUn_MOD_SRC_MSK; 74: AG903_BMUn(unit)->MOD = reg; 75: } 76: 77: 87: void AG903_BMUPrmGetMOD(uint8_t unit, uint8_t *ini, uint8_t *mgr, uint8_t *src) 88: { 89: ASSERT(unit < AG903_BMU_UNIT_NUM); 90: ASSERT(ini != NULL); 91: ASSERT(mgr != NULL); 92: 93: uint32_t reg = AG903_BMUn(unit)->MOD; 94: *ini = (reg & AG903_BMUn_MOD_INI_MSK) >> AG903_BMUn_MOD_INI_POS; 95: *mgr = (reg & AG903_BMUn_MOD_MGR_MSK) >> AG903_BMUn_MOD_MGR_POS; 96: *src = (reg & AG903_BMUn_MOD_SRC_MSK) >> AG903_BMUn_MOD_SRC_POS; 97: } 98: 99: 107: void AG903_BMUPrmSetSINKMODULE(uint8_t unit, uint32_t valid) 108: { 109: ASSERT(unit < AG903_BMU_UNIT_NUM); 110: ASSERT((valid & 0xFFFF0000) == 0); 111: 112: AG903_BMUn(unit)->SINKMODULE = valid; 113: } 114: 115: 123: void AG903_BMUPrmGetSINKMODULE(uint8_t unit, uint32_t* valid) 124: { 125: ASSERT(unit < AG903_BMU_UNIT_NUM); 126: ASSERT(valid != NULL); 127: 128: *valid = AG903_BMUn(unit)->SINKMODULE; 129: } 130: 131: 139: void AG903_BMUPrmGetSINKSTAT(uint8_t unit, uint32_t* stat) 140: { 141: ASSERT(unit < AG903_BMU_UNIT_NUM); 142: ASSERT(stat != NULL); 143: 144: *stat = AG903_BMUn(unit)->SINKSTAT; 145: } 146: 147: 155: void AG903_BMUPrmSetBASEADR(uint8_t unit, uint32_t adr) 156: { 157: ASSERT(unit < AG903_BMU_UNIT_NUM); 158: 159: AG903_BMUn(unit)->BASEADR = (adr & AG903_BMUn_BASEADR_ADR_MSK); 160: } 161: 162: 170: void AG903_BMUPrmGetBASEADR(uint8_t unit, uint32_t *adr) 171: { 172: ASSERT(unit < AG903_BMU_UNIT_NUM); 173: ASSERT(adr != NULL); 174: 175: *adr = AG903_BMUn(unit)->BASEADR; 176: } 177: 178: 186: void AG903_BMUPrmSetSTRIDE(uint8_t unit, uint32_t stride) 187: { 188: ASSERT(unit < AG903_BMU_UNIT_NUM); 189: 190: AG903_BMUn(unit)->STRIDE = (stride & AG903_BMUn_STRIDE_STRIDE_MSK); 191: } 192: 193: 201: void AG903_BMUPrmGetSTRIDE(uint8_t unit, uint32_t *stride) 202: { 203: ASSERT(unit < AG903_BMU_UNIT_NUM); 204: ASSERT(stride != NULL); 205: 206: *stride = AG903_BMUn(unit)->STRIDE; 207: } 208: 209: 217: void AG903_BMUPrmSetBUFNUM(uint8_t unit, uint32_t num) 218: { 219: ASSERT(unit < AG903_BMU_UNIT_NUM); 220: ASSERT(num <= 8); 221: 222: AG903_BMUn(unit)->BUFNUM = (num << AG903_BMUn_BUFNUM_NUM_POS) & AG903_BMUn_BUFNUM_NUM_MSK; 223: } 224: 225: 233: void AG903_BMUPrmGetBUFNUM(uint8_t unit, uint32_t *num) 234: { 235: ASSERT(unit < AG903_BMU_UNIT_NUM); 236: ASSERT(num != NULL); 237: 238: *num = (AG903_BMUn(unit)->BUFNUM & AG903_BMUn_BUFNUM_NUM_MSK) >> AG903_BMUn_BUFNUM_NUM_POS; 239: } 240: 241: 261: void AG903_BMUPrmGetSTAT(uint8_t unit, BMUPrmParamSTAT *stat) 262: { 263: ASSERT(unit < AG903_BMU_UNIT_NUM); 264: ASSERT(stat != NULL); 265: 266: uint32_t reg = AG903_BMUn(unit)->STAT; 267: stat->val = (reg & AG903_BMUn_STAT_VAL_MSK ) >> AG903_BMUn_STAT_VAL_POS; 268: stat->empty = (reg & AG903_BMUn_STAT_EMPTY_MSK) >> AG903_BMUn_STAT_EMPTY_POS; 269: stat->rwa = (reg & AG903_BMUn_STAT_RWA_MSK ) >> AG903_BMUn_STAT_RWA_POS; 270: stat->rbsy = (reg & AG903_BMUn_STAT_RBSY_MSK ) >> AG903_BMUn_STAT_RBSY_POS; 271: stat->rnum = (reg & AG903_BMUn_STAT_RNUM_MSK ) >> AG903_BMUn_STAT_RNUM_POS; 272: stat->full = (reg & AG903_BMUn_STAT_FULL_MSK ) >> AG903_BMUn_STAT_FULL_POS; 273: stat->wwa = (reg & AG903_BMUn_STAT_WWA_MSK ) >> AG903_BMUn_STAT_WWA_POS; 274: stat->wbsy = (reg & AG903_BMUn_STAT_WBSY_MSK ) >> AG903_BMUn_STAT_WBSY_POS; 275: stat->wnum = (reg & AG903_BMUn_STAT_WNUM_MSK ) >> AG903_BMUn_STAT_WNUM_POS; 276: }
 
名前 
説明 
 
BASEADRレジスタからの読み込み. 
 
BUFNUMレジスタからの読み込み. 
 
CTRLレジスタからの読み込み. 
 
MODレジスタからの読み込み. 
 
SINKMODULEレジスタからの読み込み. 
 
SINKSTATレジスタからの読み込み. 
 
STATレジスタからの読み込み. 
 
STRIDEレジスタからの読み込み. 
 
BASEADRレジスタへの書き込み. 
 
BUFNUMレジスタへの書き込み. 
 
CTRLレジスタへの書き込み. 
 
MODレジスタへの書き込み. 
 
SINKMODULEレジスタへの書き込み. 
 
STRIDEレジスタへの書き込み. 
Copyright (c) 2017-2025 Axell Corporation. All rights reserved.