MCS-51单片机与二线制串行E2PROM的接口方法

发布者:DelightfulSmile最新更新时间:2012-02-04 来源: 微机发展 关键字:串行EEPROM  I2C总线  主器件  从器件 手机看文章 扫描二维码
随时随地手机看文章

    二线制串行E2PROM是一种非易失存储器,以其体积小、功耗低、操作灵活、性价比高、存储数据可靠等诸多优点,是单片机应用系统中非易失存储器的理想选择。但二线制串行E2PROM的操作采用I2C总线协议,而MCS-51系列单片机没有I2C接口,我们在研制“GLM-500测湿仪”时,利用MCS-51单片机的两条I/O线,通过软件产生I2C总线所要求的操作时序,可方便地实现MCS-51对二线制串行E2PROM的读写操作。

1 二线制串行E2PROM的引脚功能及基本操作时序

    图1是二线制串行E2PROM 24C01/02/04/08/16的引脚排列图。

    仅SCL和SDA端为基本的总线操作端;SCL是串行时钟输入端;SDA是串行数据输入/输出端;漏极开路输出需接上拉电阻到VDD;WP是写保护端,接高电平时,只能读出,禁止写入;A0、A1、A2是片选端,对于24C01/02/04/08/16,内部无连接,可接至VSS。

    I2C总线协议运用主/从双向通讯。发送数据到总线上的器件定义为发送器,接收数据的器件定义为接收器。主器件和从器件都可工作于接收器和发送器状态,但总线必须由主器件(通常为微处理器)控制,主器件产生串行时钟(SCL),控制总线上数据传送的方向,并产生开始和停止信号。

    总线从主器件产生开始条件后到产生停止条件期间有效,微处理器对串行E2PROM的读写操作在开始位控制下开始,在停止位控制下结束。

    当SCL和SDA均为高电平时,定义为总线空闲状态,数据的传送必须在总线空闲时才能开始。当SCL为高电平时,SDA由高到低的变化为传送数据的开始位;而当SCL为高电平时,SDA由低到高的变化为停止位。在开始条件以后,SDA上数据的改变必须在SCL为低电平期间进行,在SCL为高电平期间, SDA必须保持稳定。每传送一位数据,主器件必须发出一个时钟脉冲。开始与停止条件如图2所示。

  一次读操作读出的字节数由主器件决定,没有限制,多到一次可以读出整个存储器的内容;而对于写操作,一次最多可以写入一个页面的字节数,如果超过了节),则前面接收到的数据将被覆盖。

    数据传送过程中,每接收一个数据,接收器必须产生一个低电平的确认信号,主器件必须产生一个与此确认位相应的时钟脉冲。

    开始位以后,主器件需送出8位的控制字节,其格式请参考有关的文献。

2 接口方法

  MCS-51系列单片机由于没有I2C总线接口,可利用两条I/O线P1.0和P1.1分别连至串行E2PROM的SCL和SDA端,通过软件产生E2PROM所要求的读写时序,MCS-51系列单片机与24C04的硬件连接如图3所示。

3 读写程序

  MCS-51系列单片机对二线制串行E2PROM读写时,必须产生开始位,发送控制字节,控制数据传送,产生停止位。按照图3的连接,MCS-51系列单片机对24C04的读写程序如下:

    ①字节读子程序

    入口条件:R0中存放块内写入单元的地址;R1中存放待写入的数据;R2中存放控制字节。
BYWR:SETBP1.0  ;产生开始位

          CLRP1.1

          CLRP1.0
          MOV A,R2  ;发送控制字节

          LCALLSBWR

          SETBP1.1

          SETBP1.0

          NOP
          JBP1.1,BYWR
            ;判有无确认信号,接收器没确认重新开始[page]

          CLRP1.0
          MOV A,R0  ;发送块内写入字节地址

          LCALLSBWR

          SETBP1.1

          SETBP1.0
          JBP1.1,$  ;判确认信号
          CLRP1.0
          MOV A,R1  ;发送写入数据

          LCALLSBWR

          SETBP1.1 

          SETBP1.0
          JBP1.1,$  ;判确认信号  

          CLRP1.0
          CLRP1.1  ;产生停止位

          SETBP1.0

          SETBP1.1

          CLRP1.0

        RET

    ②字节写子程序

    入口条件:R0中存放块内读出字节的地址;R2中存放控制字节,其最低位为0。
返回结果:读出的数据存于R1中。
    BYRD:SETBP1.0  ;产生开始位

          CLR P1.1

          CLR P1.0
          MOV A,R2  ;发送控制字节

          LCALLSBWR

          SETBP1.1

          SETBP1.0

          NOP
          JBP1.1,BYRD
              ;判确认信号,接收器未确认重新开始

          CLR P1.0
          MOV A,R0  ;发送块内读出字节地址

          LCALLSBWR

          SETBP1.1

          SETBP1.0
          JBP1.1,$  ;判确认信号

          CLR P1.0  ;产生读开始位

          SETBP1.0

          CLR P1.1

          CLR P1.0
          MOV A,R2  ;发送控制字节

          SETBACC.0LCALLSBWR

          SETBP1.1

          SETBP1.0
          JBP1.1,$  ;判确认信号

          CLR P1.0
         MOV R7,#8  ;接收8位数据

BYR1:SETBP1.0

      MOV C,P1.1

      RLC ACLRP1.0

   DJNZR7,BYR1

   CLRP1.1
   SETBP1.0  ;产生停止位

      SETBP1.1

      CLRP1.0

      MOV R1,A

    RET
      SBWR:MOV R7,#8

      SB1: RLC A
            MOVP1.1,C

            SETBP1.0
            CLRP1.0

            DJNZR7,SB1

            RET

    以上子程序对二线制串行E2PROM读写可靠,提供入口条件后可直接调用,此外,串行E2PROM还可进行顺序读和页面写,限于篇幅,不再列出其程序。

[参考文献]

[1] 武汉力源单片机技术研究所.CMOS串行E2PROM原理及应用[M].

关键字:串行EEPROM  I2C总线  主器件  从器件 引用地址:MCS-51单片机与二线制串行E2PROM的接口方法

上一篇:单片机与PC机之间并行通讯的一种实现方法
下一篇:单片机在红外测温上的开发应用

推荐阅读最新更新时间:2024-03-16 12:52

单片机的I2C总线扩展和I2C虚拟技术
1 I2C总线的基本概念及一般特征 在单片机应用系统中,要处理的数据不仅很多,而且很重要时,通常的做法是用并行口扩展单片机外部数据存储器芯片。近年来,随着半导体技术的不断发展,陆续出现了一些新的数据要求非常严格的芯片,比较典型的有基于I2C总线接口的24系列,基于SPI总线的25系列,以及并行总线接口的28系列,29系列,这些芯片的特点是芯片掉电后数据不会丢失,数据可以保存几年、甚至几十年,这些芯片采用I2C、SPI或Microwire串行总线协议,与单片机接口通常仅占用2~4个I/O口,可以最大限度地节省单片机的资源,并且数据可以反复擦写。 I2C总线采用二线传输,即SDA串行数据线和SCL串行时钟,在总线上
[单片机]
单片机的<font color='red'>I2C总线</font>扩展和I2C虚拟技术
STM32 I2C总线 自我总结学习
现在打算彻底搞清楚STM32的I2C总线通信----首先是对AT24C02的读写----手上有PCF8574的IO扩展芯片,也是I2C协议的,希望实现多个控制! STM32的I2C有自带的硬件驱动,也可以使用GPIO模拟-----先总结一下硬件驱动下的问题。 ----------------------------------硬件下-----以AT24C02与PCF8574为例--------------- ------第一部分是简单宏定义------- #define I2C_Speed 300000 //传输速率--挂载原件多时要求降低速率,自己在调试过程中出现过这样问题 #define I2C1_OWN
[单片机]
STM32 <font color='red'>I2C总线</font> 自我总结学习
I2C总线的基本操作
  I2C总线上只具有SOL(时钟)和SDA(数据)2根信号线。如果是单纯的串行传输,一旦因为某种原因造成引脚的偏差,则可能会造成不能区分总线上传输的是数据还是地址信息的后果。解决上述问题的简单办法就是附加独立于总线的Reset(复位)信号,由主机控制该信号。因为I2C至少利用2根线进行所有的操作,因此在数据传输时,通常当SCL为低电平时,设置下一个数据;当SDA变化后,SCI为高电平,这可以解释为一连串操作的开始/结束。 1. 起始条件 始条件表示一系列操作的开始。图1表示起始条件以及随后数据传输的开始操作。在I2C总线的空闲状态下,SDA及SCL通过上拉电阻都为高电平。在这样的状态下,如果SCL仍保持高电平,而
[嵌入式]
基于I2C串行通信的EEPROM在电视中的设计应用
1 前言 近年来,数字化电视技术迅猛发展,特别是遥控系统的面市,各厂商在电视机中加人微处理器(MCU),各种人工智能化彩电完全替代了老式电视手动(机械式)控制和记忆方式。随着电视专用MCU功能日益强大,用户使用的功能日趋丰富,所需存储的数据和刷新速度不断提高,先后涌现出各种型号和规格的存储器。目前,电视机中应用最为广泛的是E2PROM。   因为E2PROM保存着大量与电视机工作状态密切相关的数据,其可靠性就遥控电视而言至关重要,视为第二核心器件。E2PROM与第一核心器件 (MCU)保持通信,并存储电视机的工作信息。有时由于存储数据的丢失造成重大损失,甚至导致数据无法修复。因此,在电视系统中,对于系统数据和用户数据的存
[家用电子]
基于I2C<font color='red'>串行</font>通信的<font color='red'>EEPROM</font>在电视中的设计应用
基于I2C总线的处理器的联网设计方案
    随着微控制器的价格越来越低,功能越来越强大,电气设计人员发现在单板和多板系统中都使用多个小型控制器是一种更加经济高效的方法。这种辅助处理器能够减轻主处理器在耗时任务上面的处理开销,例如扫描键盘、显示控制器和电机控制。这些控制器也可以配置为各种各样的专用外设。   最近,我接受了一项任务:开发一种能够方便地适用于多种应用的接口(软/硬件),且要符合嵌入式处理器中常用的行业标准。在分析了一些典型应用之后,我们列出了一些针对该硬件接口的设计需求:常用于32位和8位处理器;能够得到常用外设器件的支持;外设接口代码量低于0.5kB;引脚数量少;数据带宽可达10kBps;RAM用量少;一条总线上支持多种外设;方便使用API;不需要外部
[嵌入式]
I2C总线C语言源程序
/*VIICC.H*/ #pragma db cd small #include intrins.h #include reg52.h #define NOP nop ( ); nop ( ); nop ( ); nop ( ) #define SDA P1^7 #define SCL P1^6 void sta( ); void cack( ); void stop( ); void mnack( ); void mack( ); void wrbyt(uchar shu); void wrnbyta(uchar slaw,uchar gg ,uchar n); void wrnbyt(uchar slaw,uchar
[单片机]
PIC单片机之I2C总线
大家好,通过前一期的学习,我们已经对ICD2 仿真烧写器和增强型PIC 实验板的使用方法及学习方式有所了解与熟悉,学会了如何用单片机来控制发光管、继电器、蜂鸣器、按键、数码管、RS232 串口、步进电机、温度传感器等资源,体会到了学习板的易用性与易学性,看了前几期实例,当你实验成功后一定很兴奋,很有成就感吧!现在我们就趁热打铁,再向上跨一步,一起来学习一下I2C 总线的工作原理及使用方法,这样我们可以将一些我们要保存的数据存储到I2C总线的非易失存储器中,实现断电保持的功能,比如:你设置了一个密码,但不至于这个设备断过电以后就要重新设置过,我们可以将密码数据写在非易失存储器里面,还有如汽车的量程表的读数是不断累计的,可以通过不断访
[单片机]
PIC单片机之<font color='red'>I2C总线</font>
利用数字示波器调试嵌入式I2C总线
I2C总线是PHLIPS公司上世纪80年代推出的一种两线式串行总线,最初为音频、视频设备所开发,如今则多在各种嵌入式系统中用于连接微控制器及其外围设备。 I2C总线仅需采用两根通信线(一根为串行数据线“SDA”,一根为串行时钟线“SCL”),而传输速率在高速模式下可达3.4Mbit/s,并且是多主总线。每一个挂接在I2C总线上的I2C器件均可通过唯一的地址进行访问。 在嵌入式系统开发中应用I2C总线可有效缩减元器件面积、改善抗干扰能力及增强设计的兼容性。当然,在享受其设计便利性的同时,信号的复杂性也将提高系统调试的难度。 本文阐述了在实际开发中所遇到的I2C通信问题及使用示波器分析问题和解决问题的方法。 分析过程中
[嵌入式]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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