I2C——笔记

news2024/11/17 15:31:41

使用I2C,可以实现多设备的数据通信,这些设备通过两根线连接,SCL和SDA。
在这里插入图片描述
SCL控制时钟,SDA控制数据。这些设备有着共同的时钟总线,因此I2C是同步的。
他们虽然可以相互传递数据,但是只有一条数据线进行数据传输,因此他I2C是半双工的。

如何通信?

地址确定

I2C总线上连接了许多设备,如果单片机要发送给某一个设备或者获取某一个设备上的数据那么要如何确定单片机的目标设备呢?
为了解决这个问题,我们其实会给I2C设备进行地址设置:
下面是一个AD24C02的芯片,它基于I2C协议进行通信。
在这里插入图片描述
A0、A1、A2、SCL、SDA都是用于I2C总线通信的。
下面是设置设备的地址:
在这里插入图片描述
前面的1010是芯片厂商规定的后面四位则是由用户自己决定,
1 0 1 0 A2 A1 A0 则就是代表了设备的地址,而R/W则决定单片机向芯片写入数据还是读取数据。写操作R/W=0,读操作R/W=1。
例如现在我为AD24C02的A2、A1、A0都接低电平,现在我想向这个设备写数据那么我首先应该向I2C总线上发送一个 1 0 1 0 0 0 0 0 的数据,即十六进制表示为0xC0。

发送数据

设备的地址确定了,那么我们如何向I2C总线发送数据呢?
在没有进行通信的空闲状态SCL和SDA都处于高电平。
当SCL处于高电平状态时,SDA变换为低电平,则是表示数据传输的开始。与之相对的结束信号则是SDA在SCL高电平期间变化为高电平。
在这里插入图片描述
发送完起始信号后,我们就可以进行发送 设备地址+读写位 来寻找到目标设备同时决定读写操作。
当发送为开始信号后,当SCL高电平的时候,从机会读取SDA上的数据,在SDA处于高电平期间如果SDA发生变化会导致重新发送开始信号或者结束信号。
在这里插入图片描述
发送1010000:

在这里插入图片描述
发送完 设备地址+读取位 后,从机会发送一位应答信号,如果为0表示应答,为1表示非应答(设备可能不存在,或者设备已经操作完毕)。
之后的操控就要看对应芯片的数据手册了。

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

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

相关文章

使用pytorch实现高斯混合模型分类器

本文是一个利用Pytorch构建高斯混合模型分类器的尝试。我们将从头开始构建高斯混合模型(GMM)。这样可以对高斯混合模型有一个最基本的理解,本文不会涉及数学,因为我们在以前的文章中进行过很详细的介绍。 本文将使用这些库 import torchimport numpy as…

2020年江西省职业院校技能大赛高职组“信息安全管理与评估”赛项任务书样题

2020年江西省职业院校技能大赛高职组 “信息安全管理与评估”赛项任务书 样题 赛项时间 9:00-12:00,共计3小时。 赛项信息 赛项内容 竞赛阶段 任务阶段 竞赛任务 竞赛时间 分值 第一阶段 平台搭建与安全设备配置防护 任务1 网络平台搭建 9:00-12:00 1…

Python超入门(5)__迅速上手操作掌握Python

# 20.列表# 一维列表 names [Hash, Bob, Nick] print(names) # 全打印 print(names[:]) # 全打印 print(names[1:3]) # 打印1到2号索引 print(names[:2]) # 打印0到1号索引[Hash, Bob, Nick] [Hash, Bob, Nick] [Bob, Nick] [Hash, Bob]# 二维列表:一维列表中嵌套一维列表…

S4系统编辑屏幕报错 报错 RFC callback call rejected by whitelist

点击 Dialog 的布局 直接报错 经过检查,发现正式机和开发机在 SM59 TCP/IP链接 的 EU_SCRP_WN32不一样 把开发机的数据维护到生产机,就可以用了 RS_SCRP_GF_PROCESS_640RFC_GET_FUNCTION_INTERFACERS_SCRP_GF_PROCESS_640RS_SCRP_GF_RBUILDINFORS_SC…

为百度翻译花了3元,感觉还是值得的

这几天熟悉了一下百度翻译。因为我的测试量大,而且有BUG要反复处理,所以翻译量也很大。测试太多了百度就告诉我要充值,消息格式如下: {"error_code":"54004","error_msg":"Please recharge&q…

Python 自动化测试框架unittest与pytest的区别!

引言 这篇文章主要讲unittest与pytest的区别,pytest相对unittest而言,代码简洁,使用便捷灵活,并且插件很丰富。 Unittest vs Pytest 主要从用例编写规则、用例的前置和后置、参数化、断言、用例执行、失败重运行和报告这几个方面…

数字档案一体化解决方案

数字档案一体化解决方案是通过整合数字化技术、信息化系统和管理模式,实现档案数字化、信息化、网络化和智能化的档案管理方式。专久智能数字档案一体化解决方案包括以下几个方面: 1. 数字化技术:采用数字化技术对档案进行扫描、转换、存储和…

C++-json(2)-unsigned char-unsigned char*-memcpy-strcpy-sizeof-strlen

1.类型转换: //1.赋值一个不知道长度的字符串unsigned char s[] "kobe8llJfFwFSPiy"; //1.用一个字符串初始化变量 unsigned int s_length strlen((char*)s); //2.获取字符串长度//2.字符串里有双引号"" 需要…

聊聊精益需求的产生过程

这是鼎叔的第七十八篇原创文章。行业大牛和刚毕业的小白,都可以进来聊聊。 欢迎关注本公众号《敏捷测试转型》,星标收藏,大量原创思考文章陆续推出。本人新书《无测试组织-测试团队的敏捷转型》​​​​​​​​​​​​​​已出版&#xff…

Python中if not使用教程

大家早好、午好、晚好吖 ❤ ~欢迎光临本文章 如果有什么疑惑/资料需要的可以点击文章末尾名片领取源码 python中判断变量是否为None三种写法: 1、if x is None 2、if not x 3、if not x is None 理解成 if not (x is None) 结果是和1相反的 python中None、fals…

AST反混淆实战|某国外混淆框架一小段混淆js还原分析

关注它,不迷路。 本文章中所有内容仅供学习交流,不可用于任何商业用途和非法用途,否则后果自负,如有侵权,请联系作者立即删除! 1. 需求 我相信做币圈爬虫的兄弟,或多或少的见过类似下面的…

触想五代强固型工业一体机在近海船舶上的应用

1、行业发展背景 近海船舶的发展紧密关联着海上运输、渔业贸易、旅游开发、能源探测等多领域,带动区域经济、文化繁荣发展。 随着现代科学与信息技术在各行各业的作用增强,工业4.0带动的产业升级逐步渗透进船舶领域,在此背景下,船…

【网络安全 --- xss-labs靶场通关(1-10关)】详细的xss-labs靶场通关思路及技巧讲解,让你对xss漏洞的理解更深刻

靶场安装: 靶场安装请参考以下博客,既详细有提供工具: 【网络安全 --- xss-labs靶场】xss-labs靶场安装详细教程,让你巩固对xss漏洞的理解及绕过技巧和方法(提供资源)-CSDN博客【网络安全 --- xss-labs通…

基于SSM的社区物业管理系统设计与实现

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:Vue 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目:是 目录…

C++前缀和算法的应用:从仓库到码头运输箱子原理、源码、测试用例

本文涉及的基础知识点 C算法:前缀和、前缀乘积、前缀异或的原理、源码及测试用例 包括课程视频 双指针 单调双向队列 题目 你有一辆货运卡车,你需要用这一辆车把一些箱子从仓库运送到码头。这辆卡车每次运输有 箱子数目的限制 和 总重量的限制 。 给你…

【Git】idea提交项目到Gitee

文章目录 1. 创建Gitee仓库1. 新建仓库2. 添加描述3. 复制仓库地址 2. idea建立连接提交2.1 Create Git Repository2.2 选择要提交的根目录2.3 Commit2.4 Push2.5 提交成功 1. 创建Gitee仓库 1. 新建仓库 2. 添加描述 3. 复制仓库地址 点击右上角克隆/下载,复制HT…

bitbucket.org 用法

这个网站需要魔法,注册完成后添加厂库时间2023.10 图1 图2 第二张图 ,不要.gitignore文件 sourcetree 1,创建前端项目 npm create vitelatest 2.打开vscode创建本地Git 看到Git代提交的文件 sourcetree,新建 已存在的本地厂库 提交到Git 添…

CSRF Token为什么写在Cookie中?CSRF漏洞分析

1. 什么是CSRF? CSRF或XSRF,跨站请求伪造。简单地说,就是攻击者通过一些技术手段欺骗用户的浏览器去访问一个自己曾经认证过的网站并运行一些操作(如发邮件,发消息,甚至财产操作如转账和购买商品&#xff…

Java - 多进程编程(对比线程、API 操作)

目录 一、多进程编程 1.1、为什么要使用多进程编程 1.2、Java 中多进程编程的实现 1.2.1、前言 1.2.2、进程创建 1.2.3、进程等待 1.2.4、封装操作到一个工具类中 一、多进程编程 1.1、为什么要使用多进程编程 一个 .exe 文件执行以后,就会变成一个进程. 多…

高质量发展新引擎:智能工业操作系统助力产业升级

工业操作系统是推动制造业高质量发展的重要支撑,也是推动经济发展方式转变的重要手段。打造自主可控的工业实时操作系统是实现工业科技自立自强的必然要求,是推动高质量发展的必由之路。 基于软件定义控制的智能工业操作系统 Intewell操作系统是由科东…