文章目录

  • 前言
  • 物理层
  • 协议层
    • 基本读写过程
    • 起始信号和停止信号
    • 数据有效性
    • 地址及数据方向
    • 响应
  • 实例

前言

IIC通信协议是Philips公司开发的,由于其引脚少,硬件简单,无须收发设备,因此应用广泛。本文主要简单介绍一下IIC协议。

本文主要参考一下资料:

  • 刘火良, 杨森. STM32库开发实战指南——基于STM32F4.机械工业出版社
  • NXP Semiconductors.PCF8574手册

物理层


IIC的物理层有以下几个特点:

  1. 支持多个设备 。在同一个IIC总线中,可以挂载多个主机和从机。每个连接到总线的设备都有单独的地址,主机可以通过不同的地址来访问不同的从机。
  2. IIC总线只有两条线路:SCL和SDA。其中,SCL为时钟线,SDA为数据线。两者都通过上拉电阻连接到2-15V的正电平。上拉电阻一般取1.8k,4.7k以及10k。
  3. IIC总线分成三种模式:标准模式:100kbit/s,快速模式:400kbit/s,高速模式:3.4Mbit/s。但是目前大多数设备并不支持高速模式。
  4. 多个设备同时使用总线时,会通过仲裁的方式决定哪个设备占用总线。
  5. 当IIC设备空闲时,所有设备都为高阻态,则上拉电阻会将总线拉成高电平。

协议层

基本读写过程


上图展示了基本的数据包格式,具体表示如下:

  1. S:起始信号
  2. SLAVE ADDRESS:从机地址
  3. R/W:读写选择位,1为读,0为写
  4. A/A:应答信号
  5. P:停止信号

在通信开始,首先发送起始信号,所有的从机设备都会接收该信号。

紧接着,主机就发送从机地址,当从机的地址与主机发送的地址一致时,该设备被选中,其余的设备忽略接下来的信息。根据IIC协议,从机地址可以为7位或者10位。在实际使用中,7位更加常用。该7位地址和后面一位读写选择位整好组成一个字节。

读写选择位,该位控制数据流的方向。当该位为0时,表示从主机发送到从机。当该位为1时,表示数据由从机发送到主机。

若传输方向为 “写方向” 时,主机继续传输数据,每个数据包为8位 。主机每一次发送完成后,都要等待从机响应。当主机传输结束后,主机向从机发送一个停止信号§,表示不再传输数据。可以用如下图示:

其中,黑色字体为主机发送数据,绿色字体为从机发送数据。

若传输方向为 “读方向” 时,主机接收到应答信号之后,从机开始发送数据,每个数据包为8位 。从机每一次发送完成后,主机返回应答信号。当主机传输结束后,主机首先返回一个非应答信号,然后发送一个停止信号§,表示不再传输数据。可以用如下图示:


其中,黑色字体为主机发送数据,绿色字体为从机发送数据。

除了以上的两种方式,IIC更加常用的为 “复合格式” 。如下图所示:

在复合模式中,同一帧数据有两个起始位。一般在第一次传输中,主机通过从机地址找到从设备之后,发送一段数据。然后,在没有发送结束信号P的情况下,重新发起一次起始信号S,后面跟着相同的从机地址,而数据的传输方向可以发生改变。通常用于以下情况,第一次传输的数据位从设备内部的寄存器或者存储器地址,第二次传输的为对改地址的内容进行读取或者写入。最常用的情况如下图所示:


即主机先向从机发送寄存器地址,然后读取寄存器地址中的数据。

起始信号和停止信号


起始信号和停止信号是两种特殊的状态,如上图所示。起始信号的定义为:当SCL信号为高电平时,SDA信号由高电平切换到低电平;停止信号的定义为:当SCL信号为高电平时,SDA信号由低电平切换到高电平。

数据有效性


IIC使用SDA信号传输数据,使用SCL进行时钟同步。SDA在SCL每个时钟传输一位数据。SCL为高电平时,表示数据有效。SCL为低电平时,SDA数据无效,用于SDA的电平切换。当数据有效时,SDA高电平表示数据1,低电平表示数据0。

地址及数据方向

IIC总线上的每个设备都有自己的地址,主机发起通信时,通过SDA信号线发送从机地址来查找从机。IIC设备地址为7位或者10位,在实际中,7位使用的范围更广泛。在每个字节中,先发送高位,再发送低位

响应

IIC的响应包括“应答”和“非应答”两种信号。此信号由数据接收端发送,当接收端(无论是主机还是从机)希望对方继续发送数据时,则需要向对方发送“应答”信号;否则,若想结束数据传输,则向对方发送“非应答”信号,发送方接受到该信号会产生一个停止信号,结束信号传输。

实例

8574是一款支持100K的IIC芯片。其展示的IIC时序如下所示:

通信协议之IIC总线相关推荐

  1. Exynos4412 IIC总线驱动开发(一)—— IIC 基础概念及驱动架构分析

    关于Exynos4412 IIC 裸机开发请看 :Exynos4412 裸机开发 -- IIC总线 ,下面回顾下 IIC 基础概念 一.IIC 基础概念 IIC(Inter-Integrated Ci ...

  2. iic总线从机仲裁_IIC协议底层原理超详细解析!示波器,逻辑分析仪多图预警

    1. 协议基础 1.1.     协议简介 IIC-BUS(Inter-IntegratedCircuit Bus)最早是由PHilip半导体(现在被NXP收购)于1982年开发.主要是用来方便微控制 ...

  3. Linux底层IIC 总线的理解、调用函数以及常见面试问题

    对 IIC 总线的理解.调用函数以及常见面试问题 一.IIC 总线概述: IIC 即Inter-Integrated Circuit(集成电路总线) I2C总线是PHLIPS公司推出的一种串行总线, ...

  4. 对 IIC 总线的理解、调用函数以及常见面试问题

    一.IIC 总线概述: IIC 即Inter-Integrated Circuit(集成电路总线) I2C总线是PHLIPS公司推出的一种串行总线, I2C总线只有两根双向信号线.一根是数据线SDA, ...

  5. Exynos4412 IIC总线驱动开发(一)—— IIC 基础概念及驱动架构分析 (iic驱动框架,i2c驱动框架)...

    转载于 : http://blog.csdn.net/zqixiao_09/article/details/50917655 关于Exynos4412 IIC 裸机开发请看 :Exynos4412 裸 ...

  6. 通信协议之IIC协议(eeprom)_通俗易懂篇!

    1.IIC(Inter-Integrated Circuit),是IICBus简称,是一种串行通信总线. 2.IIC协议:遵循主机master和从机slave的主从关系机制,区别于SPI通信协议,II ...

  7. 关于IIC总线的若干问题

    IIC是飞利浦提出的一种通信总线结构,其硬件架构比较简单,仅包含SCL和SDA两条线.根据最新的IIC总线标准,IIC总线包含Standard-mode(100kbit/s).Fast-mode(40 ...

  8. stm32之IIC总线概述

    1.IIC通信协议定义 IIC通讯协议(Inter----Integrted Circuit)是由Phiips飞利浦公司开发的, 由于他引脚少,硬件实现简单,可拓展性强,不需要UASRT,CAN通讯协 ...

  9. STC89C52的IIC总线写EEPROM

    串行通信中的IIC总线工作原理 51本身不带IIC总线 ,使用程序模拟IIC通信协议 常用的串行总线协议 UART.1-wire.I2C和SPI总线 UART:是以异步方式进行通信(一条数据输入线,一 ...

  10. IIC总线协议,7位,8位,10位地址

    IIC总线 1.1. 概述 IIC开发于1982年,当时是为了给电视机内的CPU和外围芯片提供更简易的互连方式.电视机是最早的嵌入式系统之一,而最初的嵌入系统是使用内存映射(memory-mapped ...

最新文章

  1. 进行短视频app开发工作时,可以加入它来保护青少年...
  2. /etc/rc.d 与 /etc/profile或者./.bash_profile的区别
  3. Linux源码编译(一):从头文件说起
  4. Ansible16:Playbook高级用法
  5. 提高篇 第五部分 动态规划 第4章 状态压缩类动态规划
  6. 关于Jeecg互联网化dubbo改造方案(上)
  7. 值得收藏!动图演示神经架构搜索
  8. 又被分治题卡住好几个小时!用最笨的方法搞懂分治法边界,告别死循环!
  9. 大学生创业计划书PPT模板在哪免费下?经典商业计划书PPT模板大全
  10. 系统集成项目管理工程师(软考中级)重点知识、背诵版
  11. Postgresql Bloom索引
  12. 【最全的】BAT 批处理脚本教程
  13. 卸载系统应用动画气泡特效创建守护服务进程管理(ActivtyManager提供批量操作)桌面小控件AppWidget
  14. 短距离无线通信设备的天线设计
  15. JAVA实现在面板中添加图表_java-如何在不制作新图表的情况下将jzy3d图表添加到JFrame?...
  16. Hrbust2294修建传送门(尺取法)
  17. 小学奥数 7833 幂的末尾 python
  18. [转]MOSS 2007 整合運用 - Office System 2007 整合應用秘訣
  19. 《Linux就该这么学》培训笔记_ch00_认识Linux系统和红帽认证
  20. 可控硅失效现象_晶闸管常见损坏原因分析(全)

热门文章

  1. codesys 轴程序
  2. 用matlab求解分支定界法,matlab分支定界法程序
  3. Web渗透测试工程师:入门知识
  4. 安装linux系统的pe软件,Linux和win系统制作U盘pe启动方法
  5. iredMail安装
  6. windows安装ffmpeg,yasm,opencv
  7. 航空机票预定系统软件结构图
  8. PS 模块BAPI新建修改项目、WBS、网络、作业 (二)
  9. ExDirectUI 5.0 项目重构正式启动
  10. 在函数前面加上WINAPI、CALLBACK