IIC接口介绍

2023-10-26

本章节主要介绍IIC接口工作原理

what(简单介绍):

在这里插入图片描述

a.术语定义

name describe
主机 主动发起/停止传输数据的器件,并提供时钟信号
从机 被主机寻址的器件
发送器 发送数据到总线上的器件
接收器 接收总线上数据的器件
多主机 支持多个主机试图控制总线,但不会破坏数据
数据单元 一个字节(8位)
同步化 多设备同步时钟信号的过程
仲裁机制 当有多个主机试图抢占总线控制权时,通过仲裁机制只能有一个主机最终抢占到控制权

b.基本概念

  1. IIC全称Inter-Integrated Circuit,中文名集成电路总线,是一种串行总线,用于连接微控制器和外围设备
  2. 主从机之间通过两条信号线实现通信,一条信号线(SDA),一条时钟线(SCL)
  3. 支持多主机多从机通信,但任意时刻只能有一个主机控制总线(通过仲裁机制实现),SCL只能由主机发送
  4. 每个设备都具有唯一标识的地址,设备的地址通过软件进行识别
  5. 每次传输的数据不限数量,但必须为数据单元的倍数
  6. 发送器发送完一个数据单元,接收器会返回一个应答信号(ACK)
  7. IIC默认先发送数据的高位
  8. IIC协议规定,在启动总线后第1字节的高7位是寻址地址,其中高四位为器件类型识别符,接着三位为片选,最后一位为读写位,当为1时为读操作,为0时为写操作。所以具体挂载器件数量由I2C地址决定,7位寻址地址减去1个广播地址0x00不用,所以有2^7=128 - 1 = 127,那就是127个地址

why(优点):

1.接口直接在组件之上,不需接额外的设备来实现通信,简化硬件电路设计,性能高
2. 仅有两条数据线,通讯速率可选
3. 支持多主控,任何能够进行发送和接收的设备都可以成为主总线

how(过程):

主机发起开始信号(START),第一个字节决定与哪个从机通信以及读或写,接着进行数据传输(DATA),每传输一个数据单元会得到一个应答信号(ACK),传输完成后是结束信号(STOP)。
在这里插入图片描述

  1. 开始信号(START):SCL为高电平时,SDA由高电平跳变到低电平,标志开始传输数据。
  2. 结束信号(STOP):SCL为高电平时。SDA由低电平跳变到高电平,标志结束传输数据。
  3. 数据传输信号(DATA):正常传输数据且SCL为高电平时,发送器发到SDA的数据使SDA的电平保持平稳,接收器读取SDA上的电平数据,SDA在SCL为低电平时变化。
  4. 应答信号(ACK):发送器发送一个数据单元后,接受器在第九个时钟信号拉低SDA电平,表示接收到数据。

可能出现的问题:

a.以下情况,会出现无应答信号(NACK)的情况:

1.主机试图寻址发起传输数据,此时从机无法响应(正忙或从机不存在),主机会发起结束信号(STOP)或者重新发起开始信号(START)。
2.当从机不能接收到更多的数据时,也不会发出应答信号(ACK),主机会发起结束信号(STOP)或者重新发起开始信号(START)。
3.主机接收到最后一个字节后,也不会发出应答信号(ACK),此时由从机来主动释放SDA,发出结束信号(STOP)。

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

IIC接口介绍 的相关文章

  • shell中 >&2含义

    echo this is a test gt 2 gt 2 也就是把结果输出到和标准错误一样 之前如果有定义标准错误重定向到某file文件 那么标准输出也重定向到这个file文件 其中 的意思 可以看成是 The same as 与 一样
  • webpack入门

    webpack入门 webpack简介 模块打包器 项目构建工具 自动化构建工具 将多种类型资源之间的依赖关系构建成统一的静态资源 打包上线部署 js css等 但不包括html 因为它认为html不算模块 四个核心概念 入口entry 输
  • springboot整合shiro实现认证授权源码

    shiro admin 介绍 springboot整合shiro实现前后端分离架构 swagger文档协调前端开发 源码地址 https gitee com liujinxin ark shiro admin 软件架构 架构说明 sprin
  • 【深度学习】 Python 和 NumPy 系列教程(一):Python基本数据类型:1、数字(整数、浮点数)及相关运算;2、布尔值

    目录 一 前言 二 实验环境 三 Python基本数据类型 1 数字 a 整数 int b 浮点数 float c 运算 运算符 增强操作符 代码整合 d 运算中的类型转换 e 运算函数abs max min int float 2 布尔值
  • 如何判断对象中是否存在某个键名

    之前遇到过很多这样的问题 如何去判断对象中是否存在某个键 从而对其进行下一步的操作 下面就就给大家介绍一种我目前了解的一种方法 首先你新建了一个新的对象 var obj 顺便复习一下上次讲的forEach循环 function get so
  • TCP 三次握手和四次挥手的面试题

    重新整理了一版 TCP 三次握手和四次挥手的面试题 2023最新版 任 TCP 虐我千百遍 我仍待 TCP 如初恋 巨巨巨巨长的提纲 发车 发车 img TCP 基本认识 TCP 头格式有哪些 我们先来看看 TCP 头的格式 标注颜色的表示
  • python 编码 —— codecs 库

    1 对文件读写 import codecs fout codecs open test html w encoding UTF 8 fout write fout write fout close 很自然地可将其改造为 with 结构 wi

随机推荐

  • 淘宝TDDL数据库分库分表

    淘宝TDDL数据库分库分表 2014 06 04 23 18 3334人阅读 评论 0 收藏 举报 分类 数据库 1 分库分表 而且分库规则非常灵活 2 主键生成策略 目前TDDL提供的id生成主要还是依托数据库来进行的 oracle可以直
  • 八大排序算法-归并排序

    归并排序的定义 是将两个 或两个以上 有序表合并成一个新的有序表 即把待排序序列分为若干个子序列 每个子序列是有序的 然后再把有序子序列合并为整体有序序列 归并排序的基本思想 设r i n 由两个有序子表r i m 和r m 1 n 组成
  • ref绑定到不同元素获取到不同对象

    ref如果绑定在组件中 那么通过this ref refname获取到的是一个组建对象 ref如果绑定在普通的元素中 那么通过this ref refname获取到的是一个元素对象
  • 云呐

    科技大数据时代 企业的信息化规划刻不容缓 固定资产管理系统做为一款企业资产方案系统 可完成对企业资产的系统化管理 充分发挥资产更高的实用价值 固定资产管理系统可将企业內部全部资产融合在一起 根据对固定资产的增加 改动 退出 迁移 删除 使用
  • 2016年4月28日(6985小时时),第一次签合同,里程碑

    这周四 我觉得是个历史性的事件 是个里程碑 说明 锲而不舍 金石可镂 虽然不多 2万
  • win11/ win10 C盘扩容教程

    win11 win10 C 盘扩容教程 1 写在前面 10月5号微软官方正式发布了win11操作系统 作为一名科技星人 我也是第一时间升级体验了一番 如何升级win11我就不多说了 晚上一搜教程非常的多 这里推荐使用win11升级助手升级
  • 合宙ESP32系列

    目录 源文档见 ESP32系列编译文档 LuatOS 文档 本地编译详细步骤 准备环境 准备项目 获取源码 编译前的最后准备 编译 LuatOS SoC通用固件格式soc介绍 定制固件里的库 PS luat conf bsp h问题汇总 源
  • SGL STL源码剖析——迭代器

    SGL STL源码剖析 迭代器 迭代器 迭代器的型别 Traits的作用 迭代器相应的五种型别 type traits 迭代器 在我们使用STL容器的时候 迭代器是非常常见的 STL将容器和算法分开 彼此独立 然后通过迭代器相互关联 迭代器
  • U-Net: Convolutional Networks for Biomedical Image Seg-mentation

    Abstract 深度网络的成功训练需要数千个带注释的训练样本 这是一个很大的共识 在本文中 我们提出了一种网络和训练策略 它依赖于数据增强的强大使用 以更有效地使用可用的带注释的样本 该体系结构由捕获上下文的收缩路径和支持精确本地化的对称
  • 纯源码程序的执行

    QT Creator本身是个IDE安装的时候根据自己需要配置的又有对应的编译器 因此编写普通的程序也不再话下 选择Non Qt Project工程 并在右侧根据自己的需要选择C 应用还是C应用 新工程中工程管理文件和代码如下 执行结果如下
  • 表与表之间的关系

    一 表关系的概念 现实生活中 实体与实体之间肯定是有关系的 如 学生和老师 学生和课程 部门和员工 每个人和自己的身份证号码等 在设计表的时候 就应该体现出来表与表之间的这种关系 表与表之间的三种关系 一对多 最常用的关系 如部门和员工 多
  • 在ubuntu下如何搜索文件?

    1 whereis 文件名 特点 快速 但是是模糊查找 例如 找 whereis mysql 它会把mysql mysql ini mysql 所在的目录都找出来 我一般的查找都用这条命令 2 find name 文件名 特点 准确 但速度
  • 从端到端打通模型端侧部署流程(MNN)

    从端到端打通模型端侧部署流程 MNN MNN框架 MNN的官方介绍 MNN的架构 问题解决 MNN使用样例 MNN部署 一般流程 创建会话 运行会话 获取输出 流程汇总 总结 MNN框架 MNN的官方介绍 官方文档 有疑问一定要先查这里 M
  • 西门子 SCL 语言 模拟量转换小例程

    软硬件平台 软件是博图 TIA v15 硬件是西门子300系列 PLC 简介 使用scl语言编写一个FC子程序 对模拟量进行处理 对模拟数据进行转换 详细介绍 添加新块 添加一个FC块 语言选择scl 添加变量 输入型变量5个 一个运算后输
  • 信息学奥赛一本通 1177:奇数单增序列

    题目链接 http ybt ssoier cn 8088 problem show php pid 1177 include
  • 二进制思想及其应用

    两个经典面试题 二进制思想 1 你让工人为你工作7天 回报是一根金条 这个金条平分成相连的7段 每工作1天的回报就是1段 每天结束的时候 工人都有可能会向你要金条 如果只允许你两次把金条弄断 你如何给你的工人付费 2 有1000个苹果 将它
  • VTM配置并使用VTM对YUV视频帧进行编解码(基于windows系统)

    一 下载安装VTM H 266 VCC 参考软件VTM下载网址 https vcgit hhi fraunhofer de jvet VVCSoftware VTM 这里我选择的Tags是VTM 9 0 根据自己想用的VTM版本进行选择 然
  • 基于遗传算法的柔性生产调度研究(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码实现 1 概述 摘要 针对传统作业车间调度存在加工设备功能
  • Linux的时间函数

    2023年7月19日 周三下午 我今天基于GitHub搭建了自己的博客网站 欢迎大家来我的个人博客网站阅读我的博客 巨龙之路的GitHub个人博客 julongzhilu github io 目录 time 函数原型 使用方法 ctime
  • IIC接口介绍

    IIC接口介绍 本章节主要介绍IIC接口工作原理 what 简单介绍 a 术语定义 b 基本概念 why 优点 how 过程 可能出现的问题 a 以下情况 会出现无应答信号 NACK 的情况 本章节主要介绍IIC接口工作原理 what 简单