Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2695217
  • 博文数量: 877
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 5921
  • 用 户 组: 普通用户
  • 注册时间: 2013-12-05 12:25
个人简介

技术的乐趣在于分享,欢迎多多交流,多多沟通。

文章分类

全部博文(877)

文章存档

2021年(2)

2016年(20)

2015年(471)

2014年(358)

2013年(26)

分类: 嵌入式

2015-04-17 18:19:13

http://blog.sina.com.cn/s/blog_98ca54fc0101590o.html

 的特征:

1.  只要求两条总线线路:一条数据线(SDA);一条串行时钟总线
2.  每个接到总线上的都可以用设定地址,通过唯一的地址。总线上的不同会一直存在这一个主从关系,主设备可以工作在主发送和主接受模式。
3.  这是一个真正的多主机总线,如果多个或更多主机同时初始化数据传输,可以通过冲突检测和仲裁检测来防止数据被破坏。
4.  串行的8位双向数据传输位速率在标准模式下可达100kbit/s,快速模式下可达400kbit/s,高速模式下可达3.4Mbit/s。
5.  片上集成有滤波器,可以滤除总线上的毛刺波,保证数据完整
连接到相同总线的IC数量只受到总线的最大负载电容400pF的限制,因为挂接的设备越多,在总线上产生的负载就越大,会严重影响数据的传输波形,导致总线无法正常工作。
6.  IIC设备便于电路的模块话,能是的设计裁减更加灵活。

IIC典型:
1.  现在的数码电视机中使用的就是一个IIC总线,所有设备都挂接在IIC总线上。
2.  DECT无绳电话基站,不同模块也是通过IIC总线连接。

IIC总线规范:
在用到微的系统中,需要一些规范来协调不同设备间的通信。

IIC总线的概念:
IIC总线支持任何IC生产工艺(NMOS, CMOS. 双极性)。
两线:
SDA-串行数据
SCL-串行时钟
每个器件都有一个唯一的地址识别(微控制器,LCD驱动器,存储器或是键盘接口),而且都可以作为一个发送器或接收器由器件的决定 很明显 LCD驱动器只是一个接收器而存储器则既可以接收又可以发送数据 除了发送器和接收器外 器件在执行数据传输时也可以被看作是主机或从机(见表 1)主机是初始化总线的数据传输并产生允许传输的时钟的器件 此时 任何被寻址的器件都被认为是从机  。
表一:
 术语 描述 
 发送器 发送数据到总线的器件 
 接收器 从总线接受数据的器件 
 主机 初始化发送、产生时钟信号和终止发送的器件 
 从机 被主机寻址的器件 
 多主机 同时有多于一个主机尝试控制总线,但不破坏报文 
 仲裁 是一个在多个主机同时尝试控制总线,但只允许其中一个控制总线并使报文不被破坏的过程 
 同步 两个或多个器件共用一个同步时钟信号的过程 


主机、从机;接收机,发送机:

关系都是相对的并且只在数据传输的时候才会存在:
1)假设微控制器A(主)要给B(从)发送数据
1. A寻址B
2. A发送数据到B; A - 发送器   B - 接收器
3. A终止发送
2)假设A(主)想从B(从)接受信息
1. A寻址B
2. A从B接受数据;A - 接收器 B - 发送器
3. A终止接收

总线仲裁过程:
多个主机同时尝试发送信息到总线,其他主机都产生“0”的情况下,首先产生“1”的主机讲丢失仲裁。
仲裁时的时钟信号是用线与到SCL线的主机产生的时钟的同步结合。

IIC总线接口电路:电路如下图
图中可以看出据诶大总线上的设备都是漏极(或集电极)开路,即OC门,只有OC们啊次可以实现总线上的线与。

单片机访问IIC总线技术 - wilson - Wilsons blog

数据的有效性:
SDA线上的数据必须在时钟的高电平周期保持稳定。数据线上的数据只能在SCL为低电平是才能改变。时序波形如下图:
start,stop
单片机访问IIC总线技术 - wilson - Wilsons blog



数据传送的起始和停止:
IIC总线中数据的起始和结束,与数据的位传输有所不同,
起始位:在SCL为高电平时,SDA从高电平向低电平切换
结束位:在SCL为高电平时,SDA从低电平向高电平切换

起始和结束位是由主机产生,总线在起始位开始之后被认为是处于忙状态,在出现结束位之后的某段时间后总线被确认为闲状态。
在起始条件产生后,停止条件产生前出现的起始条件和第一个起始条件在功能上是一样的。表示为(S)。
如果没有硬件检测总线起始和结束的设备想监视IIC总线(如微),那么在每个周期至少采样两次SDA总线来确认有没有电平发生变化。

数据的传输:
字节格式传输:
SDA线上传输的数据必须是8位的,但每次可以传输多个字节。每个字节后面必须跟一个响应位。
总线上每个字节首先传送的是最高位(MSB)。
如果从机在接受数据前要完成一些工作(如中断服务程序)才能接受或发送数据,那么从机可以使时钟线SCL保持低电平迫使主机进入等待状态。当从机准备好后接收下一个数据字节并释放时钟线后,数据传输继续。在传输数据时使用同样的方法也不会影响数据的传输。

响应位:
数据传输必须带响应。相关的响应脉冲由主机产生,在响应的时钟脉冲期间,发送器释放SDA线(此时为高电平)。
响应的时钟脉冲期间,接收器必须将SDA线拉低,并保持。(CBUS除外)
如果从机不能响应从机地址(在执行别的程序),从机必须使数据线保持高电平。主机会产生一个停止条件终止传输或者产生重复起始条件开始新的传输。
如果从机接收器响应了从机地址但是在传输了一段时间后不能接受更多的数据字节,主机必须终止传输。这个情况用从机在第一个字节后没有产生响应来表示。从机使数据线保持高电平主机产生一个停止或重复起始条件。
如果主机为接收模式,它必须在从机发送结束,时钟停止的最后一个字节不发送响应位,从而告诉发送器数据结束。从机发送器释放数据线,允许主机产生一个停止或重复起始条件。

数据传输时序,数据响应时序如下图:
单片机访问IIC总线技术 - wilson - Wilsons blog

数据响应:
单片机访问IIC总线技术 - wilson - Wilsons blog

数据仲裁:

所有主机在SCL总线上产生自己的时钟来传输数据,数据只在时钟的高电平周期有效。
时钟同步通过线与SCL线来执行。就是说:SCL线的高低切换会使器件开始数它们的低电平周期,而且一旦器件的时钟变低,它会使SCL线保持这种状态知道到达时钟的高电平。但是,当变为高电平时,另一个总线上的时钟仍处于低电平周期,这个低到高的电平变化不会出现在总线上改变SCL的状态。所以,SCL线被最长低电平周期的器件所持有,此时低电平周期短的器件会进入高电平的等待状态。
等所有器件数完了它们的低电平周期后,时钟线会被释放为高电平。之后所有器件开始数他们的高电平,最早数完高电平的器件会再次把SCL拉低,因此高电平周期是由高电平周期最短的器件决定的。

总线仲裁 同步时钟时序图:
单片机访问IIC总线技术 - wilson - Wilsons blog
仲裁:
主机只能在总线空闲的时候启动传输。两个或多个主机可能在起始条件的最小持续时间内产生一个起始条件,结果在总线上产生一个规定的起始条件。
当SCL线是高电平时,仲裁在SDA线发生:在其他主机发送低电平时,发送高电平的主机将断开它的数据级,因为总线上的电平与它自己的电平不同。
仲裁可以持续多位。最开始是比较地址位,如果有相同主机尝试寻址相同的器件,仲裁会继续比较数据位(如果是主机-发送器),或者比较响应位(如果是主机-接收器)。因为IIC总线的地址和数据信息由赢得仲裁的主机决定,在仲裁过程中不会丢失信息。即最后赢得总线的主机是发送或接受的数据是正确的主机。
丢失仲裁的主机可以产生时钟脉冲知道丢失仲裁的该字节末尾。
由于HS模式的主机有一个唯一的8位主机码,因此一般在第一个字节就可以结束仲裁。
如果主机也结合了从机的功能,而且在寻址阶段丢失仲裁,它很可能就是赢得仲裁的主机在寻址的器件。因此丢失仲裁的主机要立即切换到从机模式。
两个主机抢总线的时序图:
单片机访问IIC总线技术 - wilson - Wilsons blog
IIC总线的控制只由地址或主机码以及竞争主机发送的数据决定,没有中央主机,总线也没有任何定制的优先权。
注意:在串口传输时,当重复起始条件或停止条件发送到IIC总线的时候,仲裁过程仍在进行。
下面情况仲裁不发送:
1. 重复其实条件和数据位
2. 停止条件和数据位
3. 重复起始条件和停止条件
从机不会介入仲裁过程。


用时钟同步机制作为握手
在字节级的快速传输中,器件可以快速接受字节,但是需要更多的时间保存接受到的字节或准备另一个要发送的字节。因此,从机可以以一种握手过程在接受和响应一个字节后使SCL线保持低电平,迫使主机进入等待状态,直到从机准备好下一个要传输的字节。时序参考Fig.6。
在位传输级可以通过延长每个时钟的低电平周期减慢总线时钟。从而使主机和从机都能适应器件内部的操作速率。
HS模式,握手功能只能在字节级使用。

数据格式:
7位的地址格式:
数据的传输如下图格式:

单片机访问IIC总线技术 - wilson - Wilsons blog


在 起始条件(S)后,发送了一个从机的地址。地址共7位,紧接着的第8位是数据方向位(R/W)-‘0’ 表示发送写,‘1’表示请求数据读。数据传输一般由主机产生的停止位(P)终止。但是主机还希望在总线上通讯,它可以产生重复起始条件(Sr)和寻址另一个从机,而不是首先产生一个停止条件。在这种传输中,可能有不同的读/写格式组合。
如下图:
单片机访问IIC总线技术 - wilson - Wilsons blog
单片机访问IIC总线技术 - wilson - Wilsons blog


7位寻址:
IIC总线的寻址过程是在起始条件后的第一个字节决定了主机选择哪个主机。'广播呼叫‘地址除外。使用这个地址,理论上所有器件都会发出一个响应。也可以使器件忽略这个地址。广播呼叫地址的第二个字节定义了要采取的行动。
当主机在总线上发送了7个地址位之后,系统中的每个器件都在其实条件后讲头7位与自己的地址比较。如果一样,器件会被主机寻址,从机的工作模式有第八位觉得(接受/发送)。
单片机访问IIC总线技术 - wilson - Wilsons blog

从机的地址位是由固定地址部分和可编程地址部分组成。如有4位固定的和3位通过引脚可编程的那么可以挂载8个相同的芯片到IIC总线。
IIC地址的分配由IIC总线委员会协调进行。

起始位之后的第一个字节的一些特殊地址含义:
如下表:
单片机访问IIC总线技术 - wilson - Wilsons blog


http://blog.csdn.net/zgrjkflmkyc/article/details/10949145
AT24C02是由ATMEL公司提供的,IIC总线串行EEPROM(electronic eraser programmer read only memory),其容量为2kbit(256B),工作电压在2.7v"5.5v之间,生产工艺是CMOS。  


  
一般数字芯片都在左下角和右上角为GND,VCC。容量的计算方法:AT24Cxx :01"1024  
容量 = xx * 1kbit。  

写入过程:  

AT24C系列EEPROM芯片的固定部分为1010,A2,A1,A0引脚接高低电平后得到确定的3位编码,形成7位编码即为该器件的地址码。  

单片机进行写操作时,首先发送该器件的7位地址码和写方向位”0”(共8位,即一个字节),发送完后释放SDA线并在SCL线上产生第9个时钟信号。被选中的存储器器件在确认是自己的地址后,在SDA线上产生一个应答信号作为响应,单片机收到应答后就可以传送数据了。传送数据时,单片机首先发送一个字节的被写入存储器的首地址,收到存储器器件的应答后,单片机就逐个发送数据字节,但每发送一个字节后都要等待应答。AT24C系列片内地址在接收到每一个数据字节地址后自动加1,在芯片的“一次装载字节数”限度内,只需输入首地址。装载字节数超过芯片的“一次装载字节数”时,数据地址将“上卷”,前面的数据将被覆盖。  


  
  
字节写:  


   
  
页写:  


   
读入过程:   

单片机先发送该器件的7位地址码和写方向位“0”(“伪写”),发送完后释放SDA线并在SCL线上产生第9个时钟信号。被选中的存储器器件在确认是自己的地址后,在SDA线上产生一个应答信号作为回应。      

然后,再发一个字节的要读出器件的存储区的首地址,收到应答后,单片机要重复一次起始信号并发出器件地址和读方向位(“1”),收到器件应答后就可以读出数据字节,每读出一个字节,单片机都要回复应答信号。当最后一个字节数据读完后,单片机应返回以“非应答”(高电平),并发出终止信号以结束读出操作。   


  
当前地址读:   


   
  
随机读:  


   
  
有序读:  


   
  
IIC总线模拟时序图:  


   
IIC总线应答时序图:  


  
设备地址:  


   
写周期:  


   
两次写之间要有一个10ms的twR间隔  
阅读(1067) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~