I2C 原理详解

一,简介

IIC(Inter-Integrated Circuit)总线是一种由 PHILIPS 公司开发的两线式串行总线,用于连接微控制器及其外围设备是一种同步、半双工双向的两线式串行总线它由两条总线组成:串行时钟线SCL和串行数据线SDA。可发送和接收数据。

   ●  SCL线——负责产生同步时钟脉冲。

   ●  SDA线——负责在设备间传输串行数据。

在 CPU 与被控 IC 之间、 IC 与 IC 之间进行双向传送, 高速 IIC 总线一般可达 400kbps 以上。

I2C 总线在传送数据过程中共有三种类型信号, 它们分别是:开始信号、结束信号和应答信号。

     开始信号: SCL 为高电平时, SDA 由高电平向低电平跳变,开始传送数据。

     结束信号: SCL 为高电平时, SDA 由低电平向高电平跳变,结束传送数据。

     应答信号:接收数据的 IC 在接收到 8bit 数据后,向发送数据的 IC 发出特定的低电平脉冲,表示已收到数据。

                        CPU 向受控单元发出一个信号后,等待受控单元发出一个应答信号,CPU 接收到应答信号后,

                        根据实际情况作出是否继续传递信号的判断。若未收到应答信号,由判断为受控单元出现故障。

这些信号中,起始信号是必需的,结束信号和应答信号,都可以不要。

IIC 总线时序图如图所示:   

 

二,多主机I2C总线系统结构

 I2C该总线可以将多个I2C设备连接到该系统上。连接到I2C总线上的设备既可以用作主设备,也可以用作从设备, 如下图:

 

     ● 主设备负责控制通信,通过对数据传输进行初始化,来发送数据并产生所需的同步时钟脉冲。

     ● 从设备负责等待来自主设备的命令,并响应命令接收。

     ● 主设备和从设备都可以作为发送设备或接收设备。无论主设备是作为发送设备还是接收设备,同步时钟信号都只能由主设备产生

        如果用通用IO口模拟I2C总线,并实现双向传输,则需一个输入输出口(SDA),另外还需一个输出口(SCL) 

  • 三,I2C协议

1)空闲状态

             I2C总线总线的SDA和SCL两条信号线同时处于高电平时,规定为总线的空闲状态。此时各个器件的输出级场效应管均处在截

            止状态,即释放总线,由两条信号线各自的上拉电阻把电平拉高。

2)起始信号与停止信号

         ● 起始信号:当SCL为高期间,SDA由高到低的跳变;启动信号是一种电平跳变时序信号,而不是一个电平信号。

         ● 停止信号:当SCL为高期间,SDA由低到高的跳变;停止信号也是一种电平跳变时序信号,而不是一个电平信号。

                

3)应答信号ACK

        发送器每发送一个字节(8bit),就在时钟脉冲9期间释放数据线(将SDA拉高),由接收器(SDA拉低)反馈一个应答信号。

        应答信号为低电平时,规定为有效应答位(ACK简称应答位),表示接收器已经成功地接收了该字节;应答信号为高电平时,

        规定为非应答位(NACK),一般表示接收器接收该字节没有成功。 

        对于反馈有效应答位ACK的要求是,接收器在第9个时钟脉冲之前的低电平期间将SDA线拉低,并且确保在该时钟的高电平

        期间为稳定的低电平如果接收器是主控器,则在它收到最后一个字节后,发送一个NACK信号,以通知被控发送器结束

        数据发送,并释放SDA线,以便主控接收器发送一个停止信号P

        

4)数据有效性

        I2C总线进行数据传送时,时钟信号为高电平期间,数据线上的数据必须保持稳定,只有在时钟线上的信号为低电平期间,

        数据线上的高电平或低电平状态才允许变化 即:数据在SCL的上升沿到来之前就需准备好。并在在下降沿到来之前必须稳定。

                

5)数据的传送

                在I2C总线上传送的每一位数据都有一个时钟脉冲相对应(或同步控制),即在SCL串行时钟的配合下,在SDA上逐位地串行

                传送每一位数据。数据位的传输是边沿触发。

        

                        图片来源

                

                        图片来源        

                

参考资料:

I2C总线时序详解_薇远镖局的博客-优快云博客

I2C Primer: What is I2C? (Part 1) | Analog Devices

I2C Timing: Definition and Specification Guide (Part 2) | Analog Devices

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值