【51单片机入门记录】IIC总线协议 && EEPROM存储器AT24C02概述

一、IIC总线协议概述

(1)IIC(Inter-IntegratedCircuit)总线

  • 是一种由PHILIPS公司开发的两线式串行总线,用于连接微控制器以及其外围设备。
  • IIC也被成为I2C/I²C,其实两者是完全相同的,只是名词不一样而已
  • 它是由数据线SDA和时钟线SCL构成的串行总线,可发送和接收数据

(2)IIC总线的物理层和协议层

  • 物理层规定通讯系统中具有机械、电子功能部分的特性,确保原始数据在物理媒体的传输
  • 协议层主要规定通讯逻辑,统一收发双方的数据打包、解包标准

(3)特点

  1. 它是一个支持设备的总线。“总线”指多个设备共用的信号线。在一个I2C通讯总线中,可连接多个I2C通讯设备,支持多个通讯主机及多个通讯从机
  2. 一个I2C总线只使用两条总线线路,一条双向串行数据线(SDA),一条串行时钟线(SCL)。数据线即用来表示数据,时钟线用于数据收发同步
  3. 每个连接到总线的设备都有一个独立的地址,主机可以利用这个地址进行不同设备之间的访问。
  4. 总线通过上拉电阻接到电源。当I2C设备空闲时,会输出高阻态,而当所有设备都空闲,都输出高阻态时,由上拉电阻把总线拉成高电平。
  5. 多个主机同时使用总线时,为了防止数据冲突,会利用仲裁方式决定由哪个设备占用总线
  6. 具有三种传输模式:标准模式传输速率为100kbit/s,快速模式为400kbit/s,高速模式下可达3.4Mbit/s,但目前大多12C设备尚不支持高速模式。

二、IIC总线通讯的数据帧格式

(1)IIC总线通讯的数据帧格式:写操作

S为起始信号,SLAVEADDRESS从机地址(7bit)+W(0)一共8位,有阴影的部分是主机发送的,而没有阴影部分是从机发送到主机的,A/A(0/1),P代表停止信号

主机I2C接口产生传输起始信号S→广播从机地址→传输方向选择→接受到应答信号ACK→向从机传输数据DATA→等待从机的应答信号ACK→重复之前过程→发送停止传输信号P。

(2)IIC总线通讯的数据帧格式:读操作

S为起始信号,SLAVEADDRESS从机地址(7bit)+R(1)一共8位,有阴影的部分是主机发送的,而没有阴影部分是从机发送到主机的,A(应答)/A(0/1),P代表停止信号。

注意:假如主机一直返回应答信号,那么从机可以一直发送数据,也就是图中的(nbyte+应答信号)情况,直到主机发出非应答信号,从机才会停止发送数据。

主机I2C接口产生传输起始信号S→广播从机地址→传输方向选择→接受到应答信号ACK←从机向主机返回数据DATA←等待主机的应答信号ACK←重复之前过程←停止传输P。

(3)IIC总线通讯的数据帧格式:读和写数据

除了基本的读写,IIC通讯更常用的是复合格式,该传输过程有两次起始信号(S)

一般在第一次传输中,主机通过SLAVE_ADDRESS寻找到从机设备后,发送一段“数据”,这段数据通常用于表示从设备内部的寄存器或存储器地址;

在第二次的传输中,对该地址的内容进行读或写。也就是说,第一次通讯是告诉从机读写地址,第二次则是读写的实际内容。

三、IIC总线通讯时序

(1)I2C数据的有效性(数据的传输)

  1. 使用SDA信号线来传输数据
  2. 使用SCL信号线进行数据同步
  3. SDA数据线在SCL的每个时钟周期传输一位数据。传输时,SCL为高电平的时候,SDA表示的数据有效,即此时的SDA为高电平时表示数据“1”,为低电平表示数据“0”。
  4. 当SCL为低电平时,SDA的数据无效,一般在这个时候进行电平切换,为下一次表示数据做好准备。

(2)I2C通讯的起始和停止信号

  • 当SCL线是高电平时,SDA线从高电平向低电平切换,这个情况表示通讯的起始。
  • 当SCL现是高电平时,SDA线由低电平向高电平切换,表示通讯的停止。
  • 起始和停止信号一般由主机产生。

(3)I2C通讯的响应

  • 传输时,主机产生时钟,在第九个时钟时,数据发送端会释放SDA的控制权,由数据接收端控制SDA,若SDA为高电平,表示非应答信号(NACK),低电平表示应答信号(ACK);
  • 当设备(无论主从机)接收到I2C传输的一个字节数据或地址后,若希望对方继续发送数据,则需要向对方发生“应答(ACK)”信号;若接收端希望结束数据传输,则向对方发生“非应答(NACK)”信号,发送方接收到该信号后会产生一个停止信号,结束信号传输。

四、基于IIC总线的E2PROM-AT24C02

(1)E2PROM概述:
 

EEPROM (Electrically Erasable Programmable read only memory)是指带电可擦可编程只读存储器,是一种掉电后数据不丢失的存储芯片,EEPROM 可以在电脑上或专用设备上擦除已有信息,重新编程。

(2)AT24C02简介

AT24C02是一个2K位串行CMOS E2PROM,内部含有256个8位字节。该器件通过IIC总线接口进行操作,且有一个专门的写保护功能。

(3)基于IIC总线的E2PROM-AT24C02的特性

  • 与400KHz IIC 总线兼容
  • 1.8到6.0伏工作电压范围
  • 低功耗CMOS技术
  • 写保护功能,当WP为高电平时进入写保护状态
  • 页写缓冲器
  • 自定时擦写周期
  • 1,000,000编程/擦除周期
  • 可保存数据100年
  • 8脚 DIP SOIC或TSSOP封装
  • 温度范围商业级工业级和汽车级。
  • (4)基于IIC总线的E2PROM-AT24C02的管脚描述

  • 管脚名称

    功能

    A0、A1、A2

    器件地址选择

    SDA

    串行数据、地址

    SCL

    串行时钟

    WP

    写保护

    VCC

    +1.8V~6.0V工作电压

    GND

WP 保护:如果WP管脚连接到Vcc所有的内容都被写保护,只能读;当WP管脚连接到Vss或悬空,允许器件进行正常的读/写操作。

(5)IIC地址及数据方向

I2C总线上的每个设备都有自己的独立地址,主机发起通讯时,通过SDA信号线发送设备地址(SLAVE_ADDRESS)来查找从机。

12C协议规定设备地址可以是7位或10位,实际中7位的地址应用比较广泛。紧跟设备地址的一个数据位用来表示数据传输方向,它是数据方向位,第8位或第11位。数据方向位为“1”时表示主机由从机读数据,该位为“0”时表示主机向从机写数据

(6)AT24C02设备地址


 

因为单片机上的管脚均接地,所以地址为1K/2K代表的地址。

五、AT24C02数据读写操作

(1)字节写

  • 写操作需要在设备地址字确认之后有一个8位的数据字地址
  • 一旦收到这个地址,EEPROM将输出一个响应,然后接收到8位数据字后,EEPROM将输出一个响应。
  • 如果需要停止数据传输,主机必须用一个停止条件终止写序列。
  • 数据写入后,EEPROM进入一个内部计时的写周期,将数据写入到到非易失性存储器。在这个写周期中,所有输入都被禁用,EEPROM直到写完成才会响应。

Figure 8. Byte Write:

(2)页写入

  • 1K/2K EEPROM能够进行8字节的页写入;
  • 页写的初始化过程与字节写的初始化过程相同。但是微控制器在第一个数据字被写入后并没有发送一个停止条件。相反,在EEPROM 承认接收到第一个数据字之后。该微控制器可以再传输7个数据字。EEPROM在接收到每个数据字后将回一个零响应。“微控制器必须用一个停止条件终止页写序列。当内部生成的字到达页面边界时,下面的字节被放置在同一页面的开头。
  • 如果有超过8个数据字传输到 EEPROM,数据字地址将“翻转”,先前的数据将被覆盖。

(3)任意地址读取

  • 随机读需要一个“虚拟”字节写序列来加载数据字地址。一旦设备地址字和数据字地址被输入并且被EEPROM 确认微控制器必须产生另一个启动条件,微控制器现在通过发送带读设备地址来启动当前读地址。令EEPROM 确认设备地址并报出数据字。微控制器后跟随停止条件结束。

(4)读写时间周期范围

符号

参数

1.8 V,2.5V

4.5V~5.5V

单位

最小

最大

最小

最大

FscL

时钟频率

100

400

KHz

T1

SCL,SDA输入的噪声抑制时间

200

200

ns

tAA

SCL 变低至SDA数据输出及应答信号

3.5

1

us

tBUF

新的发送开始前总线空闲时间

4.7

1.2

μs

LHD:STA

起始信号保持时间

4

0.6

μs

tLow

时钟低电平周期

4.7

1.2

μs

LHIGH

时钟高电平周期

4

0.6

us

tSU:STA

起始信号建立时间

4.7

0.6

μs

tHD:DAT

数据输入保持时间

0

0

ns

tsut:DAT

数据输入建立时间

50

50

ns

tR

SDA及SCL上升时间

1

0.3

μs

tF

SDA及SCL下降时间

5

300

300

ns

tsu:STO

停止信号建立时间

4

0.6

μs

DH

数据输出保持时间

100

100

ns

(5)任意地址读取总结

  • 1、主控器发出起始信号
  • 2、主控器发出寻址字节(写);
  • 3、被控器做出应答后;
  • 4、主控器发出地址字节(写);
  • 5、被控器做出应答后;
  • 6、主控器发出停止信号
  • 7、主控器发出起始信号;
  • 8、主控器发出寻址字节(读);
  • 9、被控器做出应答后;
  • 10、主控器从被控器读出数据字节,主控器发出应答;
  • 11、主控器发出停止信号:
  • 32
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值