I2C通信

IIC,即I2C(inter Integrated Circuit  )(inter IC bus),集成电路总线,是philips公司开发的一种通用数据总线。        

I2C特性

同步半双工通信

由一根SCL(serial clock)时钟线和一根SDA(serial data)数据线组成

带数据应答

支持一主多从模式

硬件电路

        由左边的硬件电路图可以知道,所有的I2C设备的SDA和SCL连在一起。SCL(serial clock)时钟线使主机和从机实现严格的同步通信,而UART则需要设定波特率来同一通信双方采样时间。此外,为了防止主机输出高电平从机输出低电平发生短路,为SCL和SDA各添加了一个上拉电阻(左图),禁止了所有设备输出强上拉的的高电平,采用外置弱上拉电阻加开漏输出的电路结构,阻值一般为4.7千欧左右。

        右图表示CPU和被控IC的引脚的内部结构,左半部分表示SCL的结构,右半部分表示SDA的结构。其输出模式为开漏输出,输出低电平时,开关管导通,引脚直接接地,是强下拉;输出高电平时,开关管断开,引脚什么都不接,此时处于浮空状态。这样的话,所有设备都只能输出低电平而不能输出高电平。为了避免输入高电平造成的引脚浮空状态,I2C设计了两个上拉电阻使其可以输出弱上拉的高点平,这样就同时避免了浮空状态和短路。此外弱上拉电阻和开漏模式的电路结构使I2C通信具有了“线与”的特性。

        以上是《数字电子技术基础》关于线与的说法,简而言之,在I2C同通信中,只要任意一个或多个设别输出低电平,总线就处于低电平。只有所有的设备都输出高电平,总线才处于高电平。I2C可以利用这个特性,执行多主机模式下的时钟同步和总线仲裁。此外在此模式下,断开开关管,直接输出高电平,观察电平高低即可变为输入模式,避免了引进模式的频繁切换。

        总结一下就是,I2C的外置弱上拉电阻加开漏输出的电路结构实现了:

        1.完全杜绝了电源短路现象,保证了电路的安全。

        2.避免了引脚模式的频繁切换,同时兼具输入和输出功能。        

        3.该模式实现了“线与”的逻辑。

I2C时序

时序基本单元

 

起始条件:SCL高电平期间SDA从高电平切换到低电平。

终止条件:SCL高电平期间SDA从低电平切换到高电平。

发送一个字节:SCL低电平期间,主机将数据位依次放到SDA线上(高位先行),然后释放SCL,从机将在SCL高电平期间读取数据位,所以SCL高电平期间不允许由数据变化,一次循环上述过程八次,即可发送一个字节。

 

I2C时序

        以上是指定地址写入数据的一个完整数据帧,s为起始条件信号。前八位11010000中前七位是指定通信的设备(slave address),最后一位为0表示之后进行写操作,RA(receive ack(Answer back)):0表示从机应答,主机继续发送数据,之后的八位为指定的寄存器地址,再应答,继续发送,指定寄存器写入0xAA,应答,结束。

 

        以上是指定地址读出数据的一个完整数据帧,s为起始条件信号。前八位11010000中前七位是指定通信的设备(slave address),最后一位为0表示之后进行写操作,RA:0表示从机应答,主机继续发送数据,之后的八位为指定的寄存器地址,此时地址指针指向该寄存器地址,应答,Sr(star repeat)为重复起始条件,再次指定通信设备,此时最后一位为1,表示读操作。应答,读出指定寄存器的数据,主机应答位SA(send ack(Answer back))为给1,表示不应答,从机释放总线,将SDA的控制全交还给主机,避免SDA因为被从机控制而不能回弹为高电平,最后停止。

 

 

 

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值