I2C读写eeprom的问题

news2025/1/4 21:59:45

接线

在配置I2C的时候要把IO的口设置为开漏模式,为什么要设置开漏模式呢?

答:I2C协议支持多个主设备与多个从设备在一条总线上,如果不用开漏输出,而用推挽输出,会出现主设备之间短路的情况所以总线一般会使用开漏输出。

为什么要接上拉电阻?

接上拉电阻是因为I2C通信需要输出高电平的能力,一般开漏输出无法输出高电平,如果在漏极接上拉电阻,则可以进行电平转换输出,通过上拉电阻连接到电源,这样才能够实现“线与”功能。
当总线空闲时SDA和SCL都为高电平,当I2C设备空闲时,会输出高阻态,而当所有设备都空闲,都输出高阻态时,由上拉电阻把总线拉成高电平。
在这里插入图片描述
上图为SPI的接线。

I2C协议层

在这里插入图片描述

  1. 状态1为SPI空闲状态:SCL和SDA都为高阻态,被自己的上拉电阻设置为高阻态,成了高电平。
  2. 起始状态:在总线都处于高电平的时,检测到SPI的数据线(SDA)出现了一个下降沿,产生一个 开始信号,这时设备会跳出这个空闲状态(这个地方不太明白,跳出空闲??)等待数据的输入。
  3. 数据的读写时序图如下
    在这里插入图片描述
    上面的时序图为从某几位开始的并不是从开头开始的主意哈,到响应之前表示8位数据发送完了。
    主设备向从设备写数据的时候,要遵循一个原则:
    (一) 当时钟SCL为高电平时,数据总线向从机写入一位数据,在写的过程中这个时钟信号不能变,也就是说保持为高电平。
    如果把数据传送比作为过桥,那么时钟就是一座桥,在过桥的时候不能把桥拆了,这就是为什么不能把时钟信号变化的原因。
    (二)当数据发送完了后,需要重新发送数据了,可以把时钟信号(SCL)拉低,将数据进行保存重新发送、
    就是上个数据已经过桥了,数据换了相当于换人了,所以要重新进行搭桥,搭桥就是把时钟线拉高,让数据过桥。
    一直在重复这个过桥拆桥的问题,一直到数据传输了8位,也就是1byte,从设备要进行应答处理,保证数据传输的准确性。
    (三)从设备响应
    如果上面8个数据都接受到正确的数据,会把SDA数据线进行拉低,向主机发送1位的应答信号,如果从机给的回应正确,可以继续传输下一个字节,或者结束数据的传输。如果应答错误,应放弃数据或者重新读写。
    (四)停止状态
    在数据都传输都结束了,在时钟信号为高电平的时候检测到数据线SDA从低电平变到了高电平(检测到了一个上升沿产生停止信号),此时I2C结束,返回空闲状态。

刚才步骤(三),当传输完8位数据时,需要从机设备要应答的,需要给主设备发送数据,怎末应答呢??
应答的时候需要释放数据线,步骤实现:
主机发送完数据后,将数据线拉低(SDA)。
主机保持低电平一段时间,这个时间通常被称为"回复时间"或"延迟时间"。这个时间应该足够长,以便从机能够读取数据线上的低电平。
在回复时间之后,主机将数据线释放为高电平(SDA)
然后去读取这个引脚的信号是不是被从机拉低产生ACK信号了,如果拉低了说明正确。也就输说发送一次需要9位。。

先到这
参考的博主的感谢小勇,studyhttps://blog.csdn.net/weixin_44834094/article/details/121261910

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于闪电搜索算法优化的BP神经网络(预测应用) - 附代码

基于闪电搜索算法优化的BP神经网络(预测应用) - 附代码 文章目录 基于闪电搜索算法优化的BP神经网络(预测应用) - 附代码1.数据介绍2.闪电搜索优化BP神经网络2.1 BP神经网络参数设置2.2 闪电搜索算法应用 4.测试结果:5…

使用Linux本地快速搭建web网站,并内网穿透发布上线「内网穿透」

文章目录 前言1. 本地搭建web站点2. 测试局域网访问3. 公开本地web网站3.1 安装cpolar内网穿透3.2 创建http隧道,指向本地80端口3.3 配置后台服务 4. 配置固定二级子域名5. 测试使用固定二级子域名访问本地web站点 前言 在web项目中,部署的web站点需要被外部访问,则…

最小二乘法,残差,线性模型-线性回归

目录 什么是最小二乘法 残差是什么意思 线性模型 线性回归 方法一:解析解法 代码实战: 方法二:数值解法 代码实战: 解析法(最小二乘)还是数值法(梯度下降),如何…

笔记:自注意力机制

1、和其他网络的比较 自注意力机制适合处理长文本,并行度好,在GPU上,CNN和Self-attention性能差不多,在TPU(Tensor Processing Uni)效果更好。 2、输入特点 原生的Transformer中nn.embeding输入需要非负整…

住宅IP代理与数据中心IP代理的区别,最详解

跨境业务中常见到浏览器指纹防关联,但说到底,最重要的指纹是您的IP地址。在多个账号使用相同的IP地址简直触犯了大忌,这样做往往会导致账号惨遭暂停。 现在越来越多的跨境业务场景需要用到IP代理,那么我们常见的数据中心代理与住…

Instagram最新防封教程,看这一篇就够了

Instagram一直以来都是海外社媒巨头,也是跨境外贸引流推广的必争之地。在庞大的用户量中,真正了解平台规则的却并不多。它有一系列的社区准则和使用条款,稍有不慎违反规定就会造成限流,甚至导致账号被封禁,进而造成客户…

C++学习--函数实现

##MakeFileMAIN :Examples/main.cpp#主文件目录MAIN.o:objs/main.o##目标文件目录cpp_srcs :$(shell find src -name "*.cpp")cpp_objs :$(patsubst src/%.cpp,objs/%.o,$(cpp_srcs))#加头文件的编译选项 include_dirs :/home/shenlan/Group/00.lsa/project/include …

无涯教程-PHP - eregi()函数

eregi() - 语法 int eregi(string pattern, string string, [array regs]); eregi()函数在pattern指定的整个字符串中搜索string指定的字符串,。搜索不区分大小写。 Eregi()在检查字符串的有效性时特别有用。 可选的输入参数regs包含一个由正则表达式中的括号分组的所有匹配…

制作酒店预订小程序的秘诀揭秘

如今,小程序已经成为各行各业的必备工具。酒店业也不例外,拥有一个能够进行酒店预订的小程序,不仅可以提供更加便捷的预订服务,还能够提升酒店的品牌形象和用户体验。而今天,我将教你如何在零基础的情况下,…

基于哈里斯鹰算法优化的BP神经网络(预测应用) - 附代码

基于哈里斯鹰算法优化的BP神经网络(预测应用) - 附代码 文章目录 基于哈里斯鹰算法优化的BP神经网络(预测应用) - 附代码1.数据介绍2.哈里斯鹰优化BP神经网络2.1 BP神经网络参数设置2.2 哈里斯鹰算法应用 4.测试结果:5…

oracle数据库总结

文章适合熟悉mysql,想学习oracle的选手,基本的语法都相差不大,但还是有区别的 一、oracle高水位线问题 1、什么是高水位线   简单来说,oracle存储数据的时候会分配空间,但是删除数据的时候并不会回收空间。这样的话…

行业追踪,2023-08-23

自动复盘 2023-08-23 凡所有相,皆是虚妄。若见诸相非相,即见如来。 k 线图是最好的老师,每天持续发布板块的rps排名,追踪板块,板块来开仓,板块去清仓,丢弃自以为是的想法,板块去留让…

DFX概述 | Design For X | Design For Excellent

Design for X (DFX) Methods 什么是“Design for X”? Design for eXcellence是一种在设计和制造领域中的不断发展的原则哲学。它采用了全面和系统的设计方法,关注产品的各个方面——从概念生成到最终交付。 它提供了良好的实践和设计指南&#xff0c…

ESD门禁管理系统的主要功能和优势

ESD门禁管理系统是一种用于控制和管理人员进出特定区域的系统。它通常由门禁控制器、门禁读卡器、门禁管理软件等组成。 ESD门禁管理系统的主要功能包括: 1. 门禁控制:通过门禁控制器实现对门禁设备的控制,如开关门、锁定门等。 2. 门禁验…

视频批量剪辑矩阵分发系统源码开源分享----基于PHP语言

批量剪辑视频矩阵分发: 短视频seo主要基于抖音短视频平台,为企业实现多账号管理,视频分发,视频批量剪辑,抖音小程序搭建,企业私域转化等,本文主要介绍短视频矩阵系统抖音小程序开发详细及注意事…

中项系统集成项目管理知识点汇总

中项系统集成项目管理知识点汇总 一、成本-进度二、十大管理及47个过程三、质量四、人力资源五、风险六、干系人沟通七、案例分析万能答案八、选择题知识点九、十大管理输入输出工具技术总结十大管理工具技术总结 一、成本-进度 针对进度滞后的绩效情况 /缩短工期,可…

多态的概念和意义

函数重写回顾 父类中被重写的函数依然会继承给子类 子类中重写的函数将覆盖父类中的函数 通过作用域分辨符 (::) 可以访问到父类中的函数 面向对象中期望的行为 根据实际的对象类型判断如何调用重写函数 父类指针 (引用) 指向 父类对象则调用父类中定义的函数子类对象则调…

开始MySQL探索——数据库概述

计算机语言 计算机语言概述 计算机语言(Computer Language)可以简单的理解为一种计算机和人都能识别的语言。 机器语言 汇编语言 高级语言 机器语言 汇编语言 高级语言 SQL语言基础 SQL的概述 SQL全称:Structured Query Language&…

如何将远程支持融入企业运营

远程支持软件曾是一款“锦上添花”的工具,现在已成为 IT 堆栈的必要组成。随着企业的快速数字化以及对居家办公的需求不断增长,远程支持系统成为任何企业的重要工具。 远程支持软件可以提高问题解决速度、节省时间和资源,确保业务运营不间断…

LC balun设计

文章目录 1 、LC balun理论推导2、ADS仿真验证结果2.1原理图 3、复数阻抗的LC balun设计3.1示例13.2、示例1的ADS仿真验证3.3示例23.4示例2的ADS仿真结果 4、others 1 、LC balun理论推导 LC 巴伦的拓扑结构如下: 根据电流电压方程有: 化简过程如下&am…