linux I2C (2)

本文深入探讨了Linux环境下I2C客户端地址的配置原理,包括如何通过`i2c_client_address_data`结构体定义正常、探测、忽略和强制地址,并解释了在存在多个相同设备挂载时的处理机制。
 

 

linux  I2C (2)

2011-7-5 12:13:45

/* i2c_client_address_data is the struct for holding default client
 * addresses for a driver and for the parameters supplied on the
 * command line
 */
struct i2c_client_address_data {
 unsigned short *normal_i2c;
 unsigned short *probe;
 unsigned short *ignore;
 unsigned short **forces;
};

用来描述一个I2C的Client 地址

实际赋值如下

static struct i2c_client_address_data addr_data = {   \
 .normal_i2c = normal_i2c,     \
 .probe  = probe,     \
 .ignore  = ignore,     \
 .forces  = forces,     \
}

OV2655的地址为
 
static unsigned short normal_i2c[] = {OV2655_ADDRESS, I2C_CLIENT_END };

i2c_ov2655_detect_client

首先要查看是否支持该功能

设备是否在对应的I2C总线上

i2c_attach_client

生存一个client后,还需要把这个client通知给core

首先检测这个client的地址是不是已经被占用

如果没有就直接把client加入到adapter的clients链表中

再进行设备注册

如果有多个OV2655挂载在I2C上会发生什么情况?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值