嵌入式接口通识知识之I2C接口

1.1 基本概念

I2C的全称是Inter-Integrated Circuit,译为集成电路总线,是一种同步、双向、半双工的两线式串行接口总线。连接到I2C总线上的设备既可以用作主设备,也可以用作从设备。主设备通常是一个微控制器或微处理器,用来控制通信的启动和停止、时钟信号(SCL)的产生,以及数据传输 ;从设备则是等待来自主设备的命令并响应命令接收。

I2C总线是共享的总线系统,因此可以将多个I2C设备连接到该系统上,不同的I2C设备有不同的器件地址,主设备通过I2C设备的器件地址访问指定的I2C从设备,连接方式如下图:

I2C采用的开漏输出,SDA跟SCL两根线都需要加上拉电阻,当总线空闲时候两根线是高电平。I2C的优点在于其简单性、灵活性、易于集成、通信速度快、占用引脚少、连接简单等。然而,由于其半双工的工作方式,以及在同一总线上连接的设备数量有限,I2C在某些应用中可能不是最佳选择,也具有传输距离短、信号干扰大等缺点。

1.2 工作原理

I2C是一种双线总线,分别是时钟线SCL和数据线SDA。在正常工作中,总线协议有起始条件与停止条件。

起始条件:SCL为高电平,SDA由高电平变为低电平。

停止条件:SCL为高电平,SDA由低电平变为高电平。

起始跟停止条件由主机控制。当主机发出起始条件后,I2C总线会被认为忙碌状态。当主机发出停止条件后,I2C总线会被认为空闲状态。当主机发送一个重新起始条件替代停止位I2C总线也会被认为处于忙碌状态。

主机发出起始条件后,开始读取数据,但这里要注意的是数据的有效性。

数据有效性:SCL时钟线在高电平期间,SDA必须是稳定的。SCL时钟线在低电平时候SDA数据线才允许高电平或者低电平变化。每传送一个数据位产生一个时钟。

在数据传输时,SDA线上面的每个字节数据长度必须是8位。每次传输的字节不受限制,每个字节后面跟随着一个应答位,数据以高有效位传输。如果从机不能够接收数据或者传输一个完整的数据字节,直到他完成某些其他功能。例如一个内部中断,它可以保持SCL为低电平状态,迫使主服务器进入等待状态。当从机准备好接收数据后它会释放SCL时钟线数据继续传输。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值