linux i2c通信架构中的重要结构体

linux中i2c子系统包含i2c核心层,i2c主机驱动层,i2c设备驱动层
i2c核心主要是提供了主机驱动的注册/注销方法,i2c通信方法(alogrithm),以及上层的与具体适配器硬件无关的代码以及探测设备,检测设备地址的上层代码,代码文件目录:kernel/drivers/i2c/i2c-core.c

i2c主机驱动层是i2c的主设备程序,是i2c适配器的实现代码,适配器是受CPU直接控制的,一般直接集成在CPU内部,因此这部分代码是cpu芯片厂家去实现的。如果板子上的硬件i2c资源不够用的时候,用gpio口去模拟i2c的适配器代码的话,这一部分代码就需要用到两个的gpio口资源去实现i2c的通信波形,俗称软件i2c,一般用在单片机这种硬件资源少的控制器中,传输速率相比硬件i2c较慢。

i2c设备驱动层是指i2c的从设备,是指挂接在i2c适配器上的从设备,通过i2c协议和CPU实现数据交换,这部分驱动是从设备芯片厂家去实现的。

总结下来,在i2c子系统中,有六个非常重要的结构体,是我们在写主机设备和从设备驱动的过程中需要重点关注的,下面对这六个结构体的意义和重要成员做如下注释
/kernel/include/linux/i2c.h
struct i2c_adapter{
struct module *owner;
unsigned int class;
*const struct i2c_alogrithm algo;
void *algo_data;

struct rt_mutex bus_lock;

int timeout;
int retries;
struct device de

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值