当前位置: 首页 > news >正文

常说的I2C协议是干啥的(电子硬件)

I2C(Inter-Integrated circuit)协议是电子传输信号中常用的一种协议。

它是一种两线式串行双向总线,用于连接微控制器和外部设备,也因为它所需的引脚数只需要两条(CLK和DATA),硬件实现简单,可扩展性强,所以被广泛应用于系统内多个集成电路IC间的通信。

图片

在硬件连接上,I2C协议的实现有分主设备和从设备,并且在主从上比SPI协议更好的一点是支持多个主设备或多个从设备(SPI仅支持单主多从)。

图片

在总线中,SCL和SDA都会接上拉电阻,通常情况下,3.3V系统上拉电阻取3.3KΩ,5V系统上拉电阻取4.7KΩ。所以当I2C设备空闲时,会输出高阻态,当所有设备都空闲,上拉电阻会把总线拉成高电平。

它的多主机多从机的实现原理主要有两点:

a, 每个连接到总线上的从设备都有一个独立的地址,主设备通过这个独立的地址访问到从设备。

b, 当有多个主设备同时使用同一条总线时,为了 防止数据产生冲突,就会利用仲裁的方式决定让哪个主设备先占用总线(同一时间段只能有一个主设备占用I2C总线)。

I2C工作中的整个流程:

1,Master(主设备)发送起始信号

2,Master发送7bit address地址加1bit Write信号

3,找到符合地址的Slaver(从设备)响应ACK

4,然后就可以正式发送数据了,Master发送8bit数据(数据帧大小为8位)

5,Slaver响应ACK

6,最后Master发送停止信号(若Master仅发送一个字节的数据)

图片

起始信号:SCL处于高电平,SDA从高电平向低电平转换。

停止信号:SCL处于高电平,SDA由低电平向高电平转换(与起始信号相反)。

帧地址:每个从属设备有唯一的7位或10位地址,用于主从设备之间的地址识别。一般地址的位长是7或10位,7位用的更广泛。

读/写位:1bit,一般会伴随着地址帧发送。如果主机是向从机发送数据(写)则为低电平,请求数据(读)则为高电平。

ACK/NACK:响应数据,确保数据有被正常发送且接受到。I2C的数据和地址传输都带有响应(先响应地址,后响应数据)。响应包括“应答(ACK)”和“非应答(NACK)”两种信号。ACK时DATA为低电平,NACK时DATA为高电平。

数据有效:数据的传输有分有效和无效,只有在SCL为高电平时,SDA的数据才有效,此时SDA高电平表示数据“1”,低电平表示数据“0”.当SCL为低电平时,数据无效,此时通常需要对SDA进行电平切换。

图片

I2C具有三种传输模式,对应的速率也会不同。

标志模式:100kbit/s

快速模式:400kbit/s

高速模式:3.4Mbit/s

相关文章:

常说的I2C协议是干啥的(电子硬件)

I2C(Inter-Integrated circuit)协议是电子传输信号中常用的一种协议。 它是一种两线式串行双向总线,用于连接微控制器和外部设备,也因为它所需的引脚数只需要两条(CLK和DATA),硬件实现简单&…...

C/C++进程超详细详解【中部分】(系统性学习day07)

目录 前言 一、守护进程 1.概念 2.守护进程创建的原理(如图清晰可见) 3.守护进程的实现(代码块) 二、dup和dup2 1,复制文件描述符 2.文件描述符重定向 三、系统日志 1,打开日志 2,向日…...

S型速度曲线轨迹规划(约束条件为速度和位移)

S型速度曲线规划的基础知识可以查看下面这篇博客: 带平滑功能的斜坡函数(多段曲线控温纯S型曲线SCL源代码+完整算法分析)_RXXW_Dor的博客-CSDN博客PLC运动控制基础系列之梯形速度曲线,可以参看下面这篇博客:PLC运动控制基础系列之梯形速度曲线_RXXW_Dor的博客-CSDN博客运…...

从零手搓一个【消息队列】实现数据的硬盘管理和内存管理(线程安全)

文章目录 一、硬盘管理1, 创建 DiskDataCenter 类2, init() 初始化3, 封装交换机4, 封装队列5, 关于绑定6, 关于消息 二、内存管理1, 数据结构的设计2, 创建 MemoryDataCenter 类3, 关于交换机4, 关于队列5, 关于绑定6, 关于消息7, 恢复数据 三、小结 创建 Spring Boot 项目, S…...

自动驾驶中的感知模型:实现安全与智能驾驶的关键

自动驾驶中的感知模型:实现安全与智能驾驶的关键 文章目录 引言感知模型的作用感知模型的技术安全与挑战结论 2023星火培训【专项营】Apollo开发者社区布道师倾力打造,包含PnC、新感知等的全新专项课程上线了。理论与实践相结合,全新的PnC培训…...

【CVPR 2023】DSVT: Dynamic Sparse Voxel Transformer with Rotated Sets

文章目录 开场白效果意图 重点VoxelNet: End-to-End Learning for Point Cloud Based 3D Object DetectionX-Axis DSVT LayerY-Axis DSVT Layer Dynamic Sparse Window AttentionDynamic set partitionRotated set attention for intra-window feature propagation.Hybrid wind…...

MySQL超入门(1)__迅速上手掌握MySQL

# 1.选择语句 # 注意事项:MySQL不区分大小写,SELECT * 代表选择全部 // 测试一 USE sql_store; -- 使用 sql_store库 SELECT * FROM customers -- 查询customers表 WHERE customer_id 1 OR customer_id 4 -- 条件判断为customer_id 1或customer_id …...

四、浏览器渲染过程,DOM,CSSDOM,渲染,布局,绘制详细介绍

知识点: 1、为什么不能先执行 js文件?? 我们不能先执行JS文件,必须等到CSSOM构建完成了才能执行JS文件,因为前面已经说过渲染树是需要DOM和CSSOM构建完成了以后才能构建,而且JS是可以操控CSS样式的&#…...

2021-06-10 51单片机设计一个蜂鸣器报警电路每秒

缘由求助一下谢谢啦51单片机_嵌入式-CSDN问答设计一个蜂鸣器报警电路,按下K1,蜂鸣器响一声,按下K2,蜂鸣器响三声,按下K3,蜂鸣器长鸣。要求响声和间隔的时间均为1秒,长鸣不限时,但是此时应设置一…...

D‘Agostino-Pearson正态检验|偏度skewness和峰度kurtosis

DAgostino-Pearson检验(也称为DAgostino和Pearson正态性检验)是一种用于检验数据是否符合正态分布的统计检验方法。它基于数据的样本统计量,主要包括偏度(skewness)和峰度(kurtosis)&#xff0c…...

基于树莓派CM4制作img系统镜像批量制作TF卡

文章目录 前言1. 环境与工具2. 制作镜像3. 烧录镜像4. 总结 前言 树莓派烧录完系统做定制化配置比较费时间。在面对大批量的树莓派要配置,那时间成本是非常巨大的。第一次配置完可以说是摸着石头过河,但是会弄了以后再配置,都是一些重复性操…...

【中秋国庆不断更】OpenHarmony组件内状态变量使用:@State装饰器

State装饰的变量,或称为状态变量,一旦变量拥有了状态属性,就和自定义组件的渲染绑定起来。当状态改变时,UI会发生对应的渲染改变。 在状态变量相关装饰器中,State是最基础的,使变量拥有状态属性的装饰器&am…...

【Java 进阶篇】MySQL多表关系详解

MySQL是一种常用的关系型数据库管理系统,它允许我们创建多个表格,并通过各种方式将这些表格联系在一起。在实际的数据库设计和应用中,多表关系是非常常见的,它能够更好地组织和管理数据,实现数据的复杂查询和分析。本文…...

【开发篇】十、Spring缓存:手机验证码的生成与校验

文章目录 1、缓存2、用HashMap模拟自定义缓存3、SpringBoot提供缓存的使用4、手机验证码案例完善 1、缓存 缓存是一种介于数据永久存储介质与数据应用之间的数据临时存储介质使用缓存可以有效的减少低速数据读取过程的次数(例如磁盘IO),提高…...

【Aurora 8B/10B IP(1)--初步了解】

Aurora 8B/10B IP(1)–初步了解 1 Aurora 8b/10b IP的基本状态: •通用数据通道吞吐量范围从480 Mb/s到84.48 Gb/s •支持多达16个连续粘合7GTX/GTH系列、UltraScale™ GTH或UltraScale+™ GTH收发器和4绑定GTP收发器 •Aurora 8B/10B协议规范v2.3顺从的 •资源成本低(请参…...

C++ vector容器的介绍与使用

一、vector简介 std::vector 是 C 标准模板库 (STL) 中的一个动态数组容器。允许存储元素(可以使用任何数据类型作为其元素类型)集合,并能够动态调整其大小。 特点: 动态大小:与常规数组不同,vector 可以…...

openstack的组成

OpenStack 是一个开源的云计算平台,由一系列组件构成,各组件之间相互协作,提供了完整的基础设施即服务(IaaS)解决方案。下面详细解释了 OpenStack 的主要组件及其相互关系: Nova(计算服务&…...

[React] React高阶组件(HOC)

文章目录 1.Hoc介绍2.几种包装强化组件的方式2.1 mixin模式2.2 extends继承模式2.3 HOC模式2.4 自定义hooks模式 3.高阶组件产生初衷4.高阶组件使用和编写结构4.1 装饰器模式和函数包裹模式4.2 嵌套HOC 5.两种不同的高阶组件5.1 正向的属性代理5.2 反向的继承 6.如何编写高阶组…...

【逐步剖C++】-第二章-C++类和对象(中)

前言:本章继【逐步剖C】-第二章-C类和对象(上)介绍有关类和对象更深层次的知识点,这里是文章导图: 本文较长,内容较多,大家可以根据需求跳转到自己感兴趣的部分,希望能对读者有一些帮…...

PL/SQL动态SQL

目录 1. 动态 sql 2. 带参数的动态 sql -- 不使用 USING 传参 1. 动态 sql -- 在 PL/SQL 程序开发中,可以使用 DML 语句,但是很多语句(如 DDL),不能直接在 PL/SQL中执行,这些语句可以使用动态 sql 来实现. 语法格式: EXECUTE IMMEDIATE --动态语句的字符串 [into 变量…...

Python绘图系统24:添加辅助坐标轴

文章目录 辅助坐标增减坐标轴时间轴**代码优化源代码 Python绘图系统: 前置源码: Python打造动态绘图系统📈一 三维绘图系统 📈二 多图绘制系统📈三 坐 标 轴 定 制📈四 定制绘图风格 📈五 数据…...

Java自学网站--十几个网站的分析与评测

原文网址:Java自学网站--十几个网站的分析与评测_IT利刃出鞘的博客-CSDN博客 简介 很多想学Java的人不知道怎样选教程,本文对Java自学网站进行评测。 本文不带主观倾向,只客观分析各个网站的区别。 第1类:大型培训机构(黑马等…...

java接口怎么写

Java接口是一种定义规范的抽象类型,可以包含常量和方法的声明。接口在Java编程中具有重要的作用,可以实现代码的重用和灵活性。本文将详细介绍Java接口的编写方式和使用方法。 一、什么是Java接口 在Java中,接口(Interface&…...

第8章 Spring(二)

8.11 Spring 中哪些情况下,不能解决循环依赖问题 难度:★★ 重点:★★ 白话解析 有一下几种情况,循环依赖是不能解决的: 1、原型模式下的循环依赖没办法解决; 假设Girl中依赖了Boy,Boy中依赖了Girl;在实例化Girl的时候要注入Boy,此时没有Boy,因为是原型模式,每次都…...

从0开始python学习-24.selenium 浏览器常见的操作

1. 浏览器的最大化/最小化:maximize_window () / minimize_window() 2. 设置浏览器的宽高:set_window_size() 3. 设置浏览器的位置:set_window_position(0,0) —》左上角为原点 4. 刷新:refresh() 5. 前进:forward() 6…...

Canal实现数据同步

1、Canal实现数据同步 canal可以用来监控数据库数据的变化,从而获得新增数据,或者修改的数据。 1.1 Canal工作原理 原理相对比较简单: 1、canal模拟mysql slave的交互协议,伪装自己为mysql slave,向mysql master发送…...

数据库学习笔记——DDL

数据库学习笔记——DDL 建立EMPLOYEE数据库: CREATE TABLE employee(employee_ID int not null,employee_name varchar(20) not null,street varchar(20) not null,city varchar(20) not null,PRIMARY KEY(employee_ID) );CREATE TABLE company(company_name varc…...

MATLAB算法实战应用案例精讲-【人工智能】边缘计算(附python代码实现)

目录 前言 几个高频面试题目 边缘计算和云计算的关系 云计算(cloud computing) 边缘计算...

精彩回顾 | 迪捷软件亮相2023世界智能网联汽车大会

2023年9月24日,2023世界智能网联汽车大会(以下简称大会)在北京市圆满落幕。迪捷软件北京参展之行圆满收官。 本次大会由工业和信息化部、公安部、交通运输部、中国科学技术协会、北京市人民政府联合主办,是我国首个经国务院批准的…...

【ShaderLab PBR 嗜血边缘角色_美式朋克风格_“Niohoggr“_角色渲染(第一篇)】

嗜血边缘角色Cyberpunk style Unity 渲染 《嗜血边缘》截取其中的片段如下:资源分析其中Guitar贴图4张模型:人物细节图:人物模型 Inspector面板这里做一个区域区分:Body贴图1_BC贴图1_BC属性:Body贴图2_NBody贴图3_CMBody贴图4_SRMBody贴图4_RGBReflection Probe第一版Sha…...

网页设计制作一个餐饮网站/百度退推广费是真的吗

二维数组由若干个一维数组组成。 在C中,组成二维数组的一维数组长度必须相等。在C#中却可以不相等。 C#二维数组有两种: 1,普通二维数组: int [,] arr2d new int[3,2]; int[,] scroes2d2 new int[3, 2] { { 1, 2 }, { 3, 4 }, {…...

网络服务商基本网络参数/seo基础课程

官方文档的写法&#xff1a; 这里要注意的是&#xff0c;user有两个子路由&#xff0c;分别是profile和posts,如上图设置之后&#xff0c;需要在user.vue里面设置<router-view></router-view>才能显示跳转的子路由页面。...

做苗木行业网站赚钱/百度免费推广有哪些方式

给定文本数据training.txt。 每一行格式为&#xff1a;{"label": "label_name", "content": "content_n"} 类别标签有四个。 通过大量其他的新闻文本训练一个word2vec模型&#xff0c;將赛题数据的word2vec向量作为cnn的输入。 前…...

sae wordpress插件安装/seo优化价格

装饰器模式就是在不改变原有类或函数的基础上&#xff0c;增强该类或函数的功能&#xff0c;增强后会生成新的类或函数。如果用过python的装饰器就更好理解了&#xff0c;道理是一样的。 一 代码解释 假设我们有个基类叫Shape&#xff0c;如下&#xff0c; class Shape { pu…...

无锡公司网站建设电话/杭州关键词排名系统

chatGPT已经爆火一段时间了&#xff0c;我想大多数的开发者都在默默的在开发和测试当中&#xff0c;可能也是因为这个原因所以现在很难找到关于开发中遇到的一些坑或者方法和技巧。为什么别人的机器人能联想之前的语料&#xff0c;而你的却像个每次都只如初见的高冷机器人&…...

手机网站公司/域名注册需要哪些条件

如何获取光标下的文本&#xff1f;因此,如果我将鼠标悬停在它上面并且单词“hi”,我可以阅读它吗&#xff1f;我想我需要用QTextCursor.WordUnderCursor做一些事情,但我不确定是什么.有帮助吗&#xff1f; 这就是我现在正在努力解决的问题&#xff1a; textCursor text.cursor…...