BCM I2C函式更改

2021-09-08 03:54:12 字數 1566 閱讀 7004

版本:sdk-xgs-robo-6.3.8

平台:bcm53344

應用:控制poe晶元

描述:poe控制晶元使用pd69200,使用i2c與其通訊,每次需要傳送15位元組資料,並接受15位元組的返回資料。

1.更改函式

開啟檔案sdk-xgs-robo-6.3.8/src/soc/i2c/smbus.c

更改如下:

intsoc_i2c_block_read(

intunit, i2c_saddr_t saddr,

uint8 com, uint8* count, uint8*data)

} else

if (rt-- > 0

) else

} else  //後面的不執行

#endif

// ... 省略 ...

}//同理,write函式也進行注釋

intsoc_i2c_block_write(

intunit, i2c_saddr_t saddr,

uint8 com, uint8 count, uint8*data)

#endif

i2c_lock(unit);

#ifdef bcm_cmicm_support

if(soc_feature(unit, soc_feature_cmicm) && !soc_is_sand(unit))

rval = (uint32) *ptr;

soc_reg_field_set(unit, cmic_i2cm_smbus_master_data_writer, &rval, master_wr_statusf, 1); /*

last byte

*/write_cmic_i2cm_smbus_master_data_writer(unit, rval);

rval = 0

; soc_reg_field_set(unit, cmic_i2cm_smbus_master_commandr, &rval, smbus_protocolf, smbus_block_write);

write_cmic_i2cm_smbus_master_commandr(unit,rval);

rv =smbus_start_wait(unit);

if (rv != soc_e_none && rt-- > 0

) else

if (rt < 0

) }

else

#endif

2.匯出全域性符號

開啟檔案 sdk/systems/linux/kernel/modules/include/bcmx_export.h

最後新增:

#include

export_symbol(soc_i2c_is_attached);

export_symbol(soc_i2c_attach);

export_symbol(soc_i2c_block_read);

export_symbol(soc_i2c_block_write);

之後從新編譯sdk即可。

C 函式 實驗2

1.實驗內容 函式宣告和函式定義 形參和實參 主調函式把實參的值傳送給被調函式的形參從而實現主調函式向被調函式的資料傳送。返回值的作用 1.返回函式的運算結果。2.return 用於結束當前的函式執行。函式的引數傳遞 2.題目及 思路 將判斷質數單獨寫成乙個函式,如果乙個數從2開始到他本身都沒有能整...

C 函式指標2

對於以下三個函式 const double f1 const double ar,int n const double f2 const double int n const double f3 const double int n 第乙個引數雖然是三種形式,但是表達的都是一種意思,因此 可以使用乙...

C 之函式過載(2)

函式過載就是函式多型 型別引用和型別被編譯器視為同乙個特徵標 過載區分const 和 非const void staff double ra matches modifiable lvalue void staff const double ra matches rvalue,const lvalu...