解决proteus仿真stm32,IIC通讯,IIC DEBUG无法显示从机应答信号的问题(问题情况为在8位数据后应答位显示?)
1、错误现象
错误现象如下,在IIC数据传输8位数据后,IIC DEBUG的应答位无法显示应答位


2、错误原因
我们打开信号传输的示波器,直接去查看IIC从机校验位的数据波形,可以看到从机示波器显示的的波形为半高ACK,那错误原因就理所当然的了。

我们不妨分析一下,IIC在等待从机校验的时候,通常会将SDA和SCL拉高,SCL拉高是用于接收,SDA拉高是默认将从机应答置为到无应答或忙碌状态,然后在等待从机应答将SDA拉低,表示IIC通讯的应答位。

那在上述波形中,我们可以看到在上一个8位数据位传输完后,SDA和SCL都拉高了,但是SDA的数据位只出现了半高的数据信号,这是为什么呢,那必然是传输完八位数据后,从机自然而然地拉低了SDA以表示了应答信号,但是又由于从机的某些原因(下文会讲到),导致SDA信号无法完全拉低,就出现了信号半高的状态,IIC DEBUG无法识别半高SDA信号,所以显示?
当然这样表示从机同样收到了应答,IIC是可以正常通讯的,但是IIC DEBUG无法显示而言。
3、解决方案
软件解决方案:
由于问题原因出在IIC的从机应答无法完全拉低,那我们可以在接收应答信号前直接将SDA拉低,然后再接收从机信号,当应答信号无应答或忙碌而置为时会拉高SDA,出现SDA半高的情况,这样同样会出现?情况,但是我们就只需要将?当成无应答就好。那当应答信号成功发送,无置为后,那IIC DEBUG自然而然就正常了。(当然这种硬件问题用软件解决肯定不是最佳方案,但是胜在软件解决的方案方便实用)
硬件解决:
如果要通过硬件解决的话,就得分析一下为何会出现上述的半高情况了,而这里我是参考一位大佬的分析结果的
问题原因为:ACK响应位出现半高电平
这种情况说白了就是IIC链路上的器件接口不是纯粹的OD/OC,一般多出在可编程器件上,比如说MCU,CPLD。如果IIC总线上挂了多个器件,在ACK位的时候,有器件管脚没有配置为OD或者OC,导致芯片内部将该管脚拉高,此时链路上其他的器件又需响应想拉低总线,如果两边链路上都存在串阻,则通过电阻分压会出现中间电平;如果没有串阻,或者串阻过小,则可能烧坏器件(灌电流)。总之非常危险,这个半高电平可能出现在任何位置,只不过ACK位容易被忽视,更容易出问题。
原文链接:IIC的ack信号为何会出现半高电平?_iic ack-CSDN博客
当然硬件方法的解决方案我还没有找到,如果有大哥知道怎么用硬件解决,可以分享一下,不胜感激,当然我也在不断探讨,要是我找到硬件解决方案我会第一时间发出来的。
相关文章:
解决proteus仿真stm32,IIC通讯,IIC DEBUG无法显示从机应答信号的问题(问题情况为在8位数据后应答位显示?)
1、错误现象 错误现象如下,在IIC数据传输8位数据后,IIC DEBUG的应答位无法显示应答位 2、错误原因 我们打开信号传输的示波器,直接去查看IIC从机校验位的数据波形,可以看到从机示波器显示的的波形为半高ACK,那错误原…...
PHP判断闰年
闰年的规则 1.能被4整除且不能被100整除 (普通闰年) 2.能被400整除,公历年份是整百数的,必须是400的倍数才是闰年(世纪闰年) 代码 function isLeapYear($year) {if($year%40 && $year%100!0){r…...
证照之星XE专业版下载专业证件照制作工具
值得肯定的是智能背景替换功能,轻松解决背景处理这一世界难题。不得不提及的是新增打印字体设置,包含字体选择、字号大小、字体颜色等。不同领域的应用证明了万能制作,系统支持自定义证照规格,并预设了17种常用的证件照规格。人所…...
VR全景图片如何制作?揭秘VR全景图片制作全流程
引言: VR全景图片是一种以全景视角为基础的图片制作技术,能够呈现出更为真实、立体的视觉体验。通过VR全景图片,观众可以360环顾四周,仿佛身临其境,提供了一种全新的感官体验,那么如何制作出令人满意的全景…...
vue element el-table-column 循环示例代码
如果你想循环生成多个el-table-column,可以使用v-for指令。以下是一个示例: <template><el-table :data"tableData"><el-table-column v-for"column in columns" :key"column.prop" :label"column.l…...
R语言生物群落(生态)数据统计分析与绘图实践技术应用
R 语言作的开源、自由、免费等特点使其广泛应用于生物群落数据统计分析。生物群落数据多样而复杂,涉及众多统计分析方法。以生物群落数据分析中的最常用的统计方法回归和混合效应模型、多元统计分析技术及结构方程等数量分析方法为主线,通过多个来自经典…...
有了 GPT,还需要付费咨询吗?
之前写过一篇文章《在创业公司,我靠它续命 …》,提到现在写代码基本靠 GPT。现在这种状况不仅没有改变,反而依赖更深。公司立项开发产品的 Linux 版本,全靠我一个人。我之前虽然一直使用 Linux 开发环境,对 Linux 系统…...
如何搭建一台服务器?
一.准备工作 1. 确定服务器类型:根据需求选择适合的服务器类型,如网站服务器、数据库服务器、文件服务器等。 2. 选择操作系统:根据服务器类型选择合适的操作系统,如Linux(如Ubuntu、CentOS)、Windows Se…...
[转载]C++序列化框架介绍和对比
Google Protocol Buffers Protocol buffers 是一种语言中立,平台无关,可扩展的序列化数据的格式,可用于通信协议,数据存储等。 Protocol buffers 在序列化数据方面,它是灵活的,高效的。相比于 XML 来说&…...
分类预测 | Matlab实现KOA-CNN-BiLSTM-selfAttention多特征分类预测(自注意力机制)
分类预测 | Matlab实现KOA-CNN-BiLSTM-selfAttention多特征分类预测(自注意力机制) 目录 分类预测 | Matlab实现KOA-CNN-BiLSTM-selfAttention多特征分类预测(自注意力机制)分类效果基本描述程序设计参考资料 分类效果 基本描述 1…...
浮点数和定点数(上):怎么用有限的Bit表示尽可能多的信息?
目录 背景 浮点数的不精确性 定点数的表示 浮点数的表示 小结 背景 在我们日常的程序开发中,不只会用到整数。更多情况下,我们用到的都是实数。比如,我们开发一个电商 App,商品的价格常常会是 9 块 9;再比如&…...
一文详解汽车电子LIN总线
0.摘要 汽车电子LIN总线不同于CAN总线。 LIN总线基本上是CAN总线的廉价补充,相比于CAN总线,它提供较低的可靠性和性能。同时LIN总线也是一个应用非常广泛的网络协议,并且越来越受欢迎。 再一次,我们准备了一个关于LIN总线的简要…...
论文阅读——GPT3
来自论文:Language Models are Few-Shot Learners Arxiv:https://arxiv.org/abs/2005.14165v2 记录下一些概念等。,没有太多细节。 预训练LM尽管任务无关,但是要达到好的效果仍然需要在特定数据集或任务上微调。因此需要消除这个…...
星环科技分布式向量数据库Transwarp Hippo正式发布,拓展大语言模型时间和空间维度
随着企业、机构中非结构化数据应用的日益增多以及AI的爆发式增长所带来的大量生成式数据,所涉及的数据呈现了体量大、格式和存储方式多样、处理速度要求高、潜在价值大等特点。但传统数据平台对这些数据的处理能力较为有限,如使用文件系统、多类不同数据…...
滚动条默认是隐藏的只有鼠标移上去才会显示
效果 在设置滚动条的类名中写 /* 滚动条样式 */.content-box::-webkit-scrollbar {width: 0px; /* 设置纵轴(y轴)轴滚动条 */height: 0px; /* 设置横轴(x轴)轴滚动条 */}/* 滚动条滑块(里面小方块) */.…...
Go学习第十五章——Gin参数绑定bind与验证器
Go web框架——Gin(参数绑定bind与验证器) 1 bind参数绑定1.1 JSON参数1.2 Query参数1.3 Uri绑定动态参数1.4 ShouldBind自动绑定 2 验证器2.1 常用验证器2.2 gin内置验证器2.3 自定义验证的错误信息2.4 自定义验证器 1 bind参数绑定 在Gin框架中&#…...
EtherCAT的4种寻址方式解析
我们知道,一个EtherCAT数据帧(frame)里面包含很多个报文(datagram),不管是什么样式的报文,它们的目的只有一个,就是读写从站寄存器或内存。所以寻址就是以什么方式访问哪个从站的哪个…...
Trino 源码剖析
Functions function 反射和注册 io.trino.operator.scalar.annotations.ScalarFromAnnotationsParser 这里是提取注解元素的方法 String baseName scalarFunction.value().isEmpty() ? camelToSnake(annotatedName(annotated)) : scalarFunction.value(); 这里如果 scala…...
element表格自定义筛选
文章目录 前言一、简介二、效果展示三、源码总结 前言 提示:这里可以添加本文要记录的大概内容: …待续 提示:以下是本篇文章正文内容,下面案例可供参考 一、简介 修改el-table的筛选…待续 二、效果展示 三、源码 使用方法…...
全方位 Linux 性能调优经验总结
Part1Linux性能优化 1性能优化 性能指标 高并发和响应快对应着性能优化的两个核心指标:吞吐和延时 图片来自: www.ctq6.cn 应用负载角度:直接影响了产品终端的用户体验系统资源角度:资源使用率、饱和度等 性能问题的本质就是系统资源已经…...
《Playwright:微软的自动化测试工具详解》
Playwright 简介:声明内容来自网络,将内容拼接整理出来的文档 Playwright 是微软开发的自动化测试工具,支持 Chrome、Firefox、Safari 等主流浏览器,提供多语言 API(Python、JavaScript、Java、.NET)。它的特点包括&a…...
使用分级同态加密防御梯度泄漏
抽象 联邦学习 (FL) 支持跨分布式客户端进行协作模型训练,而无需共享原始数据,这使其成为在互联和自动驾驶汽车 (CAV) 等领域保护隐私的机器学习的一种很有前途的方法。然而,最近的研究表明&…...
Opencv中的addweighted函数
一.addweighted函数作用 addweighted()是OpenCV库中用于图像处理的函数,主要功能是将两个输入图像(尺寸和类型相同)按照指定的权重进行加权叠加(图像融合),并添加一个标量值&#x…...
跨链模式:多链互操作架构与性能扩展方案
跨链模式:多链互操作架构与性能扩展方案 ——构建下一代区块链互联网的技术基石 一、跨链架构的核心范式演进 1. 分层协议栈:模块化解耦设计 现代跨链系统采用分层协议栈实现灵活扩展(H2Cross架构): 适配层…...
Keil 中设置 STM32 Flash 和 RAM 地址详解
文章目录 Keil 中设置 STM32 Flash 和 RAM 地址详解一、Flash 和 RAM 配置界面(Target 选项卡)1. IROM1(用于配置 Flash)2. IRAM1(用于配置 RAM)二、链接器设置界面(Linker 选项卡)1. 勾选“Use Memory Layout from Target Dialog”2. 查看链接器参数(如果没有勾选上面…...
【服务器压力测试】本地PC电脑作为服务器运行时出现卡顿和资源紧张(Windows/Linux)
要让本地PC电脑作为服务器运行时出现卡顿和资源紧张的情况,可以通过以下几种方式模拟或触发: 1. 增加CPU负载 运行大量计算密集型任务,例如: 使用多线程循环执行复杂计算(如数学运算、加密解密等)。运行图…...
Axios请求超时重发机制
Axios 超时重新请求实现方案 在 Axios 中实现超时重新请求可以通过以下几种方式: 1. 使用拦截器实现自动重试 import axios from axios;// 创建axios实例 const instance axios.create();// 设置超时时间 instance.defaults.timeout 5000;// 最大重试次数 cons…...
C++ Visual Studio 2017厂商给的源码没有.sln文件 易兆微芯片下载工具加开机动画下载。
1.先用Visual Studio 2017打开Yichip YC31xx loader.vcxproj,再用Visual Studio 2022打开。再保侟就有.sln文件了。 易兆微芯片下载工具加开机动画下载 ExtraDownloadFile1Info.\logo.bin|0|0|10D2000|0 MFC应用兼容CMD 在BOOL CYichipYC31xxloaderDlg::OnIni…...
Device Mapper 机制
Device Mapper 机制详解 Device Mapper(简称 DM)是 Linux 内核中的一套通用块设备映射框架,为 LVM、加密磁盘、RAID 等提供底层支持。本文将详细介绍 Device Mapper 的原理、实现、内核配置、常用工具、操作测试流程,并配以详细的…...
RabbitMQ入门4.1.0版本(基于java、SpringBoot操作)
RabbitMQ 一、RabbitMQ概述 RabbitMQ RabbitMQ最初由LShift和CohesiveFT于2007年开发,后来由Pivotal Software Inc.(现为VMware子公司)接管。RabbitMQ 是一个开源的消息代理和队列服务器,用 Erlang 语言编写。广泛应用于各种分布…...
