2025中国(华东)智能家居技术创新研讨会5 广告 2025’中国电机智造与创新应用暨电机产业链交流会(春季)4 广告 第21届(顺德)家电电源与智能控制技术研讨会3 广告 2025中国电机智造与创新应用暨电机产业链交流会(华东)4 广告

二线制串行EEPROM应用

2010-12-20 14:14:38 来源:半导体器件应用网 点击:1155

1 引言
EEPROM是一种可以用电气方法在线擦除和在线编程的只读存储器,写入的数据在常温下可以保持十年,一般其擦写周期可达1万次以上。EEPROM芯片有两类接口:并行接口和串行接口。并行EEPROM相对容量大、速度快、功耗大、价格贵,但读写方法简单;串行EEPROM体积小、功耗低、价格便宜,使用中占用系统信号线少,但相对工作速度慢,读写方法稍复杂一些。对于那些需要存放有时需要改变特征代码或参数的系统,通常所需要的字节数和写入的次数不会很多,写入速度也没有太高要求,这种情况下采用串行EEPROM是非常合适的。因此串行EEPROM作为性价比比较理想的非易失存储器,在很多领域得到应用,如消费类电子产品、汽车类电子产品、办公自动化产品、通讯类电子产品、工业类电子产品等。下面以AT24C01系列为例介绍二线制串行EEPROM的使用方法。
2 二线制总线
二线制串行EEPROM通常为8脚器件,其管脚如下:
SCL:串行时钟端。这个信号用于对输入和输出数据的同步,写入串行EEPROM的数据用其上升沿同步,输出数据用其下降沿同步。
SDA:串行数据(/地址)输入/输出端。这是串行双向数据输入/输出线,这个引脚是漏极开路驱动,可以与任何数目的其他漏极开路或集电极开路的器件"线或"连接。
WP:写保护。这个引脚用于硬件数据保护功能,当其接地时,可以对整个存储器进行正常的读/写操作;当其接电源时,芯片就具有数据写保护功能。被保护部分的读操作不受影响,实际上这时被保护部分就可以作为串行只读存储器使用。
A0,A1,A2:片选或页面选择地址输入。
SCL和SDA是基本的总线操作端,操作要根据串行总线协议进行,启动位和停止位控制总线是否激活,操作总是从启动位开始,在停止位结束。串行总线协议定义只有在总线处于“非忙”状态时,数据传输才能被初始化。在数据传输期间,只要时钟线为高电平,数据线都必须保持稳定,否则数据线上的任何变化都被当作“启动”或“停止”信号。
串行总线状态定义如下图:

① 总线非忙状态(A段)
数据线SDA和时钟线SCL都保持高电平。
② 启动数据传输(B段)
当时钟线(SCL)为高电平状态时,数据线(SDA)由高电平变为低电平的下降沿被认为是“启动”信号。只有出现“启动”信号以后,其他的命令才有效。
③ 停止数据传输(C段)
当时钟线(SCL)为高电平状态时,数据线(SDA)由低电平变为高电平的上升沿被认为是“停止”信号。随着“停止”信号的出现,所有的外部操作都结束。
④ 数据有效(D段)
在出现“启动”信号以后,在时钟线为高电平状态时数据线是稳定的,这时数据线的状态就表示要传送的数据。数据线上数据的改变必须在时钟线为低电平期间完成,每位数据占一个时钟脉冲。每个数据的传输都是由“启动”信号开始,结束于“停止”信号。在“启动”与“停止”信号之间传输的数据字节数由微处理器确定,并且从理论上说字节数没有限制。
⑤ 应答信号
每个正在接收数据的EEPROM在接到一个字节的数据后,通常需要发出一个应答信号。微处理器必须产生一个与这个应答位相联系的额外的时钟脉冲。在应答时钟脉冲周期内,时钟脉冲为高电平、数据线是稳定的低电平时,数据线必须被下拉。微处理器对EEPROM完成的最后一个字节不产生应答位,但是应该给EEPROM一个结束信号。在这种情况下,EEPROM应该结束数据线的高电平状态,而使微处理器能够产生“停止”信号。注意,如果正在进行内部定时编程周期,那么将不产生应答位。
3 串行EEPROM读写操作
EEPROM读写操作有多种方式,下面说明几个主要操作。
3.1 字节编程方式
在这种方式下,微处理器发送EEPROM存储单元地址和一个字节数据至EEPROM。微处理器发出“启动”信号后,紧跟着送4位总线器件恃征编码l010和3位EEPROM芯片地址/页地址XXX以及写状态的R/W位(=0)到总线上。这表示在接收到被寻址的EEPROM产生的一个应答位后,微处理器将跟着送1个字节的EEPROM存储单元地址和要写入的l个字节数据。所以由微处理器发送的下1个字节是EEPROM存储单元的地址,并将被写入EEPROM片内的地址指针。微处理器在接收到EEPROM收到存储单元地址后又一次产生的应答位之后,微处理器才发送数据字节,并把数据写入被寻址的存储单元。EEPROM再一次发出应答信号,微处理器收到此应答信号后,便产生“停止”信号。这个“停止”信号就激活内部定时编程周期,把接收到的8位数据写入指定的EEPROM存储单元。在内部定时写入期间所有的输入都无效,一直到写入操作完成以后才能再进入新的编程周期。
3.2 读指定地址存储单元的数据
这种方式需要通过用“哑”字节写操作形式对要寻址的EEPROM存储单元进行定位。微处理器先发送EEPROM芯片地址(其中R/W=0)和EEPROM存储单元地址,并得到EEPROM的应答信号后,微处理器就应该再发送一个“启动”信号,通过发送带有R/W=l的EEPROM芯片地址进入“读当前地址存储单元数据”的方式,EEPROM产生相应的应答信号,并串行输出数据。同样在读完一帧数据后,发送非应答信号,即输入逻辑1,接着需要发送一个“停止”信号。
3.3 应答信号查询检测
因为在内部定时写周期期间EEPROM的输入无效,这就可以被用来决定写周期何时完成(这个特性可以被用来提高总线传输率以达到最大化)。一旦写命令的“停止”信号从微处理器发出,EEPROM就开始内部定时的写周期。应答信号的查询检测可以立即开始,微处理器发出“启动”信号后,紧跟着是含有写命令(R/W=0)的控制字节(即EEPROM芯片地址)。如果EEPROM写周期仍然在忙状态,那么就不会有应答信号。如果写周期结束,那么EEPROM将给出应答信号,并且微处理器可以发送下一个读或写命令。
各种读写格式如图2、图3、图4、图5、图6所示。
4 EEPROM与单片机的连接
可以将串行EEPROM的控制线通过上拉电阻直接与单片机双向I/O口线相连,仅占用两个口线。我们在一个电机速度控制中使用AT24C02保存控制参数,包括不同速度对应的PWM脉冲宽度、电机的比例调节系数等。这样这些参数在断电时也不会丢失。而且也可以对参数进行在线测试修正后保存到EEPROM中,来适应电机参数差异。下面是用MCS-51单片机汇编语言编写的几个对EEPROM操作的程序,晶振频率12MHz。
写一个字节:shout: push  b
  mov b, #8 ; bit counter
        x42:rlc a ; move bit into CY
  mov SDA, c ; output bit
  nop  ; enforce SCL low and        data setup
  setb SCL ; raise clock
  nop  ; enforce SCL high
  nop  ;
  nop  ;
  nop  ;
  clr SCL ; drop clock
  djnz b, x42 ; next bit
  setb  SDA ; release SDA for ACK
  nop  ; enforce SCL low and tAA
  nop  ;
  setb  SCL ; raise ACK clock
  nop  ; enforce SCL high
  nop  ;
  nop  ;
  nop  ;
  mov c, SDA ; get ACK bit
  clr SCL ; drop ACK clock
  pop b
  ret
读一个字节:shin: setb SDA ; make SDA an input
  push  b
  mov b, #8 ; bit count
 x43: nop  ; enforce SCL low and        data setup
  nop  ;
  nop  ;
  setb  SCL ; raise clock
  nop  ; enforce SCL high
  nop  ;
  mov c, SDA ; input bit
  rlc a ; move bit into byte
  clr SCL ; drop clock
  djnz b, x43 ; next bit
  pop b
  ret
5. 结语
二线制串行EEPROM操作简单,可以方便的在线写入或读出。而它又有占用资源少,保存数据可靠的特点。我们在电机速度控制中EEPROM的应用极大地方便了控制操作,减少了控制难度。而用它在线保存测试参数,可以消除产品初装时系统参数差异的影响,也可以消除因产品使用一段时间后系统参数变化可能带来的控制性能下降。
参考文献
[1] 窦振中.单片机外围器件手册.北京航空航天出版社,1998

本文为哔哥哔特资讯原创文章,未经允许和授权,不得转载,否则将严格追究法律责任;
Big-Bit 商务网

请使用微信扫码登陆