i2c 读写

时间:2023-05-23 18:12:38

在I2C设备读取,必须是在同一个周期内。

一个例子,可以同时读出两个值

int read_register_double_value(int reg_addr, unsigned char *value_h, unsigned char *value_l)
{
struct i2c_rdwr_ioctrl_data io_data = {};
struct i2c_msg msg[] = {{}};
unsigned char data = ;
unsigned char out[] = {}; data = red_addr;
msg[].addr = i2c_addr;
msg[].len=;
msg[].buf = &data;
msg[].addr = i2c_addr;
msg[].flags = I2C_M_RD;
msg[].len = ;
msg[].buf = &out[] io_data.nmsg2 = ;
io_data,msgs = &msg[]; ret = ioctrl(devide_id, I2C_RDWR, &io_data); *value_h = out[];
*value_l = out[];
}

在uboot中调试i2c,很实用。

i2c dev 0//悬着i2c设备总线

i2c probe 56 //查看地址56是否是i2c设备

i2c md 56 0 1 //向设备中写数据

。。。