8.1 IIC接口介绍

8.1.1 IIC 总线的概念  

  I2C总线是由Philips公司开发的一种简单、双向二线制同步串行总线。它只需要两根线即可在连接于总线上的器件之间传送信息。

  主器件用于启动总线传送数据,并产生时钟以开放传送的器件,此时任何被寻址的器件均被认为是从器件.在总线上主和从、发和收的关系不是恒定的,而取决于此时数据传送方向。如果主机要发送数据给从器件,则主机首先寻址从器件,然后主动发送数据至从器件,最后由主机终止数据传送;如果主机要接收从器件的数据,首先由主器件寻址从器件.然后主机接收从器件发送的数据,最后由主机终止接收过程。在这种情况下.主机负责产生定时时钟和终止数据传送。 

  I2C总线特点可以概括如下:
  (1)在硬件上,12C总线只需要一根数据线和一根时钟线两根线,总线接口已经集成在芯片内部,不需要特殊的接口电路,而且片上接口电路的滤波器可以滤去总线数据上的毛刺.因此I2C总线简化了硬件电路PCB布线,降低了系统成本,提高了系统可靠性。因为12C芯片除了这两根线和少量中断线,与系统再没有连接的线,用户常用IC可以很容易形成标准化和模块化,便于重复利用。
 
  (2)I2C总线是一个真正的多主机总线,如果两个或多个主机同时初始化数据传输,可以通过冲突检测和仲裁防止数据破坏,每个连接到总线上的器件都有唯一的地址,任何器件既可以作为主机也可以作为从机,但同一时刻只允许有一个主机。数据传输和地址设定由软件设定,非常灵活。总线上的器件增加和删除不影响其他器件正常工作。
 
  (3)I2C总线可以通过外部连线进行在线检测,便于系统故障诊断和调试,故障可以立即被寻址,软件也利于标准化和模块化,缩短开发时问。
  (4)连接到相同总线上的IC数量只受总线最大电容的限制,串行的8位双向数据传输位速率在标准模式下可达100Kbit/s,快速模式下可达400Kbit/s,高速模式下可达3.4Mbit/s。
 
  (5)总线具有极低的电流消耗.抗高噪声干扰,增加总线驱动器可以使总线电容扩大10倍,传输距离达到15m;兼容不同电压等级的器件,工作温度范围宽。
  

8.1.2 IIC 总线术语

术语

描述

发送器

发送数据到总线的器件

接收器

从总线接收数据的器件

主机

初始化发送产生时钟信号和终止发送的器件

从机

被主机寻址的器件

多主机

同时有多于一个主机尝试控制总线但不破坏报文

仲裁

是一个在有多个主机同时尝试控制总线但只允许其中一个控制总线并使报文不被破坏的过程

同步

两个或多个器件同步时钟信号的过程

8.1.3 IIC 总线信号类型

  • IIC 总线信号类型:IIC 总线在传输过程中共有3种类型信号:开始信号、结束信号和响应信号

    • 开始信号(S):SCL 为高电平时,SDA 由高电平向低电平跳变,开始传送数据
    • 结束信号(P):SCL 为低电平时,SDA 由低电平向高电平跳变,结束传送数据
    • 响应信号(ACK):接收器在接收到 8 位数据后,在第9个时钟周期,拉低 SDA 电平  

  

  

  SDA 上传输的数据必须在 SCL 为高电平期间保持稳定,SDA 上的数据只能在 SCL 为低电平期间变化。如下,IIC 总线的位传输图:

  

8.1.4 IIC总线的数据传输格式

  发送到 SDA 线上的每个字节必须是 8 位的,每次传输可以发送的字节数量不受限制。每个字节后必须跟一个响应位。

  首先传输的是数据的最高位(MSB)。如果从机要完成一些其他功能(例如一个内部中断服务程序)后才能继续接收或发送下一个字节,从机可以拉低 SCL 迫使主机进入等待状态。

  当从机准备好接收下一个数据并释放 SCL 后,数据传输继续。如果主机在传输数据期间也需要完成一些其他功能(例如一个内部中断服务程序)也可以拉低 SCL 以占住总线。

  启动一个传输时,主机先发送 S 信号,然后发出 8 位数据。这8位数据的前 7 位为从机的地址,第 8 位表示传输方向(0 表示写操作,1 表示读操作)。被选中的从机发出响应信号。紧接着传输一系列字节及其响应位。

  最后,主机发出 P 信号结束本次传输。

  主机——发送器用10位地址寻址从机——接收器

  

  主机——接收器用 10 位地址寻址从机——发送器

  

  组合格式 主机用 10 位地址寻址从机 然后发送数据到这个从机并向这个从机读数据

  

  组合格式 主机发送数据到两个都有 10 位地址的从机

  

  组合格式 主机发送数据到两个从机 一个用 7 位地址 一个用 10 位地址

  

8.2 S3C2440 I2C 总线控制器

  IIC 接口有4种工作模式:主机发送器、主机接收器、从机发送器和从机接收器

  

  从图种可以知道,S3C2440提供4个寄存器来完成 IIC 的操作。SDA 线上的数据从 IICDS 寄存器发出,或传入 IICDS;IICADD 寄存器中保存 S3C2440 当作从机时的地址;IICCON、IICSTAT 两个寄存器用来控制或标识各种状态,比如选择工作模式,发出 S 信号、P信号,决定是否发出 ACK 信号,检测是否收到 ACK 信号。

  寄存器的用法见芯片手册

8.3 程序

  JZ2440 没有使用 IIC 接口的器件

  

八、IIC 接口的更多相关文章

  1. IIC接口下的24C02 驱动分析

    本节来学习IIC接口下的24C02 驱动分析,本节学完后,再来学习Linux下如何使用IIC操作24C02 1.I2C通信介绍 它是由数据线SDA和时钟SCL构成的串行总线,可发送和接收数据,是一个多 ...

  2. iic接口介绍

    最近遇到一个BUG,跟IIC通信有关,所以借这个机会总结一下IIC总线协议 1.引脚接口介绍 1.A0,A1,A2为24LC64的片选信号,IIC总线最多可以挂载8个IIC接口器件,通过对A0,A1, ...

  3. ZYNQ PS端IIC接口使用-笔记

    ZYNQ7000系列FPGA的PS自带两个IIC接口,接口PIN IO可扩展为EMIO形式即将IO约束到PL端符合电平标准的IO(BANK12.BANK13.BANK34.BANK35): SDK中需 ...

  4. 七脚OLED屏幕使用IIC接口

    7pin 0.96寸OLED模块支持SPI和IIC接口 默认是SPI接口;如果想用IC接口;操作如下几步骤: 1.将模块背面的电阻R3换到R1位置,此时将模块切换为IIC接口:电阻R8可以用0欧姆电阻 ...

  5. GPIO模拟IIC接口信号质量分析

    信号质量有问题的波形001: 信号质量有问题的波形002: 从上图可以看出,GPIO口模拟的I2C接口,电平都存在半高的情况. 因为I2C的接口是通过GPIO模拟实现的,该时钟信号线SCL内部默认为下 ...

  6. IIC接口总线

    转载:http://www.eefocus.com/article/08-07/48416s.html图11-1给出一个由MCU作为主机,通过IIC总线带3个从机的单主机IIC总线系统.这是最常用.最 ...

  7. Java学习笔记二十八:Java中的接口

    Java中的接口 一:Java的接口: 接口(英文:Interface),在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明.一个类通过继承接口的方式,从而来继承 ...

  8. [Effective Java 读书笔记] 第三章类和接口 第十八--十九条

    十八条 接口优于抽象类 接口的特点: 1.一个类可以实现多个接口,不能继承多个类(抽象类) 2.接口不能有具体的方法实现,只定义标准类型 骨架类: 即实现一个abstract类来实现接口,提供给其他类 ...

  9. IIC总线解析

    IIC简介: IIC 即Inter-Integrated Circuit(集成电路总线),这种总线类型是由飞利浦半导体公司在八十年代初设计出来的,主要是用来连接整体电路(ICS) ,IIC是一种多向控 ...

随机推荐

  1. Bootstrap自动定位浮标

    前面的话 Affix 插件主要功能就是通过插件给某个元素(需要固定的元素)添加或删除position:fixed,实现元素在浏览器窗口的粘性固定效果.本文将详细介绍Bootstrap自动定位浮标 基本 ...

  2. git报错failed to push some refs to 'git@github.com:Markprint/github.git'

     这个不知名小错误用了我两天的空余时间mmp   就是这里报的错 输入 git push origin master -f 解释为: 远程分支上存在本地分支中不存在的提交,往往是多人协作开发过程中遇到 ...

  3. 【 Gym - 101138J 】Valentina and the Gift Tree(树链剖分)

    BUPT2017 wintertraining(15) 4 D Gym - 101138J 数据 题意 n个节点的一棵树,每个节点的权值为g,q个询问,树上的节点U-V,求U到V的路径的最大子段和. ...

  4. 【BZOJ3413】匹配(后缀自动机,线段树合并)

    [BZOJ3413]匹配(后缀自动机,线段树合并) 题面 BZOJ 题解 很好的一道题目. 做一个转化,匹配的次数显然就是在可以匹配的区间中,每个前缀的出现次数之和. 首先是空前缀的出现次数,意味着你 ...

  5. Best Time to Buy and Sell Stock - LeetCode

    目录 题目链接 注意点 解法 小结 题目链接 Best Time to Buy and Sell Stock - LeetCode 注意点 在卖出之前必须要先购入 解法 解法一:遍历一遍,随时记录当前 ...

  6. Azure KeyVault设置策略和自动化添加secrets键值对

    一. 关于Azure Key Vault Azure 密钥保管库可帮助保护云应用程序和服务使用的加密密钥和机密. 借助 Key Vault,可使用密钥来加密密钥和机密(例如身份验证密钥.存储帐户密钥. ...

  7. ffmpeg 在ubuntu上编译环境搭建和开发

    步骤如下: 1. 下载 官网永远是王道,呵呵:http://ffmpeg.org/download.html 或者 svn checkout svn://svn.mplayerhq.hu/ffmpeg ...

  8. 洛谷P4043 支线剧情

    题意:给定DAG,通过每条边需要时间. 从某号点回到1号点不需要时间. 从1号点出发,求最少要多久才能走完所有边. 解: 有源汇有上下界最小费用可行流. 直接连边,费用为时间,下界为1,无上界. 每个 ...

  9. A1074. Reversing Linked List

    Given a constant K and a singly linked list L, you are supposed to reverse the links of every K elem ...

  10. MATLAB:图像滤波,绝对值差(filter2,imabsdiff函数)

    下面是对图像进行滤波,以及求滤波后的图像与原图像的绝对值差的实现过程,涉及到的函数有filter2,imabsdiff函数: close all; %关闭当前所有图形窗口,清空工作空间变量,清除工作空 ...