欢迎来到天天文库
浏览记录
ID:41033157
大小:478.00 KB
页数:14页
时间:2019-08-14
《常用串行EEPROM的编程应用》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、常用串行EEPROM的编程应用(一)作者:温正伟原载:无线电本文所提供的实例程序:cdle070002.rar EEPROM是"ElectricallyErasableProgrammableRead-only"(电可擦写可编程只读存储器)的缩写,EEPROM在正常情况下和EPROM一样,可以在掉电的情况下保存数据,所不同的是它可以在特定引脚上施加特定电压或使用特定的总线擦写命令就可以在在线的情况下方便完成数据的擦除和写入,这使EEPROM被用于广阔的的消费者范围,如:汽车、电信、医疗、工业和
2、个人计算机相关的市场,主要用于存储个人数据和配置/调整数据。EEPROM又分并行EEPROM和串行EEPROM,并行EEPROM器件虽然有很快的读写的速度,但要使用很多的电路引脚。串行EEPROM器件功能上和并行EEPROM基本相同,提供更少的引脚数、更小的封装、更低的电压和更低的功耗,是现在使用的非易失性存储器中灵活性最高的类型。串行EEPROM按总线分,常用的有I2C,SPI,Microwire总线。本文将介绍这三种总线连接单片机的编程方法。I2C总线 I2C总线(InterIntegra
3、tedCircuit内部集成电路总线)是两线式串行总线,仅需要时钟和数据两根线就可以进行数据传输,仅需要占用微处理器的2个IO引脚,使用时十分方便。I2C总线还可以在同一总线上挂多个器件,每个器件可以有自己的器件地址,读写操作时需要先发送器件地址,该地址的器件得到确认后便执行相应的操作,而在同一总线上的其它器件不做响应,称之为器件寻址,这个原理就像我们打电话的原理相当。I2C总线产生80年代,由PHLIPS公司开发,早期多用于音频和视频设备,如今I2C总线的器件和设备已多不胜数。最常见的采用I2
4、C总线的EEPROM也已被广泛使用于各种家电、工业及通信设备中,主要用于保存设备所需要的配置数据、采集数据及程序等。生产I2C总线EEPROM的厂商很多,如ATMEL、Microchip公司,它们都是以24来开头命名芯片型号,最常用就是24C系列。24C系列从24C01到24C512,C后面的数字代表该型号的芯片有多少K的存储位。如ATMEL的24C64,存储位是64K位,也就是说可以存储8K(8192)字节,它支持1.8V到5V电源,可以擦写1百万次,数据可以保持100年,使用5V电源时时钟可
5、以达到400KHz,并且有多种封装可供选择。我们可以很容易的在身边的电器设备中发现它们的身影,如电视中用于保存频道信息,电脑内存条中保存内存大小等相关信息,汽车里用于保存里程信息等等。图2 图二是ATMEL公司24C64的引脚定义图。A0-A2用于设置芯片的器件地址,在同一总线上有多个器件时,可以通过设置A0-A2引脚来确定器件地址。SDA是串行数据引脚,用于在芯片读写时输入或输出数据、地址等,这个引脚是双向引脚,它是漏极开路的,使用时需要加上一个上拉电阻。SLC脚是器件的串行同步时钟信号,如
6、果器件是使用在单片机系统中,那么SLC脚应该由单片机控制,根据单片机的程序要求产生串行同步时钟信号,控制总线的存取。WP脚是写保护脚,当这个脚接入高电平时,芯片的芯片数据均处于禁止写入状态(所禁止的地址段要看各芯片的详细资料),当把WP脚接到地线时,芯片处于正常的读写状态。当一个电路要求正常使用时是不允许程序修改EEPROM中的数据,只有在维护设置才可以修改数据,这时可以在电路上设置WP跳线或用微处理器对WP进行控制,这样只有在特定的电路状态下才可以更改到数据。 要在单片机系统中应用I2C总线
7、的EEPROM做存储设备时,先要了解I2C总线的基本驱动方法。在I2C总线空闲时,SDA和SCL应为高电平,也只有在这个条件下,微处理器才可以控制总线进行传输数据。在数据传输的刚开始时,总线要求有一个START(开始位)位做为数据开始的标识,它的要求是SCL为高时,SDA有一个从高到低的电平跳变动作,完成这个动作后才可以进行数据传输,时序图参看图三'开始'。传输数据时,只有在SCL为高电平时,SDA上的电平为有效数据。编写单片机向总线送数据程序时则可以在SCL还在低电平时,把数据电平送到SDA,
8、然后拉高SCL,这时SDA不应有电平跳变,延时后拉低SCL,再进行下一位的数据传送直到完成。在总线上读数据时也是只有在SCL为高时,SDA为有效数据。时序参看图三'保持'。传送数据完成后,总线要有一个STOP(结束位)位,来通知总线本次传输已结束,它的要求是SCL为高时,SDA有一个从低到高的电平跳变动作,正好和START位相反。在编程时要注意的是:不要在SCL为高时改变SDA的电平状态,否则可能会被误认为是停止位,而使得操作失败。图3 I2C总线在每接收完一个字节(8个二进制位)后,在第九个
此文档下载收益归作者所有