单片机小白学习之路(二十七)---EEPROM-IIC总线理解(二)

发布者:Lihua521最新更新时间:2020-03-30 来源: eefocus关键字:单片机  EEPROM  IIC总线 手机看文章 扫描二维码
随时随地手机看文章

目标:EEPROM-IIC总线理解(二)

在实际的应用中,保存在单片机RAM中的数据,掉电后数据就丢失了,保存在单片机的FLASH中的数据,又不能随意改变,也就是不能用它来记录变化的数值。但是在某些场合,我们又确实需要记录下某些数据,而它们还时常需要改变或更新,掉电之后数据还不能丢失,比如我们的家用电表度数,我们的电视机里边的频道记忆,一般都是使用EEPROM来保存数据,特点就是掉电后不丢失。我们板子上使用的这个器件是24C02,是一个容量大小是2Kbit位,也就是256个字节的EEPROM。一般情况下,EEPROM拥有30万到100万次的寿命,也就是它可以反复写入30-100万次,而读取次数是无限的。

24C02是一个基于I2C通信协议的器件,因此从现在开始,我们的I2C和我们的EEPROM就要合体了。但是大家要分清楚,I2C是一个通信协议,它拥有严密的通信时序逻辑要求,而EEPROM是一个器件,只是这个器件采样了I2C协议的接口与单片机相连而已,二者并没有必然的联系,EEPROM可以用其他接口,I2C也可以用在其它很多器件上。


(5)数据传输

I2C总线上传送的数据信号是广义的,既包括地址信号,又包括真正的数据信号。在起始信号后必须传送一个从机的地址(7位),第8位是数据的传送方向位(R/W),用“0”表示主机发送(写)数据(W),“1”表示主机接收数据(R)。每次数据传送总是由主机产生的终止信号结束。但是,若主机希望继续占用总线进行新的数据传送,则可以不产生终止信号,马上再次发出起始信号对另一从机进行寻址。


在总线的一次数据传送过程中,可以有以下几种组合方式:

a、主机向从机发送数据,数据传送方向在整个传送过程中不变,即就连那一个从机,白色框子里的A是从机发来的表示一个字节接受完了,如果是/A则表示从机没有响应则结束

13367077-2e9ec4ff8e99fe06.png

组合方式1


b、主机在第一个字节后,立即从从机读数据,灰色框里的A是主机发出的响应,表示一个字节数据读取完了

13367077-fe5acdba8dd4455b.png

组合方式2


c、在传送过程中,当需要改变传送方向时,起始信号和从机地址都被重复产生一次,但两次读/写方向位正好相反

13367077-92a356fcdad7809b.png

图片2.png



2.EEPR0M(AT24C02)简介

AT24C01/02/04/08/16...是一个1K/2K/4K/8K/16K位串行CMOS28/256/512/1024/2048个8位字节,AT24C01有一个8字节页写缓冲器
AT24C02/04/08/16有一个16字节页写缓冲器。该器件通过I2C总线接口进行操作,它有一个专门的写保护功能。

AT24c02就 是一个挂在总线上的从机可以往里面写数据也可以读里面的数据,而单片机就是主机来都里面或往里面写数据

13367077-162ea5d3db807bd6.png

AT24C02


13367077-22ccd2e9c644cece.png

功能说明

AT24C02器件地址为7位,高4位固定为1010,低3位由 A0/A1/A2信号线的电平定。因为传输地址或数据是以字节为单位传送的,当传送地址时,器件地址占7位,还有最后一位(最低位R/W)用来选择读写方向,它与地址无关。


13367077-1d4fbdc6138b64d8.png

图片5.png

13367077-c60cd2098d689738.png

起始与应答

  • 起始时,起始信号的数据线的高电平要至少保持4.7us,低电平最少要4us,I2C通信的起始信号的定义是SCL为高电平期间,SDA由高电平向低电平变化产生一个下降沿,表示起始信号

void I2CStart()  //产生总线起始信号

{

    I2C_SDA = 1; //首先确保SDA、SCL都是高电平

    I2C_SCL = 1;

    I2CDelay();

    I2C_SDA = 0; //先拉低SDA

    I2CDelay();

    I2C_SCL = 0; //再拉低SCL

}

  • 终止时,终止信号的数据线的低电平最少4us,高电平最少4.7us,I2C通信停止信号的定义是SCL为高电平期间,SDA由低电平向高电平变化产生一个上升沿,表示结束信号
    应答就是SDA是低电平时,SCL要保持高电平大于4us
    非应答就是SDA是高电平时。SCL保持高电平大于4us

void I2CStop()   //产生总线停止信号

{

    I2C_SCL = 0; //首先确保SDA、SCL都是低电平

    I2C_SDA = 0;

    I2CDelay();

    I2C_SCL = 1; //先拉高SCL

    I2CDelay();

    I2C_SDA = 1; //再拉高SDA

    I2CDelay();

}

13367077-7a8555d626303ac3.png

发送数据时序

  • 数据传输:I2C通信是高位在前,低位在后。I2C没有固定波特率,但是有时序的要求,要求当SCL在低电平的时候,SDA允许变化,也就是说,发送方必须先保持SCL是低电平,才可以改变数据线SDA,输出要发送的当前数据的一位;而当SCL在高电平的时候,SDA绝对不可以变化,因为这个时候,接收方要来读取当前SDA的电平信号是0还是1,因此要保证SDA的稳定不变化,如上图中的每一位数据的变化,都是在SCL的低电平位置。


3.EEPROM模块电路

13367077-e732d33c7eea87a0.png

EEPROM模块电路

关键字:单片机  EEPROM  IIC总线 引用地址:单片机小白学习之路(二十七)---EEPROM-IIC总线理解(二)

上一篇:单片机小白学习之路(四十一)---LCD1602液晶理解
下一篇:单片机小白学习之路(二十六)---EEPROM-IIC总线理解(一)

推荐阅读最新更新时间:2024-11-07 10:38

基于单片机通过串口与电脑连接通信
本实验实现串口中断实验,通过中断和计算机进行通信             *  首先接受联机信号,然后接受计算机的相关控制信号            *  本实验中,采用发送不同的字符给计算机来模拟接收到的不同的计算机控制命令      *  通过扩展,可以实现不同的功能                 *                                         *                                         *                                              *                                *  
[单片机]
基于单片机的电脑弹簧机按键板的设计与实现
引言 电脑弹簧机是用来生产弹簧的专用设备。按键板,作为一个人机交互的操作界面,起着输入操作命令,编辑弹簧加工程序及修改数据的功能,对电脑弹簧机的操作控制起着重要作用。在实际应用中,为方便操作,需要将按键板的按键汉字化和直接化,这使得使用标准的PC键盘不太可能,所以开发一块便宜且通用的按键板就很有现实意义。在PC机中,键盘和主机的通信采用的是PS/2协议。由于电脑弹簧机的控制器是一个标准的工控PC机控制器,具有标准的键盘接口,为了使设计简单和通用,在这里使用这个标准的键盘接口,并采用PS/2协议来进行按键板和弹簧机的通信,设计时选用单片机AT89S51作为按键板的处理芯片进行按键的识别和数据的接收和发送。本文介绍的是设计并实现这个
[单片机]
基于<font color='red'>单片机</font>的电脑弹簧机按键板的设计与实现
单片机内部的存储器结构
  存储器是计算机的重要硬件之一, 单片机 存储器结构有两种类型:一种是程序存储器和数据存储器统一编址,属于普林斯顿结构,另一种是程序存储器和数据存储器分开编址的哈佛结构。 MCS-51 采用的是哈佛结构。   一、存储器具有的特点   程序存储器和数据存储器截然分开,各有自己的寻址系统,控制信号和特定的功能。程序存储器只存放程序和始终要保留的常数,数据存储器通常用来存放程序运行中所需要的大量数据。 单片机中与存储器有关的名称有:程序存储器和数据存储器、内部存储器和外部存储器、字节地址和位地址。存储器有一定的容量,常把一个 8 位二进制数作基本单位,叫作字节。存储器有很多字节单元,也用二进制数来标识,叫地址。这些存储器空间
[单片机]
<font color='red'>单片机</font>内部的存储器结构
芯海单片机跑灯程序
;左右移位指令应用 ;============================================ ; filename: 跑灯.asm ; chip : csu1181b ; author : ; date : 2012-07-27 ;完整下载地址: http://www.51hei.com/f/xhpmd.rar include csu1181b.inc ;============================================ ; program start ;============================================ org 000h goto A1
[单片机]
单片机8951定时器计数模式的设置
计数原理:当P3^4或P3^5检测到外部完整的脉冲计数器会对其自身的TL加一。 代码部分: #include reg52.h #define uchar unsigned char #define uint unsigned int sbit s1=P3^0; sbit s2=P3^1; code uchar a ={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //数字模型 void delay(uint t) { uint i; while(t--) { for(i=125;i 0;i--); } } void show() {
[单片机]
<font color='red'>单片机</font>8951定时器计数模式的设置
51单片机锁存器详解
P0口作为分时复用接口,既要作为数据总线口,又要作为地址总线口 输出的低8位地址需要用8位锁存器锁存 ALE的下降沿将P0口输出的低8位地址锁存 • 对于锁存器: ○ /OE为输出使能端 § /OE有效时,三态门导通 § /OE无效时,三态门高阻(任何数据或信息都不能通过) ○ /LE为数据输入锁存信号 § /LE有效时(低电平),数据锁存在锁存器内 § /LE无效时(高电平),输入数据直通到锁存器输出端(下图绿色部分) • 当单片机与锁存器构成总线扩展电路时: ○ ALE-------/LE(或者是CP) ○ GND------/OE § ALE=1时,/LE无效,输入的地址
[单片机]
51<font color='red'>单片机</font>锁存器详解
单片机和PS2键盘通信
下图是键盘时序图,上面是PS2发送时序,下面是PS2键盘接收时序. 下面的代码是用PS2键盘控制LED显示按键编码.按住显示的是通码.放开显示的是断码.但由于断码最后8位是通码一样(不包括多位通码).所以显示一般是一样的. 单片机P3.3接PS2按口的5为时钟CLK,P3.4接PS2接口的1为数据DA TA,因为单片机初始并口输出为全1,所以数据线与时钟线都为1,而PS2发数据时,由键盘产生时钟信号与数据信号,发完数据线信号与时钟线信号都变为高. 代码如下: #include reg51.h #include intrins.h #define ESC_CO DE 0x76 //ESC键码 sbit
[单片机]
<font color='red'>单片机</font>和PS2键盘通信
STM32F0系列MCU硬件电路供电设计
对于任何IC的电源设计要求,都可以在规格书中获取到需要的信息。STM32F0系列MCU电源轨信息和要求可以在规格书第53页的Table 24看到,如下图(图一)所示。 (图一) 如上图(图一)中圈出,STM32F0系列MCU主要有VDD、VDDIO2、VDDA和VBAT四组电源轨,在(图一)中可以看出,VDD和VDDA工作电压范围使用3.3V比较适合。VDDA为模拟电源轨,设计时建议串联一个100Ω/100M的磁珠做高频噪声隔离。 而VDDIO2和VBAT可以根据外围IO电平需求选择常规的1.8V、2.5V、3V、3.3V都可以。如果没有特别需求,可以全部3.3V供电,这样电源系统就比较简单,(图一)的PD项还详细的告诉了
[单片机]
STM32F0系列<font color='red'>MCU</font>硬件电路供电设计
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved