ubantu IIC驱动

本文介绍了I2C总线的特点及其在Ubuntu中的驱动架构,包括核心层、设备驱动层和总线驱动层的详细组件,如i2c_driver、i2c_client、i2c_algorithm和i2c_adapter。通过解析i2c-s3c2410.c的初始化过程,阐述了I2C设备的注册与适配器的连接方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.   I2C特点介绍

IIC总线只需要两根总线(串行数据线SDA,串行时钟线SCK)就可以完成读写操作,而且通信协议简单,一条总线上可以挂载多个设备,因此被广泛使用。但是IIC总线有一个缺点,就是传输速率比较低。SDA负责数据传输,SCL负责时钟同步。

 

1.1     I2C设备驱动的概述

这里简单地将I2C设备驱动的层次分为设备层、总线层。重点是理 解 4 个数据结构(i2c_driveri2c_clienti2c_algorithmi2c_adapter)i2c_driver2c_client 属于设备层;i2c_algorithmi2c_adapter 属于总线层。值得注意的是一个系统中可能有多个总线层, 也就包含多个总线控制器;也可能有多个设备层,包含不同的I2C设备。

 

2.总线架构介绍

这里写图片描述

 

i2c设备驱动层组件(i2c-dev.c)给用户提供调用接口,众所周知,用户实现策略,驱动实现的是机制。
而i2c核心层起到承上启下的作用,如下

2.1    核心层(i2c-core.c)

struct bus_type:

struct bus_type i2c_bus_type = {
    .name        = "i2c",
    .dev_attrs    = i2c_dev_attrs,
    .match        = i2c_device_match,
    .uevent        = i2c_device_uevent,
    .probe        = i2c_device_probe,
    .remove        = i2c_device_remove,
    .shutdown    = i2c_device_shutdown,
    .suspend    = i2c_device_suspend,
    .resume        = i2c_device_resume,
};

核心层,注册了i2c总线,以及驱动注册

 

 

2.2    设备驱动层

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值