IIC总线协议的死锁问题

目录

1. IIC的特性

2. IIC死锁问题分析

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


1. IIC的特性

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

IIC的两根信号是SCL和SDA,SCL是时钟信号线,SDA是数据输入/输出线。因为有时钟线,所以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通信可以继续进行。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/26125.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

javascript基础六:说说你对闭包的理解?闭包使用场景?

一、是什么 一个函数和对其周围状态(lexical environment,词法环境)的引用捆绑在一起(或者说函数被引用包围),这样的组合就是闭包(closure) 也就是说,闭包让你可以在一个…

CDN加速在网站建设中的应用

近年来,随着互联网技术的不断发展,互联网行业迎来了井喷式发展,各类网站如雨后春笋般不断涌现,网站数量迅速增长,但与此同时也导致网站响应速度慢、访问不流畅等问题。因此,如何优化网站的性能、提高网站的…

【算法】简单讲解如何使用两个栈实现一个队列

文章目录 什么是栈和队列?设计思路代码实现 什么是栈和队列? 栈和队列其实大家基本都知道是什么,或者说,最基本的,他们的特性我们是知道的。 栈是一种FILO先进后出的数据结构,队列是一种FIFO先进先出的数据…

IP-Guard客户端上插入加密盘时提示格式化,能否禁止该弹窗?

客户端上插入加密盘时提示格式化,能否禁止该弹窗? 1、当Shell Hardware Detection服务启动时,操作系统检测硬件的速度要快于客户端,而此时操作系统是不能识别加密后的移动盘的,因此认为加密盘异常,提示需要格式化,策略-客户端配置,选择禁止windows7播放功能。配置后不…

华为OD机试题【字符统计】【2023 B卷 100分】

文章目录 🎯 前言🎯 题目描述🎯 解题思路📙 Python代码实现📗 Java代码实现📘 C语言代码实现 🎯 前言 🏆 《华为机试真题》专栏含2023年牛客网面经、华为面经试题、华为OD机试真题最…

【快应用】多语言适配案例

【关键词】 多语言,$t 【问题背景】 快应用平台的能力会覆盖多个国家地区,平台支持多语言的能力后,可以让一个快应同时支持多个语言版本的切换,开发者无需开发多个不同语言的源码项目,避免给项目维护带来困难。使用系…

《Datawhale南瓜书》出第二版啦!

Datawhale干货 作者:Datawhale开源项目团队 作为机器学习的入门经典教材,周志华老师的《机器学习》,自2016年1月底出版以来,首印5000册一周售罄,并在8个月内重印9次。先后登上了亚马逊,京东,当…

[数据集][目标检测]目标检测数据集绝缘子缺陷防震锤1688张5类别VOC格式

数据集格式:Pascal VOC格式(不包含分割路径的txt文件和yolo格式的txt文件,仅仅包含jpg图片和对应的xml) 图片数量(jpg文件个数):1688 标注数量(xml文件个数):1688 标注类别数:5 标注类别名称:["flashover",&…

00): Can‘t connect to MySQL server on ‘localhost:3306‘ (10061)

好久没有使用数据库, 连接数据库报上面的错误,尝试了网上的方法还是没有成功,思索之后想起之前手动关闭了mysql的服务,Windows启动时mysql服务不会自动启动,成功启动mysql服务后再次连接数据库,正常连接。 …

PGXC GaussDB

PGXCA PGXC(PostgreSQL eXtended Coordinator)是一个基于 PostgreSQL 架构的分布式数据库解决方案。它扩展了 PostgreSQL,为用户提供了在多个节点上分布式存储和处理数据的能力。 PGXC 的设计目标是将 PostgreSQL 扩展为能够处理大规模数据…

Java课程设计之购物车管理系统

一、项目准备 1、开发工具:JDK、Eclipse 2、需求分析: 包括商品管理和购物车管理。 1)商品管理主要功能 商品信息导入 显示所有商品信息 2)购物车主要功能 添加商品到购物车 修改购物车中的商品数量 显示购物车中的所有商…

MockServer 服务框架设计

【摘要】 大部分现有的 mock 工具只能满足 HTTP 协议下简单业务场景的使用。但是面对一些复杂的业务场景就显得捉襟见肘,比如对 socket 协议的应用进行 mock,或者对于支付接口的失败重试的定制化 mock 场景。为解决上述问题,霍格沃兹测试学院…

pdf怎么合并成一个文件?高效工具分享

PDF是一种非常常用的文档格式,许多人经常需要合并多个PDF文件为一个文件。这是因为有时候我们需要将多个PDF文件打包成一个文件,以便于共享或归档。在本文中,我们将介绍如何使用电脑或手机合并PDF文件。 以下是常见的合并PDF的软件&#xff1…

Java中的this、package、import

this 在Java中,this的作用和其词义很接近。 它在方法内部使用,即这个方法所属对象的引用; 它在构造器内部使用,表示该构造器正在初始化的对象。 this 可以调用类的属性、方法和构造器 什么时候使用this关键字呢&#xff…

Socket(七)

文章目录 1. 单文件服务器2. 重定向器Redirector3. 功能完备的HTTP服务器 1. 单文件服务器 要研究HTTP服务器,先从一个简单的服务器开始,无论接受什么请求,这个服务器都始终发送同一个文件。这个单文件服务器名为SingleFileHTTPServer&#…

车辆CAN信号,依据DBC文件解析流程

CAN信号解析流程 1.车辆CAN对应dbc文件 DBC文件是一种用于描述CAN(Controller Area Network)数据通信协议的文件格式,DBC文件中包含了CAN数据的信号定义、编码方式、单位、范围等信息,可以用于解析和生成CAN数据帧。 一个DBC文件…

ChatGPT的4个不为人知却非常实用的小功能

重点介绍四个ChatGPT很实用的小功能。 一、停止生成 如果在ChatGPT输出内容的过程中,我们发现结果不是自己想要的,可以直接点击“Stop generating”按钮,这样它就会立即停止输出。 二、复制功能 在ChatGPT返回对话的右侧,有三个图…

MySQL主存复制

介绍 配置-主库master 第一步:修改MySQL数据库的配置文件/etc/my.cnf [mysqld] log-binmysql-bin #[必须]启用二进制日志 server-id100 #[必须]服务器唯一id第二部:重启MySQL服务 systemctl restart mysqld第三步:登录MySQL操作&#x…

Linux:软件管理器yum编辑器vim

软件管理器yum&&编辑器vim 🔆软件管理器yum软件包是什么rzsz网络通畅性验证查看软件包怎么安装软件安装yum扩展源怎么卸载软件 🔆编辑器vim基本概念基本操作正常模式指令集末行模式指令集简单配置vim配置文件的位置常用配置选项使用插件参考资料…

DVWA——Brute Force

文章目录 Brute Force(暴力(破解))(1)Low等级(2)Medium等级(3)High等级(4)Impossible Brute Force(暴力(破解&…