IIC总线协议的死锁问题

这篇具有很好参考价值的文章主要介绍了IIC总线协议的死锁问题。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

1. IIC的特性

2. IIC死锁问题分析

3. 常见的IIC死锁问题解决方法


1. IIC的特性

IIC协议是一个允许一主多从通信的协议,只能用于短距离通信,并且只需要两根信号线来交换信息。

IIC的两根信号是SCL和SDA,SCL是时钟信号线,SDA是数据输入/输出线。因为有时钟线,所以IIC是同步通信。又因为输入输出数据均使用同一根线,因此通信方向为半双工。(这里有名词解释)

IIC总线协议的死锁问题

IIC的通信过程可以看这里:常见的接口汇总 

今天主要来看一下IIC的死锁问题

2. IIC死锁问题分析

补充一个知识点,IIC的SDA和SCL在空闲时都处于高电平状态。

在实际使用中,IIC比较容易出现一个问题就是死锁,主要表现是:SCL为高,SDA一直为低。

在IIC主设备进行读写操作的过程中,主设备在开始信号后控制SCL生产8个时钟脉冲,然后拉低SCL信号为低电平,在这个时候,从设备输出应答信号,将SDA信号拉为低电平。

如果这个时候主设备异常复位,SCL就会被释放为高电平。此时,如果从设备没有复位,就会继续IIC的应答,将SDA一直拉为低电平,直到SCL变为低电平,才会结束应答信号。而对于IIC主设备来说,复位后检测SCL和SDA信号,如果发现SDA信号为低电平,则会认为IIC总线被占用,会一直等待SCL和SDA信号变为高电平。

这样,IIC主设备等待从设备释放SDA信号,而同时IIC从设备又在等待主设备将SCL信号拉低以释放应答信号,两者相互等待,IIC总线进入一种死锁状态。

同样的,当IIC进行读操作,从设备应答后输出数据,如果在这个时候IIC主设备异常复位而此时从设备输出的数据正好为0,也会导致IIC总线进入死锁状态。

3. 常见的IIC死锁问题解决方法

1. 主设备在检测到SDA被拉低超过一段时间后,主动复位从设备从而使之释放SDA。这种方法的前提是主设备连接了从设备的复位引脚,主设备就可以控制从设备的复位管脚使之复位。

2. 主设备在检测到SDA被拉低超过一段时间后,推送9个Clock到时钟总线上,取走从设备的ACK位,从而使从设备释放SDA为高电平。

3. 在主从设备之间串联一个IIC缓冲器,该缓冲器可以自动检测死锁状态。当检测到死锁时会主动断开与主设备的连接,并发送9个Clock给从设备,等从设备释放SDA线后重新与主设备建立连接。

IIC的死锁问题无法从根本上避免,除了主设备的异常复位导致IIC死锁,从设备在正常通信过程中也有可能异常拉低SDA导致死锁。所以软件在设计时要考虑当死锁发生时能够从死锁中恢复,使得IIC通信可以继续进行。文章来源地址https://www.toymoban.com/news/detail-471738.html

到了这里,关于IIC总线协议的死锁问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • ARM_iic总线_采集温湿度传感器

    include/si7006.h include/iic.h src/si7006.c src/iic.c main.c

    2024年02月13日
    浏览(37)
  • STM32之模拟IIC总线控制SHT20温湿度芯片

    一、IIC总线概述 1、IIC总线介绍 I2C (Inter-Integrated Circuit)总线产生于在80年代, 由PHILIPS公司开发的 两线式串行总线 ,用于连接微控制器及其外围设备, 最初为音频和视频设备开发。I2C总线两线制包括: 串行数据 SDA (Serial Data)、 串行时钟 SCL (Serial Clock)。时钟线必须由主

    2024年02月02日
    浏览(39)
  • arm学习-IIC总线连接温湿度传感器测量温湿度(si7006)

    main.c iic.h si7006.h iic.c si7006.c

    2024年02月13日
    浏览(55)
  • LIN总线物理层介绍之总线特性

    LIN总线具备如下特点: (1)LIN总线网络采用单主节点多从节点的组网方式,没有CAN总线的仲裁机制,一个LIN总线网络最多可连接16个节点,即一个主节点,最多15个从节点; (2)仅使用一根信号线就可以完成信息的传输; (3)最大传输速率是20kbps; (4)从节点无需晶振或

    2024年02月11日
    浏览(37)
  • 详解通信协议之IIC通信协议

    本文结合AT24C02对IIC通信协议原理进行了描述。 IIC通讯协议(Inter-Integrated Circuit)是由 Philips 公司开发双向同步半双工串行总线,只需要两根线(SDA、SCL)即可在连接于总线上的器件之间传送信息。IIC总线是一种共享的串行总线,是用于两个设备之间的短距离低速速率(250K左右)通

    2024年02月08日
    浏览(38)
  • Openharmony重要特性之一浅析分布式软总线

    概述 简介 分布式软总线的特征 官方说明 目录结构与代码说明 分布式软总线使用 使用说明 接口说明 发现 发现的接口 C++示例说明 组网 组网的接口 C++示例说明 传输 软总线传输关键流程 传输的接口 注意事项 1.1 简介 ​ 分布式软总线能做什么? ​ 1.1 通过共享一个局域网

    2024年02月13日
    浏览(48)
  • FPGA:三大协议(IIC、UART、SPI)之IIC

    摘要:1、本文讲述IIC的物理层面的结构(使用iic工作的物理层面的连接);2、本文讲解协议层面的通信交流格式(IIC时序);3、提供一个主机和从机的一个verilog代码;4、本文的主从机指的是:板子一号作为主机,发送数据给作为从机的板子二号;注意:在实际应用中,一

    2024年02月06日
    浏览(49)
  • 模拟IIC通讯协议(stm32)(硬件iic后面在补)

            1、IIC通讯需要两条线就可以,SCL、SDA。         2、IIC的数据传输的速率,不同的ic是不同的,根据电平维持的延时函数的时间来确定IIC数据传输的速率.         3、IIC的延时函数可以使用延时函数,延时函数一般使用系统滴答时钟产生延时,也是在Sysclk频率总线的

    2024年04月15日
    浏览(60)
  • IIC通讯协议

    IIC(Inter-integerted Circuit)集成电路总线,该通信协议由NXP(原PHILIPS)公司设计,多用于主控制器和从器件间的主从通信,在小数据量场景下使用,传输距离短,任意时刻只能有一个主机的特性。 IIC通信要求需要两条线路完成数据传输,一条是串行时钟线SCL和一条串行数据线

    2024年02月14日
    浏览(27)
  • 总线(四)Modbus总线 协议

    Modbus是一种串行通信协议。 1971年,Modicon公司首次退出Modbus协议,ModbusRTU和Modbus ASCII诞生于此。 后来施耐德电气(SchneiderElectric)收购了Modicon公司,并在1997年推出了ModbusTCP协议。2004年,中国国家标准委员会正式把Modbus作为了国家标准。 Modbus成为工业领域通信协议的业界标准

    2024年02月14日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包