发布网友 发布时间:2022-04-22 08:56
共2个回答
热心网友 时间:2023-09-14 16:18
在目前比较流行的几种串行扩展总线中,IIC总线以其严格的规范和众多带IIC接口的外围器件而获得广泛的应用。 IIC总线是PHILIPS公司推出的芯片间串行传输总线。它以1根串行数据线(SDA)和1根串行时钟线(SCL)实现了全双工的同步数据传输。随着IIC总线研究的深入,它已经广泛应用于视/音频领域、IC卡行业和一些家电产品中,在智能仪器、仪表和工业测控领域也越来越多地得到应用。
1. IIC总线硬件结构
IIC串行总线有两根信号线:一根双向的数据线SDA;另一根是时钟线SCL。所有接到IIC总线上的设备的串行数据都接到总线的SDA线,各设备的时钟线SCL接到总线的SCL。
总线对设备接口电路的制造工艺和电平都没有特殊的要求(NMOS、CMOS都可以兼容)。数据传送率按IIC总线可高达每秒十万位,高速方式可高达每秒四十万位。
总线的运行(数据传输)由主控器控制。主控器启动数据的传送(发出启动信号),发出时钟信号,传送结束时发出停止信号,通常主控器是微处理器。被主控器寻访的设备都称为从机。为了进行通讯,每个接到IIC总线的设备都有一个唯一的地址,以便于主控器寻访。
2. IIC总线时序
在IIC总线传输过程中,将两种特定的情况定义为开始和停止条件(如图1):当SCL保持“高”,SDA由“高”变为“低”时为开始条件;SCL保持“高”,SDA由“低”变为“高”是为停止条件。开始和停止条件由主控器产生。使用硬件接口可以很容易地检测开始和停止条件,没有这种接口的微机必须以每时钟周期至少两次对SDA取样以检测这种变化。
图1 总线开始/停止
SDA线上的数据在时钟“高”期间必须是稳定的,只有当SCL线上的时钟信号为低时,数据线上的“高”或“低”状态才可以改变。
输出到SDA线上的每个字节必须是8位,每次传输的字节不受*,每个字节必须有一个应答为ACK。如果一接收器件在完成其他功能(如一内部中断)前不能接收另一数据的完整字节时,它可以保持时钟线SCL为低,以促使发送器进入等待状态,当接收器械准备好接受数据的其它字节并释放时钟SCL后,数据传输继续进行。IIC数据总线传送时序如图2。
图2 总线数据传送时序
数据传送具有应答是必须的。与应答对应的时钟脉冲由主控器产生,发送器在应答期间必须下拉SDA线。当寻址的被控器件不能应答时,数据保持为高,接着主控器产生停止条件终止传输。在传输的过程中,当用到主控接收器的情况下,主控接收器必须发出一数据结束信号给被控发送器,被控发送器必须释放数据线,以允许主控器产生停止条件。合法的数据传输格式如图3所示:
超始位 被控接收器地址 R/W 应答位 数据 应答位 、、、、 停止位
图3
IIC总线在开始条件后的首字节决定哪个被控器将被主控器选择,例外的是“通用访问”地址,它可以寻址所有期间。当主控器输出一地址时,系统中的每一器件都将开始条件后的前七位地址和自己地址比较。如果相同,该器件认为自己被主控器寻址,而作为被控接收器或被控发送器则取决于R/W位。
3. IIC总线特点
由上面的介绍可以看出IIC总线的特点主要表现在以下几个方面: (1) 硬件结构上具有相同的硬件接口界面。IIC总线系统中,任何一个IIC总线接口的外围器件,不论其功能差别有多大,都是通过串行数据线(SDA)和串行时钟线(SCL)连接到IIC总线上。这一特点给用户在设计应用系统中带来了极大的便利性。用户不必理解每个IIC总线接口器件的功能如何,只要将器件的SDA和SCL引脚连到IIC总线上,然后对该器件模块进行的电路设计,从而简化了系统设计的复杂性,提高了系统抗干扰的能力,符合EMC (Electromagnetic Compatibility)设计原则。 (2) 总线接口器件地址具有很大的性。在单主系统中,每个IIC接口芯片具有惟一的器件地址,由于不能发出串行时钟信号而只能作为从器件使用。各器件之间互不干扰,相互之间不能进行通信,各个器件可以单独供电。FPGA与IIC器件之间的通信是通过独一无二的器件地址来实现的。 (3) 软件操作的一致性。由于任何器件通过IIC总线与DSP进行数据传送的方式是基本一样的,这就决定了IIC总线软件编写的一致性。 (4) PHILIPS公司在推出IIC总线的同时,也为IIC总线制订了严格的规范,如:接口的电气特性、信号时序、信号传输的定义等。规范的严密性,结构的性和硬、软件接口界面的一致性,极大地方便了IIC总线设计的模块化和规范化。
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/xjtu_drum/archive/2006/09/13/1219159.aspx
热心网友 时间:2023-09-14 16:18
你好
首先,IIC 的 数据pin(SDA) 和时钟pin(SCL)应该加上拉
SDA=1 表示将 数据pin 设置为高电平,在SDA=0之前一直维持高电平
希望这个表示你能看懂:
-------------________
SDA=1 SDA=0
前提: 设置SDA=1
设置SDA=0之前,SDA 一直维持高电平
高电平维持时间有IC的指令周期决定
假设一个指令周期为 300us
那么
SDA=1;
SDA=0;
就只有300us 的高电平。