【协议】IIC总线协议学习

一、IIC基本介绍

设计I2C的初衷是减少电视机等复杂电子系统内部的布线数量,同时也降低制造成本。通过使用只有两根线的通信总线,它有效地减少了器件间连接的复杂性。
IIC总线

IIC总线是两线制总线,仅有串行数据线SDA和串行时钟线SCL进行通信。减少了接口数量。
有可变的时钟速率:标准模式(100kbps)、快速模式(400kbps)和高速模式(3.4Mbps)。

二、工作原理

1、开始和停止

开始和停止标志
I2C总线上的数据必须在时钟高电平时保持稳定,数据线只有在SCL线为低电平时才能改变。而当SCL为高电平时,SDA发生变化则表示的开始或停止。SDA线从高电平向低电平切换表示起始条件,SDA线由低电平向高电平切换表示停止条件。

2、数据格式

SDA线上的每个字节必须是8bit,每个字节后必须跟一个相应位。
(1)先传输IIC设备地址,传输的8bit连续数据中,只有7bit是地址,最后一位表示写(0)或读(1),最先传输的是数据的高位。
(2)再传输内部寄存器地址,传输的8bit连续数据中,全部表示内部寄存器地址,结束后返回ack信号。
(3)最后传输内部寄存器需要写入或读出的数据,8bit一个字节数据,最后返回ack响应信号后,stop结束传输。
数据格式

在这里插入图片描述

3、数据等待

如果传输了8bit后,从机处于busy状态不能接收或传输另外一个完整的字节数据,它可以保持时钟线SCL拉低,使得主机进入等待状态,当从机准备好接收另一个字节数据时再释放时钟总线SCL,继续传输数据。
如下图即:SCL第9拍时,SDA为低电平,表示不能应答。此时下一拍SCL保持拉低,进入等待状态,等待状态时SDA数据线必须拉高。当准备好接收后,会释放时钟总线SCL,开始下一个字节数据的传输。
在这里插入图片描述

4、重复启动

在这里插入图片描述

5、运用:

主机写的步骤:
发{dev_addr,0} —> 发reg_addr —>发write_data---->主机发ack,结束。

主机读:
发{dev_addr,0} —> 发reg_addr ---->restart —> 发{dev_addr,1} —>接收read_data ---->主机发ack,结束通信。

感谢帮助~~

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

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

相关文章

代码笔记:Linux系统上解压文件

zip unzip filename.zip -d /path/to/directorytar.gz tar -xzvf file.tar.gz -x: 表示提取(extract)文件,从压缩包中解压内容。-z: 表示使用 gzip 压缩,.tar.gz 文件是经过 gzip 压缩的 tar 包,因此需要这个选项来处…

存储设备专栏 2.5 -- linux 下块设备信息查看命令 lsblk 详细介绍】

> 请阅读【嵌入式及芯片开发学必备专栏】< 文章目录 lsblk 命令命令结构常用参数示例示例 1&#xff1a;基本用法示例 2&#xff1a;显示文件系统信息示例 3&#xff1a;仅列出磁盘示例 4&#xff1a;指定输出格式示例 5&#xff1a;以 JSON 格式输出 Summary lsblk 命令…

算法之二分查找

概述 二分查找算法的应用&#xff0c;包括有序和无序数据&#xff0c;有序数组默认按从小到大排序 在有序数组中找到num /*** 4 二分查找 在有序数组中找到num* 思路&#xff1a;找中值&#xff0c;然后中值元素和目标值比较。如果中值元素比目标值大&#xff0c;则继续在左…

React开发一个WebSocket

export default class SocketService {static instance null;static get Instance() {if (!this.instance) {this.instance new SocketService();}return this.instance;}// 和服务端连接的socket对象ws null;// 存储回调函数callBackMapping {};// 标识是否连接成功connec…

【Python实例】Python读取并绘制tif数据

【Python实例】Python读取并绘制tiff数据 Python实例-以全球不透水面积数据为例数据准备&#xff1a;全球不透水面积数据基于gdal库绘制tif图基于Rasterio库绘制tif图 参考 GeoTIff 是一个标准的.tif 文件或是一个图像文件格式&#xff0c;它包含了一些额外的空间信息&#xff…

Prometheus 抓取 nginx 访问日志的指标

要通过 Prometheus 的 NGINX Exporter 来抓取 NGINX 中的日志信息&#xff0c;例如状态码为 4xx 或 5xx 的日志&#xff0c;需要结合以下几种工具和方法&#xff1a; 1. NGINX Exporter 基础功能 NGINX Exporter 是一个 Prometheus Exporter&#xff0c;用于从 NGINX 的 /sta…

.mkp勒索病毒攻击全攻略:防护、数据恢复与安全建议

导言 随着互联网的发展&#xff0c;勒索病毒的威胁也在不断升级&#xff0c;给个人和企业的数据安全带来了巨大的挑战。其中&#xff0c;[datastorecyberfear.com].mkp、 [tsai.shenmailfence.com].mkp、 [sspdlk00036cock.li].mkp勒索病毒作为一种新型的加密型恶意病毒&#…

Chromium 中HTML5 WebSocket实现分析c++(一)

一、WebSocket前端接口定义&#xff1a; WebSocket 对象提供了用于创建和管理 WebSocket 连接&#xff0c;以及可以通过该连接发送和接收数据的 API。 使用 WebSocket() 构造函数来构造一个 WebSocket。 构造函数 WebSocket(url[, protocols]) 返回一个 WebSocket 对象。 …

如何读书?

如何读书&#xff1f; 方法论、读书、意义、思考背景 对于知识获取一直有一个疑问&#xff0c;那就是如何有效获取知识&#xff1f;这个答案我自己并没有总结出来&#xff0c;其一是本文要谈的读书&#xff0c;其他呢&#xff1f;多了暂未想到&#xff0c;先写读书吧。 恰巧…

System:oneshot类型的service

有的时候,某个进程只在特殊的情况下运行一下即可,不需要一直以服务的形式待命,这种情况下,可以设置service的type为oneshot,然后设置RemainAfterExit=yes。 这样设置的service,即使在其进程启动完成之后退出了,systemd 也仍然会认为这个服务还在运行中,将此服务视为活…

新时代下吉林省城乡流动人才就业问题及路径探析

摘要&#xff1a;新时代背景下&#xff0c;中国经济快速发展&#xff0c;城乡融合发展成为缩小城乡差距&#xff0c;推动共同富裕的重要方式。吉林省作为东北老工业基地&#xff0c;传统产业竞争优势减弱&#xff0c;城乡流动人才就业规模增加&#xff0c;并呈现“农村-城市”的…

prompt learning

prompt learning 对于CLIP&#xff08;如上图所示&#xff09;而言&#xff0c;对其prompt构造的更改就是在zero shot应用到下游任务的时候对其输入的label text进行一定的更改&#xff0c;比如将“A photo of a{obj}”改为“[V1][V2]…[Vn][Class]”这样可学习的V1-Vn的token…

业务开发常见问题-并发工具类

hello&#xff0c;大家好&#xff0c;本讲我们一起聊一下常见的几个并发工具类的使用和坑&#xff01; 在日常工作中&#xff0c;我们经常会遇到多线程并发问题&#xff0c;比如ThreadLocal、锁、ConcurrentHashMap、CopyOnWriteArrayList等。那么如何正常的使用呢&#xff1f;…

【最新通知】2024年Cisco思科认证CCNA详解

CCNA现在涵盖安全性、自动化和可编程性。该计划拥有一项涵盖IT职业基础知识的认证&#xff0c;包括一门考试和一门培训课程&#xff0c;助您做好准备。 CCNA培训课程和考试最近面向最新技术和工作岗位进行了重新调整&#xff0c;为您提供了向任何方向发展事业所需的基础。CCNA认…

blender分离含有多个动作的模型,并导出含有材质的fbx模型

问题背景 笔者是模型小白&#xff0c;需要将网络上下载的fbx模型中的动作&#xff0c;分离成单独的动作模型&#xff0c;经过3天摸爬滚打&#xff0c;先后使用了blender&#xff0c;3d max&#xff0c;unity&#xff0c;最终用blender完成&#xff0c;期间参考了众多网络上大佬…

3.1.1ReactOS系统中搜索给定长度的空间地址区间函数的实现

系列文章目录 //搜索给定长度的空间地址区间 PMADDRESS_SPACE AddressSpace,//该进程用户空间 ULONG_PTR Length,//寻找的空间间隔大小 ULONG_PTR Granularity,//粒度位&#xff0c;表明空间起点的对齐要求&#xff0c;注意是起点地址 ULONG_PTR TopDown);函数的定义&#xf…

【Ansiable】ansible的模块和主机清单

目录 一、介绍一些运维自动化工具 二、Ansible 概述/简介 三、Ansible 工作机制 3.1 内部工作机制 3.2 外部工作机制 四、Ansible 执行流程 五、Ansblie 安装以及日常操作模块***** 5.1 ansible 环境安装部署 5.2 ansible 命令行模块 5.2.1 command 模块 5.2.2 shel…

html5的简单问题

1.html5结构语义化 用正确的标签做正确的事情。 便于团队的开发和维护&#xff0c;在没有加载css的情况下也能呈现较好的内容与结构代码&#xff0c;易于阅读。 有利于seo&#xff0c;提高可访问性。 2.html5新特性 增加&#xff1a;用于媒介回访的video和autio元素&#…

NVIDIA Jetson支持的神经网络加速的量化平台

NVIDIA Jetson支持的神经网络加速的量化工具、技术 NVIDIA Jetson 是专为边缘计算和嵌入式系统设计的高性能计算平台&#xff0c;它支持多种深度学习模型的部署和推理。对于神经网络加速的量化平台&#xff0c;Jetson 支持以下技术和工具&#xff1a; TensorRT&#xff1a;Ten…

Python Bagging算法详解与应用案例

这里写目录标题 Python Bagging算法详解与应用案例引言一、Bagging的基本原理1.1 Bagging的概念1.2 Bagging的步骤1.3 Bagging的优势与挑战 二、Python中Bagging的面向对象实现2.1 DecisionTree 类的实现2.2 Bagging 类的实现2.3 Trainer 类的实现 三、案例分析3.1 使用Bagging…