03 I2C

news2024/11/17 15:37:35

特点

  • 两根线 SCL SDA
  • 同步、半双工
  • 带数据应答
  • 支持总线挂载多设备 一主多从 多主多从

两个功能:

  • 读取外设模块指定位置的寄存器
  • 写外设模块指定位置的寄存器

一个完整的通讯协议一定是在软件和硬件上同时定义的。

硬件

  • 所有的I2C设备的时钟线与数据线都要连在一起
  • 设备的SCL和SDA均要配置成开漏输出模式

因为I2C是半双工,时钟线SDA既要输出也要输入,不能单独的设置成推挽输出或者开漏输入。

  • 时钟和数据线都要加一个上拉电阻 4.7KΩ左右

内部结构框图:

输入没有影响,时钟和数据都可以直接输入进去;

输出时,只能输出低电平,不能输出高电平,所以外挂一个电阻,进行弱上拉。

拿杆子和弹簧距举例子:

一根杆子,不能往上拉,只能选择往下拉,或者松手,上面加一根弹簧,往下拉时,低电平输出,松手时弹簧向上拉。

好处:

  • 杜绝电源短路的现象;
  • 避免引脚的频繁切换(开漏+弱上拉 兼具输入与输出的功能)
  • 线于现象,从设备中只要有一个输出低电平,总线就是低电平

软件

基本时序单元

起始终止

起始条件:SCL高电平期间,SDA从高电平切换到低电平

终止条件:SCL高电平期间,SDA从低电平切换到高电平

数据 发送一个字节

SCL低电平期间,主机将数据依次放到SDA线上(高位先行),然后释放SCL,从机将在SCL高电平期间读取数据位,所以SCL高电平期间SDA不允许有数据变化,以此循环2次,即可发送一个字节。

而且同步的的好处,就算主机在发送的过程中,突然进中断了,SCL和SDA信号会不断地延长此时的状态,进行完终端之后,回来继续运行。

数据 接收一个字节

SCL低电平期间,从机将数据为依次放到SDA线上(高位先行),然后释放SCL,主机将从SCL高电平期间读取数据位,所以SCL高电平期间不允许SDA有数据变化,以此循环上述过程8次,即可接收一个字节(主机在接收之前,需要释放SDA,交由从机控制,也就是SDA前面一段实线到虚线的部分,从低电平到高电平)。

应答 发送应答

主机在接收完一个字节之后,在下一个时钟发送一个数据,数据0表示应答,数据1表示非应答。

应答 接收应答

主机在发送完一个字节之后,在下一个时钟接收一位数据,判断从机是否应答,数据0表示应答,数据1表示非应答(主机在接收之前,需要释放SDA)

时序

指定地址写

对于指定设备(Slave Address),在指定地址(Reg Address)下,写入数据(Data)

在指定设备1101 000 在指定地址0X19下,写下0XAA这个数据。

在应答位上,主机释放SDA为高电平;从机要应答,拉低SDA,所以根据线与的特性,为低。应答结束,从机放开SDA,为高电平。

当前地址读

对于指定设备Slave Address,在当前地址指针指示的地址下,读取从机数据Data。

这里有一个难点,指定获取数据的地址是谁?0X0F是怎么来的?也就是说当前地址指针是谁?

一般根据你前一个写入的地址+1,作为当前地址指针。

正是因为这个问题,所以这个时序,不经常用。

指定地址读

对于指定设备(Slave Address) ,在指定地址 (Reg Address) 下读取从机数据(Data)

该时序又称为复合时序,把指定地址写,还没来得及写的时序,加上当前地址读的时序。

先起始,再重复起始,再停止。

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

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

相关文章

普元技术专家2022历史文章合集

大家好,新年快乐。‍献上2022年历史文章合集,方便你翻阅过去一年里的精华文章。【第一辑】企业服务总线(ESB)基于ESB的企业服务集成平台建设之道企业服务总线建设之道的探索与研究零代码能力干掉80%开发工作:普元ESB 8…

论文综述——Event-Event Relation Extraction using Probabilistic Box Embedding

Event-Event Relation Extraction using Probabilistic Box Embedding1 任务介绍2 Box Embedding3 BERE模型4 实验5 总结1 任务介绍 事件关系抽取:文本中包含多个事件e1,e2,…,en,识别每个事件对(ei,ej)之间的关系r(ei,ej) 子事件(Subevent)关系抽取&a…

(一)硬件制作--从零开始自制linux掌上电脑(F1C200S) <嵌入式项目>

一、工作环境及项目简介 立创EDA:硬件原理图及PCB绘制。 全志F1C200S:F1C100S内置32MB DDR1内存,F1C200S内置64MB DDR1内存。 原理图:参考开源项目,详见墨云, 详见peng-zhihui。 核心板:四层…

Java8 - Streams flatMap()

文章目录What is flatMap()?Why flat a Stream?DemoWhat is flatMap()? # Stream<String[]> # Stream<Stream<String>> # String[][][[1, 2],[3, 4],[5, 6] ]它由一个 2 级 Stream 或一个二维数组组成 。 在 Java 8 中&#xff0c;我们可以使用 flatMap…

前端工程师leetcode算法面试必备-二分搜索算法(下)

一、287. 寻找重复数 给定一个包含 n 1 个整数的数组 nums&#xff0c;其数字都在 1 到 n 之间&#xff08;包括 1 和 n&#xff09;&#xff0c;可知至少存在一个重复的整数。假设只有一个重复的整数&#xff0c;找出这个重复的数。 1、HashMap 在没有其它附加条件的情况下&…

直属领导和老板都给了我绩效A,HR最后审核时降成了B,平时没有得罪她,她为什么这么做?...

绩效考核时&#xff0c;谁才是最终决定你绩效那个人&#xff1f;一位网友最近遇到了这样一件糟心事&#xff1a;季度绩效&#xff0c;直属领导和老板都给了A&#xff0c;人事最后审核时给降成了B&#xff0c;平时和人事没什么工作交集&#xff0c;按理说没有得罪她&#xff0c;…

Java工具——MySQL介绍与安装

Java工具——MySQL介绍与安装MySQL数据库介绍1. 简介2. MySQL发展历史MySQL数据库安装1. 下载安装包2. 安装3. 配置环境变量MySQL数据库介绍 1. 简介 MySQL是应用最广泛、普及度最高的开源关系型数据库&#xff0c;MySQL由瑞典MySQL AB公司开发&#xff0c;目前属于Oracle旗下…

Opencv 基本操作七 提取两幅图像的重叠区域

使用opencv提取连个图像的重叠区域&#xff0c;其本质就是提取两个图像的特征点&#xff0c;然后对两个图像的特征点进行匹配&#xff0c;根据匹配的特征点计算出透视变换矩阵H&#xff0c;然后根据H即可提取出两个图像的重叠区域。这里要注意的是&#xff0c;普通的opencv库没…

Kali Linux断网攻击

前言 ARP攻击就是通过伪造IP地址和MAC地址实现ARP欺骗&#xff0c;能够在网络中产生大量的ARP通信量使网络阻塞&#xff0c;攻击者只要持续不断的发出伪造的ARP响应包就能更改目标主机ARP缓存中的IP-MAC条目&#xff0c;造成网络中断或中间人攻击。 一句话解释&#xff1a; 断…

2022年总结 | 从初二学生到算法作者的蜕变之路

目录 一年的创作历程 我和 CSDN 在编程竞赛的合作 About CBC 技术社区的发展 夜跑奇遇 About 博客之星 新年致谢 元旦祝福 一年的创作历程 2022年&#xff0c;这一年对于我来说是十分重要的一年。在这一年里&#xff0c;我作为一名初二在校学生&#xff0c;在CSDN上发布…

2003-2021年高铁站开通时间

2003-2021年高铁站开通时间数据 1、时间&#xff1a;2003-2021年 2、指标&#xff1a;高铁站名称、开通时间、所在省份、所在城市、所属线路名称、以及相关备注 3、指标说明&#xff1a; 高速铁路&#xff0c;简称高铁&#xff0c;是指设计标准等级高、可供列车安全高速行驶…

需要提醒你关于 golang 中 map 使用的几点注意事项

日常的开发工作中&#xff0c;map 这个数据结构相信大家并不陌生&#xff0c;在 golang 里面&#xff0c;当然也有 map 这种类型 关于 map 的使用&#xff0c;还是有蛮多注意事项的&#xff0c;如果不清楚&#xff0c;这些事项&#xff0c;关键时候可能会踩坑&#xff0c;我们…

【攻防世界】Web warmup

知识点讲解 这一题主要是利用了include的特性 如果include的文件名中含有“/”&#xff0c;那么它会识别其为一个带目录的文件&#xff0c;只有最后一个“/”后的字符串对应的文件会被包含&#xff0c;而前面的字符串都只是在指定目录 意思是&#xff0c;如果我们的payload是这…

ArcGIS基础实验操作100例--实验36创建特征线约束TIN

本实验专栏参考自汤国安教授《地理信息系统基础实验操作100例》一书 实验平台&#xff1a;ArcGIS 10.6 实验数据&#xff1a;请访问实验1&#xff08;传送门&#xff09; 高级编辑篇--实验36 创建特征线约束TIN 目录 一、实验背景 二、实验数据 三、实验步骤 &#xff08;1…

搜狗PR权重在线查询,搜狗PR值查询方法

什么是搜狗PR权重&#xff1f; 搜狗权重(SogouRank)是由搜狗搜索引擎官方发布网页评级数据&#xff0c;搜狗权重是搜狗衡量网页重要性的指标&#xff0c;是机器根据搜狗评级算法自动计算出来的。搜狗权重值从1至10不等&#xff0c;网页评级越高&#xff0c;该网页在搜索中越…

异步通信技术AJAX | AJAX乱码问题、异步与同步、手动封装一个jQuery库

目录 一&#xff1a;快速搞定AJAX&#xff08;第三篇&#xff09; 1、AJAX乱码问题 2、AJAX的异步与同步 3、AJAX代码封装 4、手动封装一个jQuery库 一&#xff1a;快速搞定AJAX&#xff08;第三篇&#xff09; 1、AJAX乱码问题 &#xff08;1&#xff09;发送ajax get 或…

2022年我的22个感悟

这些感悟&#xff0c;有些是我自己感悟出来的&#xff1b;更有一些&#xff0c;是别人说的&#xff0c;引起了我的共鸣或深思。这些感悟&#xff0c;可能没有什么实用价值&#xff0c;但能让人对这个世界多一份思考。1. 现代社会的奴隶“小工是酒店或餐馆的奴隶&#xff0c;而他…

7-10 网红点打卡攻略

一个旅游景点&#xff0c;如果被带火了的话&#xff0c;就被称为“网红点”。大家来网红点游玩&#xff0c;俗称“打卡”。在各个网红点打卡的快&#xff08;省&#xff09;乐&#xff08;钱&#xff09;方法称为“攻略”。你的任务就是从一大堆攻略中&#xff0c;找出那个能在…

Python解题 - CSDN周赛第19期 - 醉酒的狱卒

本期题目依然难度不高&#xff0c;可惜状态不佳&#xff0c;未能取得满分&#xff0c;而且解题的思路也没能做到最简&#xff0c;直到赛后才想到还可以有另外的有趣的解法。我想这本身也是比赛的乐趣之一吧&#xff0c;不识庐山真面目&#xff0c;只缘身在此山中。 第一题&…

【阶段一】Python快速入门03篇:数据结构-元组、字典与集合

本篇的思维导图: 数据结构-元组 元组的概念 元组(tuple)虽然与列表类似,但也有不同之处,元组的元素不能修改;元组使用小括号,而列表使用中括号。 新建一个元组 元组的创建比较简单,直接将一组数据元素用小括号括起来即可。