[自主学习-嵌入式]IIC通信介绍

2023-11-11

1 IIC(Inter-Integrated Circuit 内部集成电路)

1.1 概述

①两线式串行总线(SDA数据线、SCL时钟线),用于连接微控制器和外围设备
②传输速度100-400kHz=100~400kbps(48.8KB/s)
高速模式最高可达4MHz(488KB/s)

注意KB和kbps的区别:
KB代表千字节(Kilobyte)
kbps代表千比特每秒(kilobit per second)
通常:B——字节,b——比特

③半双工型
④传送过程中有三种类型的信号:开始、结束、应答信号

1.2 通信过程

1.2.1 主模式

①IIC的接口启动数据传输并且产生时钟信号
②串行数据传输总是以起始条件开始并以停止条件结束。
起始条件停止条件都是在主模式下由软件产生控制的。

1.2.2 从模式

①IIC接口能识别自身地址(7位或者10位)和在数据总线广播的地址(好比每个人都有不同的身份ID,叫到哪个哪个就发生应答)
②同时软件能够控制开启或者禁止广播呼叫地址的识别

2023年再读本文:我个人觉得上面的主、从模式看着比较模糊,可以忽略。可能只是概念上的一种认识:哪个CPU控制了SCL时钟线,这个CPU就是主模式,其他的就是从模式。

1.2.3 传输特点

①数据和地址按照8位每个字节来传输,高位在前。
②跟在起始条件后的1或者2个字节是地址(7位模式为1个字节,10位模式为2个字节)
③地址只能主模式发送。
④在一个字节传输的8个时钟后的第九个时钟期间,从模式接收后必须回一个ACK给发送器,这样才进行数据传输。
⑤在IIC空闲时候,SDA ,SCL 都是保持高电平

1.2.4 三种信号产生

①起始信号:在时钟SCL保持高电平,然后SDA数据线是从高电平变为低电平表示起始信号;
②停止信号:在时钟SCL保持高电平,然后SDA数据线是从低电平变为高电平表示停止信号;
③应答信号:主机发送完一个8为数据后,会等待从机的回答一个ACK信号就是SDA将会拉低。
在这里插入图片描述

1.2.5 数据传输

①每一个字节必须保证是8位长度。数据传送时,先传送最高位(MSB),每一个被传送的字节后面都必须跟随一位应答位(即一帧共有9位)。
②如果一段时间内没有收到从机的应答信号,则自动认为从机已正确接收到数据。
③在 IIC总线进行数据传送时,时钟信号为高电平期间,数据线上的数据必须保持稳定;只有在时钟线上的信号为低电平期间,数据线上的高电平或低电平状态才允许变化,否者造成数据发送失败。
在这里插入图片描述

1.3 IIC读写过程(以主的角度来说,AT24C02为例)

1.3.1 简介

AT24C系列EEPROM芯片的地址码(前7位)组成:
①固定部分为1010
②A2,A1,A0引脚接高低电平后得到确定的3位编码,形成7位编码
③最后一位R/W表示是要读还是要写 ,0为写入,1为读出
在这里插入图片描述

1.3.2 IIC读

①单片机先发送该器件的7位地址码和写方向位“0”(“伪写”),发送完后释放SDA线并在SCL线上产生第9个时钟信号。
②被选中的存储器器件在确认是自己的地址后,在SDA线上产生一个应答信号作为回应。
③再发一个字节的要读出器件的存储区的首地址
④收到应答后,单片机要重复一次起始信号并发出器件地址和读方向位(1)
⑤收到器件应答后就可以读出数据字节,每读出一个字节,单片机都要回复应答信号。
⑥当最后一个字节数据读完后,单片机应返回以“非应答”(高电平),并发出终止信号以结束读出操作。
在这里插入图片描述

1.3.3 IIC写

①首先发送该器件的7位地址码和写方向位”0”(共8位,即一个字节),发送完后释放SDA线并在SCL线上产生第9个时钟信号。
②被选中的存储器器件在确认是自己的地址后,在SDA线上产生一个应答信号作为响应
③单片机收到应答后就可以传送数据了。
④传送数据时,单片机首先发送一个字节的被写入存储器的首地址
⑤收到存储器器件的应答后,单片机就逐个发送数据字节,但每发送一个字节后都要等待应答。
注:AT24C系列片内地址在接收到每一个数据字节地址后自动加1,在芯片的“一次装载字节数”限度内,只需输入首地址。装载字节数超过芯片的“一次装载字节数”时,数据地址将“上卷”,前面的数据将被覆盖。

字节写入
在这里插入图片描述

页写入
在这里插入图片描述

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

[自主学习-嵌入式]IIC通信介绍 的相关文章

  • UWB的定位算法(简单详细易懂)

    系列文章目录 文章目录 系列文章目录 前言 一 控制部分 二 UWB 的测距原理是什么 三 TOF 数学计算 四 Trilateration 三边测量法的原理与计算方法 TDOA平面 1 三边测量法的缺陷是 2 Z 轴准确度比 X 轴 Y
  • 多项目同时进行,如何做好项目管理?

    大部分企业在运营过程中一般会存在多个项目并行推进的情况 一段时间只运营一个项目的情况已经很少 无论是对项目管理者还是项目执行者而言 多项目同时进行比单项目运行更具挑战 多项目管理一般会存在各项目之间抢资源 资源冲突 资源分配不合理 可能存在

随机推荐

  • 使用node-forge pki进行RSA加密

    先放npm官方文档 www npmjs com package node forge 在知道RSA加密的大致原理后 再往下看 使用例子 简单写个方法 引入依赖 import forge from node forge base64转换 一般
  • 第十届蓝桥杯决赛B组:排列数

    这题我们用动态规划做 首先我们来找规律 对于一个递增的数列 如123456 我们插入一个数 这个数大于数列中所有的数 这里插入7 如果不插在两端 1 6 的数两侧 则增加了两个拐点 如1273456 插在 1 6 的内测 有两种情况 如17
  • win2008+IIS7.5+VS2013+4.5netframework,HTTP 错误 404.0 - Not Found 错误代码 0x80070002 解决办法

    win2008系统IIS7 5部署网站后访问首页正常 但访问其他地址时出错 如 访问http localhost ARCIMS Website lanzfc veiwers htm出错 错误如下 应用程序 DEFAULT WEB SITE
  • [论文阅读笔记77]LoRA:Low-Rank Adaptation of Large Language Models

    1 基本信息 题目 论文作者与单位 来源 年份 LoRA Low Rank Adaptation of Large Language Models microsoft International Conference on Learning
  • 2019新年flag

    多的不说了 直接立flag吧 看看年底的时候完成情况 dubbo的细节回顾结合dubbo面试题进行学习 netty的项目总结和源码学习 es的源码学习 系统学习 结合脑图 要有输出 数量不在多 在于精 多运动 多读书 少看直播
  • UI Automation编程辅助工具Inspect的下载和使用

    UIAutomation微软提供的UI自动化库 主要用AutomationElement类来表示UI 自动化目录树中的一个UI自动化元素 NET Windows的窗体应用程序和WPF应用程序 Inspect是一款类似于SPY的界面捕捉工具
  • 拉普拉斯的原理

    拉普拉斯是一种二阶导数算子 是一个与方向无关的各向同性 旋转轴对称 边缘检测算子 若只关心边缘点的位置而不顾其周围的实际灰度差时 一般选择该算子进行检测 拉普拉斯算子为二阶差分 其方向信息丢失 常产生双像素 对噪声有双倍加强作用 因此它很少
  • ng-model指令

    ng model指令作用是绑定HTML表单元素到AngularJS应用程序数据中 即 scope变量中 语法
  • Ispci命令详解

    说明 lspci 是一个用来显示系统中所有PCI总线设备或连接到该总线上的所有设备的工具 参数 v 使得 lspci 以冗余模式显示所有设备的详细信息 vv 使得 lspci 以过冗余模式显示更详细的信息 事实上是 PCI 设备能给出的所有
  • 二进制数组的操作

    ES6之前是不能通过代码直接操作二进制数据的 为了方便开发者可以直接操作二进制数据 ES6提出了三个操作二进制数据的接口 ArrayBuffer TypedArray和DataView ArrayBuffer ArrayBuffer代表储存
  • mysql设置了utf8mb4还是报错_详解JDBC对Mysql utf8mb4字符集的处理

    写在前面 在开发微信小程序的时候 评论服务模块希望添加上emoji表情 但是emoji表情是4个字节长度的 所以需要进行设置 当前项目是JAVA编写 使用JDBC连接操作数据库 如下针对的JDBC操作的解决方案 一 JDBC的URL的正常操
  • springboot_使用servlet的两种方式

    虽然在springboot中我们使用Controller可以应付大部分的需求 但servlet等也是必不可少的 在springboot中使用servlet有两种方式 第一种 用注解方式创建一个servlet 并在注解中声明其url 在App
  • git stash 暂存命令

    一个分支切换另一个分支的时候 当时分支并没有完成任务 我们就可以把他暂存下来 暂存代码 git stash m 暂存信息 也可以git stash 查看所有的存储列表 git stash list 释放最新的存储 工作区是这次存储对应的代码
  • dns配置

    dns配置文件详解 dns配置文件默认在 etc named conf中 vim etc named conf options 影响zone设置 listen on port 53 127 0 0 1 监听端口和ip 若监听所有 则 any
  • 知识梳理:链接形式

    驱动开发 链接 PowerPC介绍
  • 计算机专业建议买苹果笔记本吗,笔记本买win还是买Mac?也许可以参考这些建议...

    原标题 笔记本买win还是买Mac 也许可以参考这些建议 笔记本买win还是买Mac 相信各位在买笔记本的时候 都曾经在 Windows 和 Mac 之间犹豫过 其实 这个问题并没有标准答案 毕竟适合自己的才是最好的 那么 最后您选择了哪个
  • 皮卡堂显示服务器超时,皮卡堂服务生职业

    皮卡堂服务生职业赶快点击皮卡堂 开始玩游戏吧 服务生1级 职业经验 lt 500 吆喝 1 学习了服务生后 可以在聊天输入框处设置3句快捷语言 2 右键单击自己 可以选择举三个固定的礼仪牌 分别显示 请您点菜 欢迎光临 谢谢惠顾 请您用餐
  • C++11中std::bind的使用

    std bind函数是用来绑定函数调用的某些参数的 std bind它可以预先把指定可调用实体的某些参数绑定到已有的变量 产生一个新的可调用实体 它绑定的参数的个数不受限制 绑定的具体哪些参数也不受限制 由用户指定 std bind 1 将
  • oracle数据库还原,如何将dmp文件还原到oralce库

    oracle数据库还原 如何将dmp文件还原到oralce库2008 09 08 20 42 oracle数据库还原 如何将dmp文件还原到oralce库 xuehongliang by 12 八月 2007 16 27 最近用到从orac
  • [自主学习-嵌入式]IIC通信介绍

    文章目录 1 IIC Inter Integrated Circuit 内部集成电路 1 1 概述 1 2 通信过程 1 2 1 主模式 1 2 2 从模式 1 2 3 传输特点 1 2 4 三种信号产生 1 2 5 数据传输 1 3 II