图5-3 典型的两线式总线配置
IIC有着如下优点:
(1)两条总线线路包括SDA和SCL。SDA代表的是一根串行数据总线,而SCL代表的是一根串行时钟线。两根并行线组成了I2C。
(2)主机通过唯一的地址识别一个器件,来进行数据的相互传输。并且主机可以同时进行接收和发送。
(3)IIC实行的是双向数据串行传输。其传输位速率有3种:(1)标准模式下100kbit/s;(2)快速模式下400kbit/s;(3)高速模式下3。4Mbit/s。
(4)IIC实现了多主机连接。如果几台甚至更多的主机同步初始化,在两线上进行的数据传输可以自动检测冲突并自行仲裁,防止数据的破坏。
(5)总线的最大包含容量是限制为400pF。于是,连接在上面的I2C的数量受到极大的限制。
2。I2C总线的数据传输
(1)字节格式源F于K优B尔C论V文N网WwW.youeRw.com 原文+QQ752^018766
通过I2C总线来实现字节的发送。(1)在SDA上传输的字节数没有受到限制,而且所传输的单个字节为8位。但是值得注意的,是每个字节后应该带上一个响应位,即传输一个字符一共9位。线上最开始传输的是数据的最高位(MSB)。当设置时钟线保持低电平时,数据传输会停止,此时从机可以进行其他操作。这样使得主机进入wait状态。假若想返回上一步进程间数据的传输操作,就需要设置使时钟线处于上升沿高电平,那么传输则会持续进行。
在主机发送完8位的数据后,从机会实现一个回应给主机,叫ACK信号,告诉主机SDA处于低电平状态了。这样就是实现了一次通信“挥手”,即每次传送一个数据,都会实现“挥手”,这是I2C体现出的安全性。
如图5-4所示。
图5-4 两线的传输方式
如果I2C总线在进行数据传输时:a。当时钟信号为上升沿或者处于高电平时,那么数据线上的数据在主机和器件之间则保持稳定的传送;b。相反的,时钟线如果在一段时间内置为低电平,那么在这段相应的时间段内数据线上的高/低电平才会随之发生状态变化。
2。I2C读写过程
(1)I2C读
以AT24C02与2440连接IIC通信,AT24C02为从,2440为主。
EEPROM芯片在AT24C系列中前4位编码固定,设置为1010。而A2、A1、A0引脚根据实际情况分别接进高低电平,得到后面3位编码。由此组成的的7位编码则是主机访问固定器件的8位地址码的前7位编码。
根据前面的描述,主机访问对应的器件的地址编码应该为8位,前7位如前描述,最后一位就是R/W位(“读/写”位)。它是决定是写入还是读出。0表示写入,1表示读出。如图5-5所示。
图5-5 芯片地址
最开始,将8位地址码发送出去,例如发出写位“0”。在发送完成后,在SCL线上产生1个时钟信号。之后相应的存储器查看是不是属于本身地址。若为正确地址,则发送给SDA线一个应答信号,进行一次“挥手”来表明已接收。
SDA接受回应后,芯片发送一个字节的读出首地址。在SCL收到应答后,芯片再次发出器件的地址和读方向位“1”。在接受相应模块单元的应答之后就可以读出相应的数据。每每重复。即每次出书一个字节就要有相应的一次挥手。但是如果读完最后一个字节,芯片会返回“非应答”。之后便发出终止信号来结束这段读操作。
(2)I2C写
如果芯片要设置写操作,(1)那么起首将模块单元器件的7位地址码和写位”0”码发送。在发送完地址码后,然后在SCL线上产生1个时钟信号。(2)此时相应存储器检测是否属于本身的地址码,若是正确的,则会在SDA线上生成一个应答信号作为响应,即实现一次应答“挥手”。芯片在收到应答后即传送数据。芯片每发送完一个字节就要进入等待应答状态。只要输入相应的首地址便可以查询传输后对应的字节数据。若是字节数在超过芯片的容量之后,地址会返回,从首地址开始,给新数据安排轮换地址,依次代替第一批容量限度内字节的地址里的数据。 EDA+FPGA的电子密码锁的设计+程序+电路图(6):http://www.youerw.com/zidonghua/lunwen_201232.html