Linux Kernel Driver I2C 总线驱动编程

概念

I2C 总线,为两线式串行总线。

CPU与外设之间的数据通信采用两根信号线分别是:

SDA数据线以及SCL时钟控制信号线。

SDA:用于CPU与外设的数据传输。

SCL:用于同步双方的数据。

CPU在SCL为低电平时,将数据放在数据线上,那么设备在同周期的高电平,从数据线上获取数据。

串行:CPU和外设之间的数据通信是一个时钟周期传输一位。

总线:在SCL和SDA两根信号线上可以挂接多个外设。

示意图,如下:

上拉电阻:两个信号线,各界上一个上拉电阻,两根线默认都是高电平。

问题

1. CPU是如何找到总线上某个具体的外设的呢?(设备地址)

2. CPU一旦找到某个具体的外设,如果通过两根线进行访问的呢?

3. SDA与SCL既然同时存在,是如何配合使用的呢?

总线控制权

SDA 可以由通信间双方进行控制。

SCL只能由CPU进行控制。

对于SDA,配置输入的一方,释放控制权;配置输出的一方,获取控制权。另,不能同时配置输出,但是可以同时配置输入,此时由上拉电阻控制。

I2C 总线协议

START 信号

又称起始信号,CPU访问总线上的某个外设,CPU先向总线上发送START信号。

至少需要两个周期:

第一个周期内:SDA 与 SCL 同为高电平。

第二个周期内:SCL 维持高电平,而SDA由高电平到低电平发生跳变。

SCL 保持高电平

SDA 由高电平到低电平发生跳变

STOP 信号

结束信号。CPU要结束对设备的访问,CPU发送STOP信号。

SCL 保持高电平,而SDA 由低电平到高电平跳变,表示结束信号。

设备地址与读写位

同一个总线上的各个外设,都有一个唯一的设

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值