八、IIC 接口
8.1 IIC接口介绍
8.1.1 IIC 总线的概念
I2C总线是由Philips公司开发的一种简单、双向二线制同步串行总线。它只需要两根线即可在连接于总线上的器件之间传送信息。
主器件用于启动总线传送数据,并产生时钟以开放传送的器件,此时任何被寻址的器件均被认为是从器件.在总线上主和从、发和收的关系不是恒定的,而取决于此时数据传送方向。如果主机要发送数据给从器件,则主机首先寻址从器件,然后主动发送数据至从器件,最后由主机终止数据传送;如果主机要接收从器件的数据,首先由主器件寻址从器件.然后主机接收从器件发送的数据,最后由主机终止接收过程。在这种情况下.主机负责产生定时时钟和终止数据传送。
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 接口的更多相关文章
- IIC接口下的24C02 驱动分析
本节来学习IIC接口下的24C02 驱动分析,本节学完后,再来学习Linux下如何使用IIC操作24C02 1.I2C通信介绍 它是由数据线SDA和时钟SCL构成的串行总线,可发送和接收数据,是一个多 ...
- iic接口介绍
最近遇到一个BUG,跟IIC通信有关,所以借这个机会总结一下IIC总线协议 1.引脚接口介绍 1.A0,A1,A2为24LC64的片选信号,IIC总线最多可以挂载8个IIC接口器件,通过对A0,A1, ...
- ZYNQ PS端IIC接口使用-笔记
ZYNQ7000系列FPGA的PS自带两个IIC接口,接口PIN IO可扩展为EMIO形式即将IO约束到PL端符合电平标准的IO(BANK12.BANK13.BANK34.BANK35): SDK中需 ...
- 七脚OLED屏幕使用IIC接口
7pin 0.96寸OLED模块支持SPI和IIC接口 默认是SPI接口;如果想用IC接口;操作如下几步骤: 1.将模块背面的电阻R3换到R1位置,此时将模块切换为IIC接口:电阻R8可以用0欧姆电阻 ...
- GPIO模拟IIC接口信号质量分析
信号质量有问题的波形001: 信号质量有问题的波形002: 从上图可以看出,GPIO口模拟的I2C接口,电平都存在半高的情况. 因为I2C的接口是通过GPIO模拟实现的,该时钟信号线SCL内部默认为下 ...
- IIC接口总线
转载:http://www.eefocus.com/article/08-07/48416s.html图11-1给出一个由MCU作为主机,通过IIC总线带3个从机的单主机IIC总线系统.这是最常用.最 ...
- Java学习笔记二十八:Java中的接口
Java中的接口 一:Java的接口: 接口(英文:Interface),在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明.一个类通过继承接口的方式,从而来继承 ...
- [Effective Java 读书笔记] 第三章类和接口 第十八--十九条
十八条 接口优于抽象类 接口的特点: 1.一个类可以实现多个接口,不能继承多个类(抽象类) 2.接口不能有具体的方法实现,只定义标准类型 骨架类: 即实现一个abstract类来实现接口,提供给其他类 ...
- IIC总线解析
IIC简介: IIC 即Inter-Integrated Circuit(集成电路总线),这种总线类型是由飞利浦半导体公司在八十年代初设计出来的,主要是用来连接整体电路(ICS) ,IIC是一种多向控 ...
随机推荐
- python拉格朗日插值
#拉格朗日插值代码 import pandas as pd #导入数据分析库Pandas from scipy.interpolate import lagrange #导入拉格朗日插值函数 inpu ...
- js輸出
js訪問html的某個元素,使用document.getElementByID(); document.write()僅僅向文檔輸出內容,如果在頁面已經加載后輸出,原來頁面的內容會被覆蓋. docum ...
- resharper license server
2018-5-14更新 http://jetbrains-a.pw good 2018-4-17 更新 http://jetbrains.tools bad 144.202.4.96 good 201 ...
- mysql DDL&DML 语言
DDL:数据定义语言 CREATE, ALTER, DROP CREATE相关的常用命令: CREATE DATABASECREATE EVENTCREATE FUNCTIONCREATE FUNCT ...
- POJ1905-Expanding Rods-二分答案
一根细棒升温时会变长,在两面墙中间,会变成一个弓形. 给出变长后的长度,求新的细棒中心与没伸长时的中心的距离. 简单的数学推导后就可以二分答案了,一开始没完全掌握二分的姿势,wa了好多.而且poj d ...
- Fire Net ZOJ - 1002
题意: 一个n * n 的棋盘 上面有些障碍物 放棋子 棋子不能在同一行 同一列 但可以在同一行或同一列隔着障碍物放 这题与poj1321 的思想差不多 对于一个位置 有两种状态放还是不放 参数i ...
- 金三银四:蚂蚁金服JAVA开发面试题及答案之一面(持续更新
一面 1.自我介绍.自己做的项目和技术领域 开放题 2.项目中的监控:那个监控指标常见的有哪些? 答:CPU.内存.IO 等等.建议下载个nmon工具,里面有各个指标. 数据库:Mysql(缓存命中. ...
- 02 自学Aruba之无线频段---ISM频段及UNII频段
点击返回:自学Aruba之路 02 自学Aruba之无线频段---ISM频段及UNII频段 1. 无线频段-ISM频段 ISM频段即工业,科学和医用频段.一般来说世界各国均保留了一些无线频段,以用于工 ...
- 面试 -- Http协议相关(转载)
http请求由三部分组成,分别是:请求行.消息报头.请求正文 HTTP(超文本传输协议)是一个基于请求与响应模式的.无状态的.应用层的协议,常基于TCP的连接方式,HTTP1.1版本中给出一种持续连接 ...
- 为项目添加CUDA支持
最近研究体绘制方面的东西,需要用到CUDA加速.从官网下载了CUDA 7.0(支持VS2013)装好后,VS2013中能直接创建CUDA项目,也可以在原有项目中添加cu文件. 进入正题,为已有项目添加 ...
