IIC通信协议

2023-05-16

IIC通信协议

  • 一. 什么是IIC通信协议?
  • 二. IIC协议时序分析
    • 1. 空闲状态
    • 2. 起始信号和停止信号
    • 3. 数据传输
      • (1)写操作——字节写
      • (2)写操作——页写
      • (3)读操作——当前地址读
      • (4)读操作——随机读
      • (5)读操作——顺序读
  • 三. EEPROM——24LC04B

一. 什么是IIC通信协议?

IIC(又称I2C,Inter-Integrated Circuit),即集成电路总线,是一种两线式串行总线,由PHILIPS公司开发,用于连接微控制器及其外围设备。多用于主机和从机在数据量不大传输距离短的场合下的主从通信。I2C总线由数据线SDA时钟线SCL构成通信线路,既可用于发送数据,也可接收数据,是一种半双工通信协议。总线上的主设备与从设备之间以字节(8位)为单位进行双向的数据传输。

IIC有3种传输模式:

  • 标准模式:100K bit/s
  • 快速模式:400K bit/s
  • 高速模式:3.4M bit/s

主机启动总线,并产生时钟用于传送数据,此时任何接收数据的器件均被认为是从机。I2C器件一般采用开漏结构与总线相连,所以I2C_SCL和I2C_SDA均需接上拉电阻,也正因此,当总线空闲时,这两条线路都处于高电平状态,当连到总线上的任一器件输出低电平,都将使总线拉低。
在这里插入图片描述

总线上的每一个设备都可以作为主设备或者从设备,且每一个设备都会对应一个唯一的地址,主从设备通过这个地址来识别确定与哪个设备进行通信。

二. IIC协议时序分析

1. 空闲状态

I2C总线的SDA和SCL两条信号线同时处于高电平时,规定为总线的空闲状态。此时各个器件的输出级场效应管均处在截止状态,即释放总线,由两条信号线各自的上拉电阻把电平拉高。

2. 起始信号和停止信号

(1)起始信号
在SCL保持高电平期间,SDA的电平被拉低,称为I2C总线总线的起始信号,标志着一次数据传输开始。起始信号由主机主动建立的,在建立该信号之前I2C总线必须处于空闲状态。
在这里插入图片描述

(2)停止信号
在SCL保持高电平期间,SDA被释放,返回高电平,称为I2C总线的停止信号,标志着一次数据传输的终止。停止信号由主机主动建立的,建立该信号之后,I2C总线将返回空闲状态。

3. 数据传输

在I2C总线上传送的每一位数据都有一个时钟脉冲相对应(或同步控制),即在SCL串行时钟的配合下,在 SDA上逐位地串行传送每一位数据。进行数据传送时,在 SCL 的高电平期间,SDA上的电平必须保持稳定,只有在SCL为低电平期间,才允许 SDA上的电平改变状态。即数据在SCL的上升沿到来之前就必须准备好,并在在下降沿到来之前必须保持稳定。

在这里插入图片描述

为什么SDA在SCL低电平期间才允许改变状态?
因为当SCL处于高电平状态时,SDA拉低表示的是起始位,拉高表示的是停止位,所以当数据位中0和1出现时,如果在SCL高电平状态下SDA状态变化的话,就无法区分数据和起始、停止位。

(1)写操作——字节写

进行字节写操作时,首先发送起始位,然后依次发送控制字节、地址字节、数据字节,每发送完一个字节后,需要一个应答信号ACK,最后发送停止位。

如果地址超过一个字节,在发送地址时,先发送地址高字节

  • 起始位:主机拉低总线。
  • 控制字节:4bit控制码+3bit片选+1bit读/写标志,以24LC04B为例,要进行写操作的,地址随机的话,需要发送的控制字节为1010_0000
  • 应答信号ACK:由从机发送给主机,从机每接收到一字节数据时,向主机发送应答信号ACK,确认收到数据,此时主机方可进行下一字节数据发送。
  • 非应答信号NACK:在读操作时,如果主机停止读取数据,由主机发送给从机非应答信号NACK。
  • 停止位:主机拉高总线。

在这里插入图片描述

在这里插入图片描述

(2)写操作——页写

页写操作写控制字节、地址字节、数据字节的方式与字节写操作基本相同,不同的是,页写操作可以将多个数据字节临时存储在片上页缓冲器中,当主机发送停止信号后,这些数据才被写入存储器,每接收到一个字,内部地址计数器+1。

注意:如果在停止信号发出前,片上页缓冲器中有超过一页的数据,地址计数器自动计满返回,先前临时存储的数据将被覆盖,24LC04B一次页写最多写入16个字节。

在这里插入图片描述

(3)读操作——当前地址读

24LC04B内置一个自动+1的地址计数器,该计数器保留最后一次访问的地址,如果先前对地址n进行了读或写操作,则下一条读或写操作将从n+1开始读写。注意在读操作时,从机不会回复应答信号ACK,但是主机会产生非应答信号NACK。

  • 起始位:主机拉低总线。
  • 控制字节:4bit控制码+3bit片选+1bit读/写标志,以24LC04B为例,要进行写操作的,地址随机的话,需要发送的控制字节为1010_0001
  • 非应答信号NACK:在读操作时,如果主机停止读取数据,由主机发送给从机非应答信号NACK。
  • 停止位:主机拉高总线。

在这里插入图片描述

(4)读操作——随机读

随机读操作允许主机以任意方式访问从机存储单元,在此之前需要主机先发送地址字节给从机完成地址字节的设置(此过程是写操作,读写标志为0),随机读操作将从设置的地址开始读取。

地址字节发送完成后接收应答信号ACK,随后主机产生起始信号,随后发送控制字节(此过程是读操作,读写标志为1),然后从机响应应答信号,并发送8位数据字节,最后主机发送非应答信号NACK,发送停止位。读取数据完成后,内部地址计数器自增1,指向下一个地址单元。
在这里插入图片描述

(5)读操作——顺序读

连续读操作启动过程与随机读操作相同,但是在连续读操作时,从机发送完第一个数据字节后,主机发送应答信号ACK进行确认,随后从机继续发送连续地址的数据字节,发送完最后一个数据字节后,主机发送发送非应答信号NACK,并发送停止位。

24LC04B内置一个地址指针,每次操作完成后指针+1,地址指针允许一次操作连续读取整个存储器内容,读到最后一个字节时,地址指针计满返回0。
在这里插入图片描述

三. EEPROM——24LC04B

EEPROM,全称电可擦除可编程只读存储器 (Electrically-Erasable Programmable Read-Only Memory),是一种可以通过电子方式多次复写的半导体存储设备。相比EPROM,EEPROM不需要用紫外线照射,也不需取下,就可以用特定的电压,来抹除芯片上的信息,以便写入新的数据。

以24LC04B为例:
24LC04B的存储容量为512Bytes/4Kbits,其内部有两个Block,每个Block中有256个字节(一个字节为8bit)。其读写操作都是以字节(8bit)为基本单位。

24LC04B EEPROM 存储芯片的控制字节包括:

  • 厂商设置的高4位1010,这里表设备代码
  • 用户需自主设置的低3位 x、x、B0 来选择块地址
  • 读写标志,1:读,0:写
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

IIC通信协议 的相关文章

  • 基于RS485通信的Modbus通信协议

    通信可以分为两个方面 xff1a 硬件层 xff1a RS485解决的是数据传输问题 xff0c 也就是说如何将一个 0 或 1 传输到另外一端 xff08 保证了数据可以转移到另一端 xff09 软件层 xff1a modbus是在硬件基
  • 通信协议 - ntp时间同步

    概述 NTP Network Time Protocol xff09 网络时间协议基于UDP xff0c 用于网络时间同步的协议 xff0c 使网络中的计算机时钟同步到UTC xff0c 再配合各个时区的偏移调整就能实现精准同步对时功能 提
  • LPC1768 IIC通信示——PCF8563

    PCF8563与AT24C02一样 xff0c 是典型的IIC通信器件 xff0c 这里就以它为例 xff0c 编写基于LPC1768硬件IIC的通信代码 xff1a 上图是PCF8563各个寄存器地址 xff0c PCF8563的IIC地
  • IIC总线的时钟同步和总线仲裁

    IIC简介 xff1a IIC 即Inter Integrated Circuit 集成电路总线 xff09 xff0c 这种总线类型是由飞利浦半导体公司在八十年代初设计出来的 xff0c 主要是用来连接整体电路 ICS xff0c IIC
  • OLED显示屏驱动:8080并口,IIC,SPI三种驱动方式

    本文介绍了对OLED的几种驱动方式 xff0c 8080并口 xff0c IIC xff0c SPI三种驱动方式 xff0c 采用的单片机是STM32F407 文章目录 一 OLED驱动原理介绍二 8080并口驱动方式三 IIC驱动方式四
  • PX4-5-SPI-IIC设备驱动

    在之前的分享中 xff0c 我们聊了PX4的通信框架和任务调度框架 xff0c 现在我们讲一下PX4的设备驱动 PX4支持很多种设备 xff0c 根据通信方式的不同大致分为 xff1a SPI IIC设备 串口设备 IO设备 CAN设备 这
  • IIC通信协议

    IIC通信协议 一 什么是IIC通信协议 xff1f 二 IIC协议时序分析1 空闲状态2 起始信号和停止信号3 数据传输 xff08 1 xff09 写操作 字节写 xff08 2 xff09 写操作 页写 xff08 3 xff09 读
  • STM32 模拟IIC驱动MS5607气压传感器调试记录

    标题 STM32 模拟IIC驱动MS5607调试记录 因项目需求 xff0c 需使用MS5607的作为检测气压 xff0c 再此写下自己遇见的问题以及调试记录 硬件原理图如下 xff1a IIC接口总线使用了气压传感器 xff0c SHT3
  • IIC上拉电阻的选择

    上周项目评审的时候 xff0c 评审部门问了我一个问题 xff1a 为什么单片机内部有上拉电阻 xff0c 你们还要用外部的上拉电阻 xff1f 我的答复如下 xff1a 上拉电阻的选取要考虑上限值和下限值这两点 xff1a 上限值的最大限
  • IIC详细解答+ 面试 + 代码

    目录 IIC背景提炼部分 xff08 面试 xff09 xff08 详解 43 代码 xff09 协议部分IIC部分初始化 IIC 的 IO 口IIC 开始信号IIC发送一个字节IIC 读一个字节响应ACK和非响应NACKIIC 停止信号
  • 【通信协议】IIC通信协议详解

    IIC的基本介绍 IIC总线的发展 xff1a 芯片间总线 xff08 Inter Interface Circuit xff0c IIC xff09 xff0c 是应用广泛的芯片间串行扩展总线 目前世界上采用的IIC总线一共有两个规范 x
  • STM32——硬件IIC从机通信

    前言 xff1a 根据网上的资料 xff0c 大部分网友表示STM32自带的硬件IIC存在bug xff0c 读写时很容易卡死 自己在调试的时候也出现卡死的情况 xff0c 最后一点一点调试 xff0c 也还是调通了 本文将记录自己调试ST
  • UART、IIC、SPI、CAN通信的区别与应用

    文章目录 1 通信的基本知识1 1 数据通信的种类1 1 1 串行通信1 1 2 并行通信1 1 3 总结 1 2 数据通信的传输方向1 2 1 单工1 2 2 半双工1 2 3 全双工1 2 4 总结 1 3 数据通信的方式1 3 1 同
  • 【总线】I2C 通信协议

    目录 I2C 总线协议概述 参数总结 I2C 的工作原理 寻址 读 写位 数据帧 I2C数据传输的步骤 具有多个从机的单个主机 具有多个从机的多个主机 I2C的优缺点 优点 缺点 文章参考 I2C 总线协议概述 I2C 总线广泛应用在 OL
  • I2C走线技巧、及上拉电阻、电源电压、总线电容三者间的函数关系

    目录 I2C总线PCB布线注意事项 博客其他文档可以学习 https www cnblogs com zhiqiang zhang I2C总线线路的走线方式 I2C器件与I2C总线的接线方式 I2C总线连接规范 I2C总线中上拉电阻 电源电
  • HTTPS 原理详解

    转自 https baijiahao baidu com s id 1570143475599137 wfr spider for pc 前言 HTTPS 全称 HyperText Transfer Protocol over Secure
  • 通信专题(一)——曼彻斯特编码

    前言 为了方便查看博客 特意申请了一个公众号 附上二维码 有兴趣的朋友可以关注 和我一起讨论学习 一起享受技术 一起成长 1 简介 在电信与数据存储中 曼彻斯特编码 Manchester coding 又称自同步码 相位编码 phase e
  • I2C与SPI通信总线协议

    仅以寄存器地址为8Bit的器件为例 例如MPU6500 LSM6DS3 I2C通信协议 I2C 的要点是了解I2C通信帧的组成部分 START起始位 STOP停止位 ACK NACK信号 从机器件地址 从机寄存器地址 I2C读的时序比较繁琐
  • 计算机网络中的通信子网主要有哪些功能?

    计算机网络中的通信子网主要具有以下功能 负责全网的数据通信 通信子网通过使用各种通信协议和传输控制功能 能够确保数据从一台主机安全 准确地传输到另一台主机 这包括数据的封装 解封装 传输控制 差错控制等过程 完成各种网络数据的处理 转换和交
  • 计算机网络中的通信子网:架构、协议与技术简介

    在计算机网络中 通信子网是负责实现主机之间以及主机与终端之间数据传输的核心部分 它由一系列硬件设备和通信协议组成 为上层应用提供可靠 高效和透明的数据传输服务 本文将详细介绍通信子网的架构 协议与技术 一 通信子网的架构 星型拓扑 星型拓扑

随机推荐

  • 团队中某些人不行,想踢出,但这些人是老板招的,咋办?

    有朋友提到 xff1a 团队里面不适合的人 xff08 能力不行 xff09 xff0c 需要踢出 xff0c 但这些人又是老板招的 xff0c 你会怎么解决这个问题 xff1f 如果这些人不是黄马褂 xff0c 问题还是比较容易解决的 什
  • keil函数点击不能跳转可能

    函数跳转不能选择 检查1 xff1a 是否代码在编译过程中 xff1f 检查2 xff1a 是否创建的跳转还没有完成 函数点击不能跳转 检查1 xff1a Browse information没有勾选 xff1f 检查2 xff1a 工程是
  • HashMap原理详解

    一 hashmap简介 hashmap是Java当中一种数据结构 xff0c 是一个用于存储Key Value键值对的集合 xff0c 每一个键值对也叫作Entry 二 JDK7的HashMap 1 JDK7时HashMap的数据结构 1
  • elementui的el-date-picker组件:format和value-format属性运用

    format 显示在输入框中的格式 xff08 默认为yyyy MM dd HH mm ss xff09 value format 可选 xff0c 绑定值的格式 xff08 不指定则绑定值默认为 Date 对象 eg lt el date
  • js如何获取当月第一天和最后一天

    一 获取的是 date格式 的当月第一天 xff0c 最后一天 xff0c 当天 var now 61 new Date 当前日期 var nowYear 61 now getFullYear 当前年 var nowMonth 61 now
  • vant-list上拉加载onload事件触发多次

    场景 xff1a 3个tab页签切换时 xff0c 调用不同接口 xff0c 在某一个tab只要翻页到 gt 61 2的情况 xff0c 当它再点击到另一个tab的时候 xff0c 另外一个tab就会连续调用两次查询接口 xff08 因为它
  • van-picker组件default-index属性设置不生效踩坑

    官方文档 xff1a default index 单列选择时 xff0c 默认选中项的索引 number string 0 defaultIndex 这个属性只是一个初始值 xff0c 如果需要动态改变 index索引 xff1a 建议使用
  • h5如何实现页面生成海报 & 保存图片及分享到微信/朋友圈功能

    知识点 xff1a 使用html2canvas实现移动端H5页面截图实现canvas图片转为文件阿里云文件上传功能 HTMLCanvasElement toDataURL DataURL与File Blob canvas对象之间的互相转换的
  • 记录 --- vue项目使用wangEditor富文本编辑器

    参考 xff1a wangEditor官网 项目 xff1a vue实现 xff1a 使用富文本编辑器插件 xff0c 支持部分文字加粗 下划线和字体调整 span class token operator lt span template
  • vue实现将html代码格式转换为纯文本

    toText span class token punctuation span html span class token punctuation span span class token punctuation span span c
  • vue手写遮罩层弹窗,实现点击遮罩层和关闭按钮关闭弹窗

    父组件 span class token operator lt span template span class token operator gt span span class token operator lt span secti
  • 一个实施 + 一个软件负责人 = 项目经理?

    有朋友提到 xff1a 我们的项目经理都是实施 实施不懂技术 不懂估算工时 进度至做需求调研但是调研效果非常不好 我们现在项目组成是这样一个实施 43 一个软件负责人作为项目经理 我们分实施部和开发部 xff0c 但都很委屈不管是实施项目经
  • OSPFv3的LSA类型抓包详解

    LSA类型 功能编码 6类不考 xff0c 不用管 8类 9类LSA是ospfv3新增的LSA Link State ID xff1a 4字节 在ospfv2和ospfv3的不同类型的LSA中代表的是什么 本地唯一的32位整数 xff1a
  • 2020年高频 redis面试真题17道(含答案和解析)

    1 什么是 redis Redis 是一个基于内存的高性能 key value 数据库 有空再补充 xff0c 有理解错误 或不足欢迎指正 2 Reids 的特点 Redis 本质上是一个 Key Value 类型的内存数据库 xff0c
  • 网络调试助手简单使用教程

    1 打开网络调试助手 xff0c 我此处使用的版本是5 0 3 xff0c 各个版本其实使用方法大同小异 2 用该软件建立一个TCP服务器 xff0c 在协议类型处选择TCP Server协议 xff0c 本机IP地址一般会默认自动填入本机
  • Docker CLI 命令详解(待完成)

    run 命令 Create and run a new container from an image 从镜像创建并运行新容器 用法 span class token function docker span run span class
  • 我在阿里做技术面试官的一些经验

    前言 我可能是在同龄人中做面试官经验比较丰富的 xff0c 在某乎实习的时候就参与了后端的技术面试 后来在阿里以及另一家公司也面试过不少候选人 xff0c 校招 社招 外包都有面试过 这里以一个面试官的角度来给大家谈谈在面试的时候怎么能给面
  • Mission Planner 一般故障描述及排除--常见地面站警示

    2 常见地面站警示 No 3D FIX 主要原因排除没有 gps 信号保证 Gps 上方无遮挡Gps 与飞控连接不正常检查接线 Compass not calibrated 主要原因排除罗盘自检失败重新上电检查罗盘未校准重新校准罗盘罗盘接线
  • Mission Planner 一般故障描述及排除--飞行中的地面站警示

    3 飞行中的地面站警示 Accels inconsistent 主要原因排除加速度计读数不一致立即手动返航降落检查 NO RC receiver 主要原因排除未接收到遥控器信号信号中断将自动触发失控保护 xff08 如果有 xff09 LO
  • IIC通信协议

    IIC通信协议 一 什么是IIC通信协议 xff1f 二 IIC协议时序分析1 空闲状态2 起始信号和停止信号3 数据传输 xff08 1 xff09 写操作 字节写 xff08 2 xff09 写操作 页写 xff08 3 xff09 读