一文吃透IIC通信协议

一、主机向从机写入数据过程

        1、主机首先产生START信号;

        2、然后发送一个从机地址,这个地址共有7位,紧接着的第8位是数据方向位(R/W),“0”表示主机向从机发送数据(写),“1”表示主机从从机接收数据(读);

        3、主机发送地址时,总线上的每个从机都将这7位地址码与自己的地址进行比较,若相同,则认为自己正在被主机寻址,根据R/W位将自己确定为发送器和接收器;

        4、这时候主机等待从机的应答信号(ACK);

        5、当主机收到应答信号时,发送要访问从机的那个地址, 继续等待从机的应答信号;

        6、当主机收到应答信号时,发送N个字节的数据,继续等待从机的N次应答信号;

        7、主机产生停止信号,结束传送过程。
 

二、主机读取从机数据过程

        1、主机首先产生START信号;

        2、然后紧跟着发送一个从机设备地址,注意此时该地址的第8位为0,表明是向从机写命令;

        3、这时候主机等待从机的应答信号(ACK);

        4、当主机收到应答信号时,发送要访问的寄存器地址,继续等待从机的应答信号;

        5、当主机收到应答信号后,主机要改变通信模式(主机将由发送变为接收,从机将由接收变为发送)所以主机重新发送一个开始start信号,然后紧跟着发送一个从机地址,注意此时该地址的第8位为1,表明将主机设置成接收模式开始读取数据;

        6、这时候主机等待从机的应答信号,当主机收到应答信号时,就可以接收1个字节的数据,当接收完成后,主机发送非应答信号(NACK),表示不再接收数据;

        7、主机进而产生停止信号,结束传送过程。
 

3.2 为什么Open-Drain开漏输出需要上拉电阻
  开漏Pin不连接外部的上拉电阻,则只能输出低电平。当输出电平为低时,N沟道三极管是导通的,这样在Vcc’和GND之间有一个持续的电流流过上拉电阻R和三极管Q1。这会影响整个系统的功耗。采用较大值的上拉电阻可以减小电流。但是,但是大的阻值会使输出信号的上升时间变慢。即上拉电阻R pull-up的阻值 决定了逻辑电平转换的沿的速度。阻值越大,速度越低功耗越小。反之亦然。

3.3 为什么iic需要漏极开路
防止短路
如果不设为开漏,而设为推挽,几个设备连在同一条总线上,这时某一设备的某个IO输出高电平,另有一台设备的某一个IO输出低电平,这时你会发现这两个IO的VCC和GND短路了;但是开漏就不会有这个问题。

增强端口扇出能力、降低功耗
  IC为增强端口扇出能力而设计为漏极开路样式,使用时将该端口设为低电平有效的灌电流模式,能得到最大输出电流同时IC功耗最低。此类端口当输出高电平则需要外接上拉电阻。

利用“线与”判断总线占用状态
  可以将多个开漏输出的Pin脚,连接到一条线上,形成“与逻辑”关系,即“线与”功能,任意一个变低后,开漏线上的逻辑就为0了。这也是I2C,SMBus等总线判断总线占用状态的原理。
如果总线上的一个A设备将SDA拉高,这时总线上另一个B设备已将SDA拉低,这时由于1&0=0,所以A设备检查SDA的时候会发现不是高电平而是低电平,这就表明总线上已经有其他设备占用总线了,A只好放弃,如果检测是高电平那就可以使用。

增加驱动能力
如果在漏极drain_output接上拉电阻,则可以进行电平转换,且驱动能力较强。
利用外部电路的驱动能力,减少IC内部的驱动。当IC内部MOSFET导通时,驱动电流是从外部的VCC流经R pull-up ,MOSFET到GND。IC内部仅需很下的栅极驱动电流。

控制输出高电平大小
可以利用改变上拉电源的电压,改变传输电平:图表 5 open-drain输出电平的原理,IC的逻辑电平由电源Vcc1决定,而输出高电平则由Vcc2决定。这样我们就可以用低电平逻辑控制输出高电平逻辑了。

通信协议相关好文

常见的通讯协议总结(USART、IIC、SPI、485、CAN)_奋斗的helloworld的博客-CSDN博客

【通信协议】IIC通信协议详解_狂飙的犇牛的博客-CSDN博客

一文搞懂SPI通信协议_spi协议_不脱发的程序猿的博客-CSDN博客

UART、IIC、SPI、CAN通信的区别与应用_can通信与uart通信的区别_DAI 123的博客-CSDN博客

深刻理解GPIO(上拉输入、下拉输入、模拟输入、浮空输入,开漏输出,推挽输出的区别,以STM32为例)_没有余地没有余地的博客-CSDN博客

【IIC通信】Chap.2 (I2C)IIC协议的特点;为什么IIC需要开漏输出、上拉电阻?_iic数据线要配开漏吗_Jie_MSD的博客-CSDN博客

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值