50 IIC通信速度下限

STM32——通过GPIO来模拟I2C I2C总线是一种同步、双向、半双工的串行总线,通信双方只需要两条线就可以实现通信,非常方便。本文主要讲解如何通过IO口模拟的方式来实现I2C。 阅读详情

1.引言

这两天又来调IIC了,很不开心的是,以前的GPIO模拟IIC的代码,移植到新单片机的时候,发生了不幸的事情,无法正常通信了!!!!!。

然后经过了近一天的各种方法的问题排除,发现IIC主机发送数据后,SDA引脚就一直是低电平,从机把引脚拉死了,原最后发现原因是SCK时钟频率不对,导致从机罢工!然后继续调试,最后在调试过程中生出一个想法,为什么从机死掉了,对比一下可以的IIC时序图,波形一毛一样,然后直觉的突然看到不同的地方!!!SCK的时序的频率是不是一样,然后经过查看,发现可以的IIC的频率必须大于100KHz,低于100KHz,主从就无法通信了!!经过查看,我IO模拟IIC的频率只有不到30KHz,所以对不起频率级别不够,用不起IIC。

 我模拟IO时序频率!才30KHz都不到,所以IIC无法正常通信!!!

 

2.问题解决

知道了问题所在那就好办了,目标就是提高模拟iO的频率!因为我调用的是厂家提供的库函数操作GPIO,而追进去发现这操作函数内容有点多,比较占用时间,所以想着直接操作寄存器不就好了吗,这样可以节省时间。。。。。按照这想法,终于对GPIO的操作,切换使用寄存器操作后,明显IO模拟的SCK切换速度大大增加,可以达到100KHz以上的切换速率,甚至达到IIC的快速模式!!故到此,主机和从机可以正常通信了!!!

至此要记录的内容就是:IIC通信速率是有要求的,不能低于100KHz,如果低于这个频率,那么从机可能就不响应了!!

over!

【STM32+cubemx】0011 HAL库开发:I2C总线访问加速度传感器ADXL345 本节我们介绍I2C总线,并使用stm32的I2C总线来访问加速度传感器ADXL345。 1)I2C基础知识 I2C总线通信比较适合设备内部各芯片间的通信,它只需要两根信号线。 I2C可以挂载多个主机和从机,通信总是由主机发起。每个从机都有唯一的地址,主机通过地址决定访问哪个从机。 I2C总线的两根线,SCL为时钟线,SDA为数据线;所有的器件对这两根线的输出操作只能拉低,当释放总线时,由总线上的上拉电阻将电平拉高。所以硬件连接上,上拉电阻是必须的,否则不能通信。 I2C空闲时,所有器件释放总线 阅读详情

相关推荐

从Arduino到STM32:IIC通信、PID控制与FreeRTOS多任务嵌入式开发实战

IIC通信协议作为一种广泛应用的串行总线标准,其核心原理是通过SDA和SCL两根线实现主从设备间的数据同步传输,具备接口简单、节省引脚资源的技术优势,在各类传感器、显示模块及EEPROM存储等场景中极为常见。掌握IIC通信是嵌入式开发的基础能力,它直接关系到外设驱动的稳定性和系统设计的模块化水平。在实际工程中,开发者常需将基础通信能力与闭环控制算法(如PID)结合,并借助实时操作系统(如FreeRTOS)进行多任务管理,以构建稳定可靠的嵌入式应用。本文正是围绕这一技术脉络,通过一个从Arduino平台IIC

weixin_33816946的博客 428

GPIO模I2C

i2c管脚 SCL:信号时钟 SDA:数据线 i2c速率 普通设备I2C最高速率一般为400K,通常使用速率为100K。也存在其他高速I2C,例如有一种super iic支持10M或则及M速率。 i2c地址 i2c总线一般一个主设备(Master)以及多个从设备(slave),设备的访问通过地址实现。一般地址为7bit,不同的芯片可配置位不同。一些芯片通过硬件电平来配置地址。一些芯片通过固定的ro...

qq_30435497的博客 1964

IIC总线从原理到实战:时序、上拉电阻与软硬件选型全解析

IIC(Inter-Integrated Circuit)是一种广泛应用的同步串行通信总线,以其简单的两线制(SDA数据线和SCL时钟线)和多主多从架构著称。其核心原理基于开漏输出和上拉电阻构成的“线与”逻辑,通过严格的起始/停止条件、地址帧、数据帧及应答(ACK/NACK)机制确保可靠通信。该技术价值在于为传感器、EEPROM等外设提供了标准化的低速、短距离互联方案。在嵌入式开发中,IIC的应用场景极为普遍,但工程师常面临时序调试和稳定性挑战。例如,**iic停止位发送失败**常因信号干扰或从设备忙状态导

weixin_30514745的博客 371

IIC相关问题和知识

iic相关

m0_66746512的博客 1066

IIC上拉电阻原理与工程选型:从开漏输出到EMC实战

IIC总线的上拉电阻并非简单‘拉高电平’,其本质源于开漏输出(Open-Drain)的物理结构——N沟道MOSFET漏极悬空,无法主动驱动高电平,必须依赖外部电阻完成电平建立。该设计支撑线与逻辑、多主仲裁与电平兼容性,是IIC协议可靠运行的底层基础。其阻值选择需在信号上升沿时间(tr)、总线电容(Cb)、灌电流限制(Iol)及逻辑高电平阈值(Vih_min)之间精密权衡,直接影响100kHz至3.4MHz通信稳定性、-40℃低温启动成功率及EMC辐射表现。本文聚焦真实硬件约束,提供可计算、可实测、可量产的工

weixin_30907935的博客 287

从Arduino到STM32:IIC驱动数码管、PID控制与FreeRTOS多任务实战

IIC通信作为一种同步、半双工的串行总线协议,凭借其仅需两根线即可连接多从设备的特性,成为连接传感器、存储器和显示模块的基石。其工作原理基于主从架构,通过起始条件、地址传输、应答机制和停止条件完成数据传输,在嵌入式系统中实现高效的外设管理。掌握IIC通信对于深入理解底层硬件交互和构建复杂嵌入式应用具有重要价值,尤其在需要集成多种外设的场合,如智能仪表和实时控制系统。本文以四位数码管显示为具体应用场景,详细解析了如何从Arduino的快速原型开发,过渡到STM32的底层驱动实现,并进一步整合PID控制算法与F

weixin_33850890的博客 405

GPIO实现I2C协议模拟(1)

最近需要用GPIO模拟I2C协议,如果是在Linux下面比较简单,但在Windows下面,是否有没Linux那么简单了。 索性自己对I2C协议还有一些了解,翻了SPEC并结合示波器量出的实际信号分析,总算有些成就,在这里以做记录 I2C是什么,这里不做介绍,网上资料太多. 要用GPIO模拟I2C协议,就是控制GPIO的High与Low,复制出与I2C通信协议一样的波形出来. 由于标准的I2...

weixin_30815427的博客 242

穿越协议的时空隧道:IIC时序参数演变史与未来挑战

本文深入探讨了IIC协议从诞生到光互连时代的时序参数演变历程,重点分析了建立时间(t<sub>SU</sub>)和保持时间(t<sub>HD</sub>)在不同技术阶段的优化与挑战。从标准模式的100kHz到高速模式的3.4MHz,再到光IIC的皮秒级精度,文章揭示了SCL与SDA时序参数如何推动电子工业发展,并展望了未来光电混合接口的时序兼容难题。

weixin_29196315的博客 247

STM32 使用硬件IIC驱动BQ40Z80、BQ40Z50源码分享

本文介绍了德州仪器BQ40Z系列电池管理芯片的功能特点,并分享了基于STM32硬件IIC的驱动源码。BQ40Z系列采用Impedance Track™技术,可精确监测电池状态(SOC、SOH等),提供多重保护机制(过压/欠压/过流/短路/过温),支持SMBus通信接口。典型应用包括笔记本电脑、医疗设备等。源码部分展示了寄存器定义和初始化函数,通过I2C接口实现与BQ40Z80/BQ40Z50的通信,可读取电压、电流、温度等关键参数。该方案具有高集成度和可配置性,是锂离子电池管理的理想选择。

本博客分享软硬件一体化开发实战。硬件涵盖 PCB 设计、STM32 等 MCU 底层开发;软件包含 C++、Rust,Qt/QML、PyQt、Slint、TouchGFX、LVGL 各类 GUI 框架。方便软硬件开发者查阅学习。欢迎关注! 3001

IIC上拉电阻怎么选?4.7K还是10K?从开漏原理到实测对比

IIC总线通信中,上拉电阻的选型直接影响信号完整性与系统稳定性。开漏输出结构决定了SCL和SDA必须依靠外部电阻提供高电平,同时该阻值还决定了总线上升时间、灌电流与抗干扰能力。理解电阻上下限的计算逻辑,有助于避免随机通信失败、波形畸变等隐藏故障。本文从RC充电模型出发,结合STM32实测数据,对比4.7K与10K在100kHz和400kHz下的表现,并针对触控屏、长线布局、低功耗设备等场景给出选型建议。无论是硬件工程师还是嵌入式开发者,掌握这套计算与验证方法,都能让IIC通信更加可靠。

weixin_33847182的博客 324

从波形分析到代码优化:软件模拟I2C通信中的时钟拉伸问题深度解析

本文深入解析了软件模拟I2C通信中的时钟拉伸问题,特别针对bq40z50电量计IC的应用场景。通过波形分析和代码优化,提供了可靠的ACK检测机制、自适应时钟同步策略及数据校验方法,有效解决SCL线控制难题,提升通信稳定性与效率。

lll78的博客 791

STM32C5通过IIC读取IIS3DWB振动传感器完整指南

工业设备预测性维护需要捕捉高频振动特征,而MEMS加速度计的数字接口简化了传感器前端设计。IIS3DWB作为一款宽带宽数字振动传感器,其IIC通信模式在低速巡检、振动烈度RMS计算等场景中依然具有实用价值。结合STM32C5的Cortex-M33内核与DSP扩展能力,开发者可以在MCU内部直接完成FFT、包络谱等运算,降低系统成本。本文围绕IIS3DWB与STM32C5的IIC链路展开,涵盖硬件上拉电阻选型、I2C时序配置、HAL库寄存器封装、传感器初始化顺序、三轴震动数据读取与g值转换,并总结了总线卡死、

weixin_33377602的博客 290

python123题目——个税计算器

类型:简单分支。

m0_62488776的博客 5803

IIC总线上拉电阻计算与选型:从开漏输出到400kHz排错

I2C/IIC总线采用开漏输出,任何器件只能主动拉低,高电平必须由上拉电阻对总线电容充电建立。上升时间近似满足 tr=0.8473×R×Cb,因此阻值同时受灌电流、上升时间与漏电流约束:太小会抬升VOL,出现“i2c上拉电阻小了不通信”;太大则边沿变缓,在400kHz快速模式下引发NACK。把总线电容、IOL、VIH和tr上限代入,才能得到可靠区间,再结合模块重复上拉、布局、电平转换和功耗做选型。对多传感器、排线连接和量产一致性场景,IIC总线上拉电阻的计算与排查是保证波形方整、通信稳定的关键工程环节。

weixin_33847182的博客 450

从‘静态拍照’到‘动态录像’:用Malmquist指数讲好你的效率变化故事(附Stata/R代码)

本文深入探讨了如何利用Malmquist指数构建动态效率分析框架,从静态数据到动态叙事的转变。通过分解技术效率变化(EC)和技术进步(TC),结合Stata/R代码实现四种动态可视化方法,帮助研究者更直观地展示效率变化的动态特征。文章还提供了诊断性叙事结构和比较叙事技巧,助力决策者理解效率提升的来源与趋势。

weixin_32678995的博客 603

逆向工程师的Shopee爬虫避坑指南:af-ac-enc-dat参数生成原理与反反爬策略

本文深入剖析了Shopee电商平台的反爬虫加密机制,重点解析了核心请求头参数x-sap-ri、x-sap-sec及af-ac-enc-dat的生成原理与联动关系。文章从逆向工程视角,提供了定位加密代码、分析算法逻辑的实战方法,并分享了基于JS执行环境模拟与无头浏览器控制的可持续反反爬策略,为高效、稳定地采集数据提供专业指南。

weixin_28607671的博客 1494

GD32F103硬件IIC驱动OLED和LM75A温度传感器,一个完整项目带你打通任督二脉

本文详细介绍了基于GD32F103微控制器的硬件IIC驱动开发,实现OLED显示和LM75A温度传感器数据采集的完整项目。通过硬件连接、IIC配置、驱动开发和系统整合等步骤,帮助开发者掌握硬件IIC外设的应用技巧,解决实际开发中的时序问题和性能优化挑战。

weixin_30607029的博客 338

逆变器专题(6)-正负序分离(二阶广义积分器DSOGI)

相应仿真原件请移步资源下载DSOGI作为一种常用的正负序分离方法,其可以在电压三相不平衡的状态下实现较为精准的锁相环。

cyc19980105的博客 8806

STM32C5实战:IIC读取IIS2ICLX加速度计完整指南

I2C作为嵌入式系统中最基础的总线协议之一,以引脚少、连接简单著称,但其开漏输出、上拉电阻匹配、时序要求等细节,直接影响传感器数据读取的稳定性。在MEMS加速度计等数字传感器应用中,正确配置I2C时序和寄存器是获取可靠数据的关键。STM32系列MCU凭借完善的HAL库和CubeMX配置工具,大幅降低了I2C外设的开发门槛,但在实际工程中仍会遇到地址、电气、时序等隐性坑点。针对这些问题,以ST工业级双轴加速度计IIS2ICLX为例,从I2C物理层原理讲起,结合STM32C5平台的CubeMX配置与HAL代码,

weixin_31887307的博客 210

详解Xilinx FPGA高速串行收发器GTX/GTP(6)--Pattern Generator/Pattern Checker

详解Xilinx FPGA高速串行收发器GTX/GTP(6)--Pattern Generator/Pattern Checker

孤独的单刀 1625

Deep SHAP 深度学习模型的可解释性分析

Deep SHAP 算法是一种用于解释深度学习模型的技术, 该算法通过将每个特征的重要性与输出值相关联来进行解释。本博客对深度学习的模型可解释性进行了分析。

cnjs1994的博客 5119

STM32硬件IIC驱动AT24C08 EEPROM:从配置到调试的完整实践指南

IIC(Inter-Integrated Circuit)是一种广泛应用的同步串行通信总线协议,以其简单的两线制(SDA和SCL)和多主多从架构,成为连接微控制器与各类传感器、存储芯片的经典方案。其工作原理基于起始/停止条件、设备地址寻址和应答机制,确保了总线上的有序通信。在嵌入式系统中,掌握硬件IIC外设的使用,能显著提升通信的可靠性和效率,将CPU从繁重的时序模拟中解放出来,专注于核心计算任务。这一技术价值在需要可靠、非易失性存储配置参数、日志数据的场景中尤为突出,例如工业控制、消费电子设备。本文聚焦于

weixin_33913332的博客 777

YOLO26改进 - 注意力机制 | ParNet并行子网络:多分支协同优化特征表达,增强模型判别能

本文介绍了ParNet注意力机制及其在YOLO26中的应用。ParNet注意力通过并行子网络结构,将网络层组织成多个子网络并行处理输入特征,降低了传统注意力机制在处理长序列时的计算复杂度。该机制采用VGG风格的块和特征融合策略,具有低深度高性能、参数效率高、可扩展性强和并行化能力好等创新点。我们将ParNet注意力引入YOLO26,在检测头部分应用该机制。通过实验训练改进后的模型,有望提升YOLO26在目标检测任务中的性能。

魔改工程师的博客 443

STM32软件模拟IIC实战:精准时序驱动BH1750光照传感器

IIC(Inter-Integrated Circuit)是一种广泛应用的同步串行总线协议,其可靠性高度依赖微秒级电平翻转的精确控制。底层原理在于SCL与SDA在起始、数据位、ACK/NACK及停止条件下的严格建立/保持时间约束,如t_SU;STA≥4.7μs、t_HD;STA≥4.0μs等物理时序边界。这种硬性要求使硬件IIC外设在低主频MCU(如STM32F103)或时序敏感器件(如BH1750)场景下易失效。软件模拟IIC通过GPIO推挽输出+输入模式动态切换、SysTick微秒延时、手动电平控制,实

weixin_30701575的博客 445

程序员应用AI大模型创业实现财务自由的100种赚钱方案原理与实战指南

成功的 AI 创业者都遵循着 “技术 + 需求 + 变现” 的铁三角法则。记住:不是要做 “全能大模型”,而是成为某个垂直领域的 “AI 解决方案专家”。现在就开始行动:用周末 2 小时完成第一个 MVP,下周启动种子用户测试,三个月内找到可复制的盈利模式。当你实现第一个 10 万用户时,会发现财务自由的密码藏在持续迭代的每个 0.1 版本更新中。延伸思考:你的技术背景适合切入哪个细分领域?

AI天才研究院 1380

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

IIC基础常识

I²C是一种仅用两根线(SCL、SDA)实现主控与多外设通信的同步半双工串行协议。采用开漏结构,需上拉电阻,设备只能拉低总线,高电平由上拉提供。通信以起始信号开始,停止信号结束,每字节传输后需应答(ACK/NACK)。通过7位地址区分设备,支持多设备挂载,但地址不可冲突。常见速率有100kHz(标准)、400kHz(快速)、1MHz(快速增强)及3.4MHz(高速)。STM32可通过HAL库使用硬件I²C进行读写操作,简化开发。

NBlby的博客 120

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

上一篇: 49 QT打包应用程序
下一篇: 51 单片机AD采集电压值的坑
Chasing_Chasing
博客等级 码龄10年 233粉丝 87原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值