歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Android 下Linux的I2C 讀寫函數實例

*******************************************************
功能:
讀取從機數據
每個讀操作用兩條i2c_msg組成,第1條消息用於發送從機地址,
第2條用於發送讀取地址和取回數據;每條消息前發送起始信號
參數:
client: i2c設備,包含設備地址
buf[0]: 首字節為讀取地址
buf[1]~buf[len]:數據緩沖區
len: 讀取數據長度
return:
執行消息數
*********************************************************/
/*Function as i2c_master_send */
static int i2c_read_bytes(struct i2c_client *client, uint8_t *buf, int len)
{
struct i2c_msg msgs[2];
int ret=-1;
//發送寫地址
msgs[0].flags=!I2C_M_RD;//寫消息
msgs[0].addr=client->addr;
msgs[0].len=2;
msgs[0].buf=&buf[0];
//接收數據
msgs[1].flags=I2C_M_RD;//讀消息
msgs[1].addr=client->addr;
msgs[1].len=len-2;
msgs[1].buf=&buf[2];

ret=i2c_transfer(client->adapter,msgs, 2);
return ret;
}


/*******************************************************
功能:
向從機寫數據
參數:
client: i2c設備,包含設備地址
buf[0]: 首字節為寫地址
buf[1]~buf[len]:數據緩沖區
len: 數據長度
return:
執行消息數
*******************************************************/
/*Function as i2c_master_send */
static int i2c_write_bytes(struct i2c_client *client,uint8_t *data,int len)
{
struct i2c_msg msg;
int ret=-1;
//發送設備地址
msg.flags=!I2C_M_RD;//寫消息
msg.addr=client->addr;
msg.len=len;
msg.buf=data;

ret=i2c_transfer(client->adapter,&msg, 1);
return ret;
}
Copyright © Linux教程網 All Rights Reserved