IIC学习(一)

1、概述

  IIC,即Inter-Integrated Circuit(集成电路总线),它是同步通信的一种特殊形式,具有接口线少,控制方式简化,器件封装形式小,通信速率较高等优点。

  I2C 总线 包括一条数据线(SDA)和一条时钟线(SCL)。协议允许总线接入多个器件,并支持多主工作。总线中的器件既可以作为主控器也可以作为被控器,既可以是 发送器也可以是接收器。总线按照一定的通信协议进行数据交换。在每次数据交换开始,作为主控器的器件需要通过总线竞争获得主控权,并启动一次数据交换。系 统中各个器件都具有唯一的地址,各器件之间通过寻址确定数据接收方。

2、I2C总线的系统结构

一个典型的I2C总线标准的IC器件,其内部不仅有I2C接口电路,还可将内部各单元电路划分成若干相对独立的模块,它只有二根信 号线,一根是双向的数据线SDA,另一根是时钟线SCL。CPU可以通过指令对各功能模块进行控制。各种被控制电路均并联在这条总线上,但就像电话机一样 只有拨通各自的号码才能工作,所以每个电路和模块都有唯一的地址,在信息的传输过程中,I 2 C总线上并接的每一模块电路既是主控器(或被控器),又是发送器(或接收器)。CPU发出的控制信号分为地址码和控制量(数据)两部分,地址码用来选址, 即接通需要控制的电路,确定控制的种类;控制量决定该调整的类别及需要调整的量。这样,各控制电路虽然挂在同一条总线上,却彼此独立,互不相关。I2C总 线接口电路如下图1所示。

            图1 I2C总线接口电路

I2C 总线的器件分为主器件和从器件。主器件的功能是启动在总线上传送数据,并产生时钟脉冲,以允许与被寻址的器件进行数据传送。 被寻址的器件,称为从器件。一般来讲,任何器件均可以成为从器件,只有微控制器才能称为主器件。主、从器件对偶出现,工作在接收还是发送数据方式,由器件 的功能和数据传送方向所决定。

  I2C总线允许连接多个微控制器,显然不能同时存在两个主器件,先控制总线的器件成为主器件,这就是总线竞争。在竞争过程中数据不会被破坏、丢失。数据只能在主、从器件中传送,结束后,主、从器件将释放总线,退出主、从器件角色。

3、IIC总线的数据传输

  按IIC总线约定,起始信号表明一次数据传送的开始,其后为寻址字节,寻址字节由高7位地址和一位方向位组成,方向位表明主控器与被控器数据的传送方向,方向位为 "0" 表示 写,为 "1"表示读。

  在IIC总线上传送的每一个字节均为8位,但每启动一次IIC总线,其后的数据传输字节数是没有限制的。每传送一个字节后都必须跟随一个应答位,并且首先发送的数据位为最高位,在全部数据传送结束后主控器发送终止信号

<1>主控器的写操作

主控器向被寻址的被控器发送N个数据字节,整个传输过程数据传送方向不变。其数据传送格式如下:

A:应答信号

S:  起始信号

P:  停止信号

SLAW:寻址字节(写)

DATA1 ~ DATAN :写入被控器的数据

<2>主控器的读操作

主控器从被控器中读出N个字节的操作,整个传输过程中除寻址字节外,都是被控器发送,主控器接收的过程

SLAR:寻址字节(读)

主控器发送停止信号前应发送非应答位,向被控器表明读操作结束。

<3>主控器的读写操作

在一次数据传输过程中需要改变传送的操作,这时起始信号和寻址字节都会重复一次,但两次读写方向正好相反

从上述数据传送格式可以看出以下几点:

1)、任何方式起始、停止、寻址字节都是由主控器发送,传送方向则遵循寻址字节中方向位的规定

2)、寻址字节只表明器件地址及传送方向,器件内部的数据字节的N个数据地址是由第一个数据字节地址进行加减得到

3)、每个字节传送都必须有应答信号(A 或 ~A) 相随

4)、iic总线被控器在接收到起始信号后都必须复位它们的总线逻辑,以便对将要开始的被控器地址的传送进行预处理

4、协议

1.空闲状态

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

2.起始位与停止位的定义:

  • 起始信号:当SCL为高期间,SDA由高到低的跳变;启动信号是一种电平跳变时序信号,而不是一个电平信号。
  • 停止信号:当SCL为高期间,SDA由低到高的跳变;停止信号也是一种电平跳变时序信号,而不是一个电平信号。

3.ACK

  发送器每发送一个字节,就在时钟脉冲9期 间释放数据线,由接收器反馈一个应答信号。 应答信号为低电平时,规定为有效应答位(ACK简称应答位),表示接收器已经成功地接收了该字节;应答信号为高电平时,规定为非应答位(NACK),一般 表示接收器接收该字节没有成功。 对于反馈有效应答位ACK的要求是,接收器在第9个时钟脉冲之前的低电平期间将SDA线拉低,并且确保在该时钟的高电平期间为稳定的低电平。 如果接收器是主控器,则在它收到最后一个字节后,发送一个NACK信号,以通知被控发送器结束数据发送,并释放SDA线,以便主控接收器发送一个停止信号P。

   如下图逻辑分析仪的采样结果:释放总线后,如果没有应答信号,sda应该一直持续为高电平,但是如图中蓝色虚线部分所示,它被拉低为低电平,证明收到了应答信号。
这里面给我们的两个信息是:1)接收器在SCL的上升沿到来之前的低电平期间拉低SDA;2)应答信号一直保持到SCL的下降沿结束;正如前文红色标识所指出的那样。
4.数据的有效性: 
  I2C总线进行数据传送时,时钟信号为高电平期间,数据线上的数据必须保持稳定,只有在时钟线上的信号为低电平期间,数据线上的高电平或低电平状态才允许变化。 我的理解:虽然只要求在高电平期间保持稳定,但是要有一个提前量,也就是数据在SCL的上升沿到来之前就需准备好,因为在前面I2C总线之(一)---概述一文中已经指出,数据是在SCL的上升沿打入到器件(EEPROM)中的。

   

5.数据的传送:

  在I2C总线上传送的每一位数据都有一个时钟脉冲相对应(或同步控制),即在SCL串行时钟的配合下,在SDA上逐位地串行传送每一位数据。数据位的传输是边沿触发。

时间: 2024-07-29 15:32:12

IIC学习(一)的相关文章

IIC学习(下)

这个黄色的模块就是PCF8591,本设计中FPGA作为I2C主设备,PCF8591作为I2C从设备,从设备的地址由固定地址和可编程地址组成,我们的外设底板已将可编程地址A0.A1.A2接地. 详细的代码以及实现过程,见下面小脚丫wiki http://stepfpga.com/doc/adc%E6%95%B0%E6%A8%A1%E8%BD%AC%E6%8D%A2%E6%A8%A1%E5%9D%97

IIC总线学习基础以及24C02芯片学习(一)

一.IIC总线基础知识 1.IIC总线的特性:A.只有两条总线线路,一条串行数据线SDA,一条串行时钟线SCL.B.每一个连接到总线的器件都可以通过唯一的地址和一直存在的主机/从机关联,并由软件设定地址,也可以由硬件设定地址.主机可以作为主机发送器和主机接收器. 2.关于IIC的几个知识点: 二.24C02EEPROM芯片 1.EEPPROM是电可擦除存储芯片.掉电数据不丢失.管脚和定义如图: 2.24C02的写字节时序:

FPGA学习笔记之IIC—EEPROM写和读

一.IIC总线协议特点及其工作原理 I2C(Inter-Integrated Circuit)总线是一种由PHILIPS公司开发的两线式串行总线,用于连接微控制器及其外围设备. 1)I2C总线特点 I2C总线最主要的优点是其简单性和有效性.由于接口直接在组件之上,因此I2C总线占用的空间非常小,减少了电路板的空间和芯片管脚的数量,降低了互联成本.总线的长度可高达25英尺,并且能够以10Kbps的最大传输速率支持40个组件. I2C总线的另一个优点是,它支持多主控(multimastering),

8051学习笔记——IIC与EEPROM实验

main.c 1 #include <reg51.h> 2 #include "iic.h" 3 #define AT24C02 0xa0 //AT24C02 地址 4 5 sbit LS138A=P2^2; //译码器端 6 sbit LS138B=P2^3; 7 sbit LS138C=P2^4; 8 9 sbit K1 = P1^0; //保存 10 sbit K2 = P1^1; //读取 11 sbit K3 = P1^2; //+数据 12 sbit K4 =

cortex_m3_stm32嵌入式学习笔记(二十):IIC实验(I2C串行总线)

IIC(Inter- Integrated Circuit)总线是一种由 PHILIPS 公司开发的两线式串行总线,用于连接微控制器及其外围设备.它是由数据线SDA 和时钟SCL构成的串行总线,可发送和接收数据.在 CPU 与被控 IC 之间. IC 与 IC 之间进行双向传送, 高速 IIC 总线一般可达 400kbps 以上. ALIENTEK MiniSTM32 开发板板载的 EEPROM 芯片型号为 24C02.该芯片的总容量是 256个字节,该芯片通过 IIC 总线与外部连接,我们本章

stm32寄存器版学习笔记09 IIC

I²C(Inter-Integrated Circuit)总线是一种两线式串行总线,用于连接微控制器及其外设,是由数据线SDA和时钟SCL构成的串行总线,可发送和接收数据. IIC总线在传送数据过程中共有3种类型信号,分别是开始信号.结束信号和应答信号.   SCL SDA 开始信号 高电平 由高电平向低电平跳变,开始传送数据 结束信号 高电平 由低电平向高电平跳变,结束传送数据 应答信号 接收数据的IC在接收到8bit数据后向发送数据的IC发出特定的低电平脉冲,表示已经收到数据:CPU向受控单

关于嵌入式如何学习(看了不后悔,给学技术的同行一条光明的路)

关于嵌入式如何学习,我相信有很多大牛回答得很专业,最近在知乎上看到一网名为----李brooks,~的网友对此进行了总结,我个人觉得非常好,还有其他两位网友li crifan和Tony Ho,毕竟我工作以来也还有好多东西没有接触,就有他说的那些中的部分内容,我们来看看他们说了什么内容: 有一位大学生四年级的网友提出这样的问题: 本人大四学生,专业为电气类的,有C语言,单片机,模电,数电的基础,一直想从事嵌入式方面的工作(感兴趣),但是以目前的水平,暂时还不能找到这方面的工作,所以一直在纠结是先找

IIC总线协议

 II2C C总线的简单的概述 1.( 总线(Inter Integrated Circuit Bus Inter Integrated Circuit Bus):是 ):是Philips Philips公司 公司 推出的串行总线标准(为二线制).总线上扩展的外围器件及外设接 推出的串行总线标准(为二线制). 2.总线上扩展的外围器件及外设接 口通过总线寻址,是具备总线仲裁和高低速设备同步等功能的高性能 口通过总线寻址,是具备总线仲裁和高低速设备同步等功能的高性能 多主机总线. 3.特点:组成系

学习FPGA100个值得注意的要点(转载)

1.FPGA不是编程语言,而是一种可综合的硬件描述语言.2.Verilog 支持两种进程initial和always进程3.阻塞与非阻塞指的相对于进程本身而言的.4.使用进程模块的电路类型:                       组合电路-----对组合逻辑中使用的所有输入敏感                      例子:                      [email protected](a or b or sel)                      时序电路---