I2C 基础原理详解

2023-05-16

今天来学习下I2C通信~

    

    I2C(Inter-Intergrated Circuit)指的是 IC(Intergrated Circuit)之间的(Inter) 通信方式。如上图所以有很多的周边设备都是用I2C通信方式进行通信的。

    I2C(Inter-Intergrated Circuit)通信使用Clock Line(SCL:Serial Clock)和Data Line(SDA:Serial Data)。数据通过时钟同步经过数据线进行传输。这里生成时钟信号并输出的设备便是Master, 时钟信号作为输入并接受数据的设备便是Slave。一般情况下Master便是MicroController,Slave便是周边的设备,比如RTC, EEPROM, TOUCH等等。

    上面我们提到I2C是同步通信的。同步通信需要独立的时钟线进行同步传输数据。我们看上面的图可以知道这里只有一根数据线。我们用一根数据线来同时进行数据发送和数据接受。那么我们为什么需要设定通信速度呢?对于同步通信,有了独立的时钟信号进行同步发送数据根本不需要匹配Bit Width的啊?为什么同步通信还要设置通信速度呢?

    在I2C中我们说的通信速度指的是Clock的最大速度(MAX SPEED),比方说Slave最多只能在100KHz下工作,但是Master在400KHz的频率下工作,这样的话他们就不能进行正常数据通信,所以我们需要设定设备时钟的最大速度。

    现在我们对I2C的基本通信情况是不是有了初步的了解了呢?

    现在我们的Master想发送数据给Slave,但是周边有很多的Slave,那么Master怎么把数据发送给自己向发送的设备呢?用Device Address(设备地址)!

    Master为了能将数据发送给想发送的设备就需要能区分设备(slave)的方法。Master通过设备的地址来区分周边的设备并进行数据接发。也就是说Master通过[设备地址&R/W+数据]形式的数据发送到I2C bus中,所有的设备读取bus上的这些数据,判断是不是发送给自己的,如果是发送给自己的就给Master一个响应。


    前面我们一直提到I2C是通过同步时钟在数据线(SDA)上进行数据接发的。这里我们来边看图边分析看看。一般情况下同步时钟上升沿或者是下降沿来接受或者发送数据的。但是I2C是在高电平(HIGH)的区间里数据有效,低电平区间内数据进行转换的。

    前面我们通过硬件方式了解了下数据是怎么发送接收的。那么数据在发送接收之前数据接发的开始标记和结束标记是如何通过硬件方式来规定的呢?数据接受发送的时候必须要知道开始标记和结束标记才能进行正常的数据接受对吧??

    I2C的开始标记和结束正如图所示。时钟信号在高电平的情况下数据信号从高电平转为低电平的话即为I2C通信的开始标记,时钟信号在高电平的情况下数据信号有低电平转为高电平的话即为I2C通信结束标记。

    现在我们基本了解了硬件形式下I2C的[START+DATA+STOP]是如果进行工作的。现在我们来了解下I2C通信的最小单位是怎样的。Master在时钟信号为高电平并且数据信号有高电平转为低电平的时候开始I2C通信。然后伴随着时钟的同步进行8bit的数据传送或者是接受。后面第9bit的数据(ACK)是用来确认数据接发是否正常。最后时钟信号高电平并且数据信号有低电平转为高电平,即I2C通信终止结束。就是这样I2C包含ACK总共9bit为通信的最小单位. 了解了这些,下面我们来看看上面提到过的[Device Address&R/W + data]形式的数据是如何传输的。

    1. Master在时钟信号->High并且数据信号由高电平转为低电平,I2C通信开始。

    2. Maste伴随着时钟同步传输8bit的数据。这里说的8bit数据指的是7bit的Device Address和1bit的R/W。

    3. 这里的Device Address在我们用的设备DataSheet里面有说明的。这里需要注意到是比方说设备地址是1101000(0x68, 7bit),数据传输的时候因为要和1bit的W/R一起,所以这里要将device address左移一位,然后和W/R进行OR操作。

    4. Master传输的设备地址对应的设备是否正确接发通过ACK进行响应确认。

    5. 如果Master只是以 START + data 8bit(device address&R/W) + ACK这种格式发送后就结束的话也可以。但是一般情况下在地址发送之后紧接着会发送数据。

    6. Master能对特定的设备进行数据发送或者是数据接受。在设备地址数据发送之后便可紧接着要发送的数据或者是要接受的数据。

    7. Master在发送或者接受数据的时候不需要规定要发送或者接受多少bit 的数据。因为这个依据不同设备而不同,所以依据设备自己想要的格式进行收发数据即可。

    8. Master在时钟信号为高电平并且数据信号有低电平转为高电平的话便终止结束通信。

    现在我们已经了解了I2C整个通信过程中的数据格式以及通信方式。实际写代码过程中依据Datasheet中说明的Register情况来写就可以了。

    

 I2C部分到此结束~

未经允许不得转载:浩瀚先森 » I2C 基础原理详解

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

I2C 基础原理详解 的相关文章

  • UNIX网络编程卷1(第三版)字节排序函数测试

    内存中存储多字节有两种方法 xff0c 即小端字节序和大端字节序 xff0c Ubuntu10 04 是小端字节序 xff0c 网际协议所用的字节序为大端字节序 内存地址增长方向 低序字节 gt 高序字节 小端字节序 高序字节 gt 低序字
  • android非常好的在线视频播放器源码(包含在线音频播放源码)

    一 在线音频播放器 lt xml version 61 34 1 0 34 encoding 61 34 utf 8 34 gt lt LinearLayout xmlns android 61 34 http schemas androi
  • 深入理解任务堆栈

    先来看这一个小函数 xff0c 猜猜他的运行结果 VC6环境 xff1f include lt stdio h gt void b int data 10 printf 34 helloworld r n 34 data 11 61 5 i
  • Protel99seMEX3

    Protel99se的鼠标增强软件 xff0c 可以实现用鼠标放大与缩小电路图 xff0c 十分方便 xff01 文件 xff1a n459 com file 25127180 478161061 以下内容无关 xff1a 分割线 说起Al
  • 基于C++的http服务端开发

    1 同时支持get post接口请求 2 支持文件流下载接口 完整源代码下载地址 xff1a https download csdn net download GUMU12345 81103130 sample cc Copyright c
  • Psychtoolbox SYNCHRONIZATION FAILURE问题

    参考 xff1a http psychtoolbox org docs SyncTrouble 写这篇文章的原因是自己遇见了这个问题 xff0c 并且换了两台电脑都不行 xff0c 有点烦了 xff0c 决心把它弄清楚是怎么回事 因为我的主
  • vscode写python切换虚拟环境,解释器没有不变的问题

    在用vscode写python代码 xff0c 可以使用anaconda进行虚拟环境的管理 而在vscode中使用Ctrl 43 Shift 43 P的方式调出终端 搜索即可搜索到相关设置 xff0c vscode中的python插件会自动
  • MVVM WPF 绑定颜色

    lt Button Margin 61 34 2 34 Width 61 34 10 34 gt lt Button Background gt lt SolidColorBrush Color 61 34 Binding Path 61
  • Android Handler

    Handler 和 Looper关系 Handler是对我们需要线程执行的一类任务的处理管理类 xff0c 而Looper是android线程所拥有的循环心跳行为的管理类 xff0c 例如主线程就是在一开始就执行了Looper loop x
  • linux 编程 ———网络编程(Socket 编程)客户端与服务端实现源码

    文档声明 xff1a 以下资料均属于本人在学习过程中产出的学习笔记 xff0c 如果错误或者遗漏之处 xff0c 请多多指正 并且该文档在后期会随着学习的深入不断补充完善 感谢各位的参考查看 笔记资料仅供学习交流使用 xff0c 转载请标明
  • 使用vs生成C++动态链接库dll文件----使用C++和C#混合编程

    https blog csdn net qq 30139555 article details 103621955
  • 视觉SLAM作业(四) 相机模型与非线性优化

    视觉SLAM作业 xff08 四 xff09 相机模型与非线性优化 一 图像去畸变 现实生活中的图像总存在畸变 原则上来说 xff0c 针孔透视相机应该将三维世界中的直线投影成直线 xff0c 但是当我们使用广角和鱼眼镜头时 xff0c 由
  • 在TUMVI数据集上测试VINS-Fusion算法

    VINS Fusion算法是一个非常优秀的视觉惯性里程计 但原版VINS Fusion并没有提供与TUM数据集相应的配置文件 因此需要自己进行写yaml文件 修改配置文件 tum mono yaml span class token dir
  • SLAM中的三角测量

    来源 视觉SLAM十四讲 xff0c 作者 高翔 三角测量是SLAM中 xff0c 利用相机运动估计特征点空间位置的过程 本节旨在解决以下问题 xff1a 三角测量的概念三角测量的过程及代码实现 xff1b 三角测量有哪些不确定性如何提高三
  • SLAM 岗位求职与简历书写

    本文学习自B站计算机视觉Life的如何写简历 当前求职背景怎么样 2019计算机直觉算法岗的求职情况为 xff1a 候选人数很多 xff0c 优秀者极少找工作不仅需要实力 xff0c 也需要运气 原因 贸易战影响 xff1a 华为 海康 大
  • SLAM中的后端优化

    本节介绍SLAM中的后端优化过程 一 问题阐述 同时对三维点位置和相机参数进行非线性优化 二 LM法的原理与优势 原理 xff1a 是一种 信赖域 的方法 xff0c 当收敛速度较快时 xff0c 增大信赖域使算法趋向于高斯牛顿法 xff1
  • 运动一致性判断

    直至以来 xff0c SLAM的研究共朝着三个方向努力 xff1a 精度 速度 鲁棒性 尤以鲁棒性居多 通常动态场景中 xff0c 根据IMU测量值与视觉测量值分别进行计算得到的结果会有所不同 因此需要进行一致性的检测 xff0c 以得到真
  • 使用evo工具评测SLAM

    evo是一款用于视觉里程计和slam问题的轨迹评估工具 核心功能是能够绘制相机的轨迹 xff0c 或评估估计轨迹与真值的误差 支持多种数据集的轨迹格式 xff08 TUM KITTI EuRoC MAV ROS的bag xff09 xff0
  • 用VS Code写C语言无法使用`__attribute__(packed)`

    今天 xff0c 在Windows上写C语言程序 xff0c 结果编写的结构体总是无法使用 attribute packed xff0c 导致读取的二进制文件字节对不上 检查CMakeLists txt和代码均没有发现明显错误 typede
  • CURL 基于命令行的浏览器

    CURL 嗯 xff0c 说来话长了 这东西现在已经是苹果机上内置的命令行工具之一了 xff0c 可见其魅力之一斑 1 二话不说 xff0c 先从这里开始吧 xff01 curl http www yahoo com 回车之后 xff0c

随机推荐

  • STM32F429入门(二)

    开始学习嵌入式的第二天 xff0c 发现昨天学习的东西有些遗漏 xff0c 今天要做个补充 x1f60e 那么就从寄存器那一块开始补学吧 xff0c 昨天没有那么仔细地去学习这个知识 xff08 一 xff09 学会看丝印 xff1a 如果
  • VSCode中如何让终端默认在当前文件的路径启动

    VSCode中如何让终端默认在当前文件的路径启动 1 只改变当前工作区的设置2 改变所有打开工程的设置 经常使用VSCode运行调试文件 xff0c 又不想每次都手动cd目录的话 xff0c 可以通过修改设置让终端默认在当前文件的路径启动
  • emWin - Movie篇

    STemWin版本 xff1a 544 xff08 ST购买了emWin的license xff0c 可以在ST芯片中使用emWin工具包 xff0c 就叫STemWin xff09 emWin开发工具包可以转换JPG BMP GIF等各种
  • 芯片端子的多路复用

    嵌入式软件的开发 xff0c 经常要和芯片打交道 xff0c 和个人电脑的通用平台的CPU使用X86或X64架构不同 xff0c 嵌入式电子产品使用的主控芯片是各种各样的 xff0c 从8051单片机 xff0c 到ARM Cortex M
  • 小说三要素和六要素

    小说是以刻画人物为中心 xff0c 通过完整的故事情节和具体的环境描写反映社会生活的一种文学体裁 或通过情节的展开和环境的渲染反映社会生活的一种文学体裁 小说有三个要素 xff1a 人物形象 故事情节 典型环境 xff08 自然环境和社会环
  • POV写作手法

    POV xff08 Point of View xff09 xff0c 一种写作手法 xff0c 即 视点人物写作手法 xff0c 在叙述同一件事可以自由选取最丰厚的角度 xff0c 大大加强了叙述的灵活性 xff0c 在讲述故事的同时作者
  • 工具说明书 - 搜索引擎推荐

    Yandex 俄罗斯人用的多 Yet Another Indexer 34 xff08 另一个索引 xff09 把定位改到美国 xff0c 再把搜索设置为无限制 www yandex com CC Search 查一些版权免费的图片和音视频
  • 嵌入式 - 在嵌入式软件开发中使用stdint.h头文件

    在嵌入式系统软件开发上 xff0c 对不同的平台 xff0c 其每个机器字长都可能不同 在这个硬件平台上使用int xff0c 可能是4个字节 xff0c 你做一个很大整数的运算也没问题 但换个硬件平台 xff0c int可能变成了2个字节
  • 编程参考 - C语言中将字符串转换为整数

    C语言 xff0c 主要有两种方法可以将字符串转为整数 xff1a atoi 和 strtol 1 xff0c atoi Syntax int atoi const char str 包含的头文件是 xff1a stdlib h 给定字符串
  • 工具及方法 - Excel插件XLTools

    立即开始使用XLTools XLTools是一个功能强大的Excel插件 xff0c 专为商业用户设计 它将帮助您在Excel中更快 更容易地准备数据 跟踪变化和实现任务自动化 无论您是刚刚开始免费试用还是购买了终身许可证 xff0c 本介
  • Linux - Ubuntu里安装Python的包

    在Ubuntu中 xff0c apt install python xff0c 默认是安装python2 要安装python3 要使用apt install python3 安装后运行python python2 xff0c 调用的都是py
  • CURL访问HTTPS证书登录

    curl cacert test crt https abc com test crt指服务端公钥 若服务端要求客户端认证 xff0c 需要将pfx证书转换成pem格式 openssl pkcs12 clcerts nokeys in ce
  • 司空见惯 - 体彩中奖交多少税

    体彩中奖交多少税 彩票只有大盘彩如双色球 大乐透等才在中奖1万元以上的情况下交20 的意外所得税 xff0c 小盘彩如3D 排列三等无论中多少都是不用交税的 对于中奖金额在1万元以下的 xff0c 是可以享受免征个人所得税福利政策的 对于中
  • 司空见惯 - 一树春风

    一树春风有两般 南枝向暖北枝寒 现前一段西来意 一片西飞一片东 xff08 一片东来一片西 xff09 了元 一树春风 了元是谁 xff1f 了元 xff0c 字觉老 xff0c 号佛印 xff0c 浮梁王氏子 北宋著名诗僧 xff0c 禅
  • 知识点滴 - 世界化工企业百强

    2022年7月25日 xff0c 美国 化学与工程新闻 xff08 C amp EN xff09 发布2022年全球化工企业50强名单 2022 09 21日附近 xff0c 国际石化市场信息服务商安迅思ICIS发布了最新世界化工企业100
  • 工具及方法 - 安装播放器pot player

    官网下载 xff1a potplayer daum net 可能国内访问有问题 xff0c 还有一个网站 xff1a Global Potplayer 或者为了纯净安全些 xff0c 找下国外可下载网站 xff1a PotPlayer 23
  • cpprestsdk应用实例

    RESTful REST全称是Representational State Transfer xff0c 通常译为表述性状态转移 xff0c 是一种网络应用程序的设计风格和开发方式 它首次出现在2000年Roy Fielding的博士论文中
  • VS2013中如何安装NuGet插件

    1 点击菜单栏的工具 gt 拓展和更新 2 点击左边的联机 xff0c 在右边的输入框中输入NuGet Package Manager xff0c 在中间栏中显示结果 xff0c 点击安装按钮即可完成安装 我这里已经安装过了 xff0c 所
  • vs2013中如何安装OpencvSharp并使用

    1 使用本方法前请确保你的vs已经安装了NuGet插件 xff0c 如果没有安装可以根据下面链接方法进行安装 VS2013中如何安装NuGet插件 2 右击你的项目 xff0c 选择 管理NuGet工具包 3 在弹出的窗口左边点击 联机 x
  • I2C 基础原理详解

    今天来学习下I2C通信 I2C Inter Intergrated Circuit 指的是 IC Intergrated Circuit 之间的 Inter 通信方式 如上图所以有很多的周边设备都是用I2C通信方式进行通信的 I2C Int