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

Master Write

Syntax
C++
int32_t AG903_I2CMgrMasterWrite(AG903_I2CMgrHandle* handle, AG903_I2CMgrWriteParam* param);
引数 
説明 
AG903_I2CMgrHandle* handle 
[in] I2Cハンドル 
AG903_I2CMgrWriteParam* param 
[in] パラメータ 

Master Write処理結果

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

Master Writeを行います。 

指定サイズ分のWrite完了でコールバックします。 

Stop Condition有とした場合は、Write完了後にStop Conditionを発行します。 

Restart conditionを伴うReadを行う場合はStop Condition無として、 

データWrite完了後に AG903_I2CmgrReadData 関数を使用して下さい。

1: int32_t AG903_I2CMgrMasterWrite(AG903_I2CMgrHandle* handle, AG903_I2CMgrWriteParam* param) 2: { 3: AG903_I2CMgrQue que; 4: int32_t retval = AG903_ENONE; 5: int32_t result; 6: uint32_t hdlnum; 7: uint8_t ch; 8: 9: result = I2CMgr_CheckHandle(handle, &ch, &hdlnum); 10: if(AG903_ENONE != result) { 11: return -AG903_EINVAL; 12: } 13: if(NULL == param) { 14: return -AG903_EINVAL; 15: } 16: if( (NULL == param->buf) || 17: (0 == param->size) ) { 18: return -AG903_EINVAL; 19: } 20: if(0xFF00 & param->addr) { 21: if( (AG903_I2C_10BITADDR_SIG != (param->addr>>11)) || 22: (0x0100 & param->addr) ) { 23: return -AG903_EINVAL; 24: } 25: } 26: else { 27: if(0x0001 & param->addr) { 28: return -AG903_EINVAL; 29: } 30: } 31: 32: que.proc = AG903_I2C_PROC_MASTER_WRITE; 33: que.hdlnum = hdlnum; 34: que.arg.wr = (*param); 35: retval = I2CMgr_SetQue(ch, &que); 36: if(AG903_ENONE == retval) { 37: I2cHandleStat[ch][hdlnum].stat = AG903_I2C_HANDLE_QUEUING; 38: I2CMgr_MainProcess(ch); 39: } 40: 41: return retval; 42: }
Copyright (c) 2017-2025 Axell Corporation. All rights reserved.