0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

AT24C02的引脚功能和在Keil C中的程序编写步骤

电子设计 来源:现代电子技术 作者:卢旭锦 2020-09-22 17:30 次阅读

AT24C02是美国Atmel公司的低功耗CMOS型E2PROM,内含256×8位存储空间,具有工作电压宽(2.5~5.5 V)、擦写次数多(大于10 000次)、写入速度快(小于10 ms)、抗干扰能力强、数据不易丢失、体积小等特点。而且他是采用了I2C总线式进行数据读写的串行器件,占用很少的资源和I/O线,并且支持在线编程,进行数据实时的存取十分方便。

1 AT24C02的引脚功能

AT24C02引脚如图1所示。

AT24C02的引脚功能和在Keil C中的程序编写步骤

他的的1、2、3脚是3根地址线,用于确定芯片硬件地址。第8脚和第4脚分别为正、负电源。第5脚SDA为串行数据输入/输出,数据通过这根双向I2C总线串行传送。第6脚SCL为串行时钟,SDA和SCL为漏极开路端,在实际的应用当中都需要和正电源间各接一个5.1 kΩ的电阻上拉。第7脚为WP写保护端,接地时允许芯片执行一般的读写操作;接正电源时只允许对器件进行读操作。

2 AT24C02的内部结构

图2为AT24C02的内部结构图。

启动、停止逻辑单元 接收数据引脚SDA上的电平信号,判断是否进行启动和停止操作串行控制逻辑单元 根据SCL,SDA电平信号以及“启动、停止逻辑”部件发出的各种信号进行区分,并排列出有关的“寻址”、“读数据”和“写数据”等逻辑,将他们传送到相应的操作单元。例如:当操作命令为“寻址”时候,他将通知地址计数器加1,并启动“地址比较”器进行工作。在“读数据”时,他控制“Dout/确认逻辑”单元;在“写数据”时候,他控制“高压泵/定时”电路,以便向E2PROM电路提供编程所需要的高电压。

地址/计数器单元 产生访问E2PROM所需要的存储单元的地址,并将其分别送到X译码器进行字选,送到Y译码器进行位选。

高压泵/定时单元 由于E2PROM数据写入时候需要向电路施加编程高电压,为了解决单一电源电压的供电问题,芯片生产厂家采用了电压的片内提升电路。电压的提升范围一般可以达12~21.5 V。

Dout/确认逻辑单元 地址和数据均以8位二进制码串行输入/输出。数据传送时,每成功传送一个字节数据后,接收器都必须产生一个应答信号。在第9个时钟周期时将SDA线置于低电压作为应答信号。

AT24C02中带有的片内地址寄存器。每写入或读出一个数据字节后,该地址寄存器自动加1,以实现对下一个存储单元的读写。所有字节均以单一操作方式读取。为降低总的写入时间,一次操作可写入多达8个字节的数据。

I2C总线是一种用于IC器件之间连接的二线制总线。他通过SDA(串行数据线)及SCL(串行时钟线)两根线在连到总线上的器件之间传送信息,并根据地址识别每个器件。 AT24C02正是运用了I2C规程,使用主/从机双向通信,主机(通常为单片机)和从机(AT24C02)均可工作于接收器和发送器状态。主机产生串行时钟信号(通过SCL引脚)并发出控制字,控制总线的传送方向,并产生开始和停止的条件。无论是主机还是从机,接收到一个字节后必须发出一个确认信号ACK。

AT24C02的控制字由8位二进制数构成,在开始信号发出以后,主机便会发出控制字,以选择从机并控制总线传送的方向。控制字各位的具体作用见表1。

由上表可知,控制字的高4位为AT24C02的识别位,是不能更改的;而第A0,A1,A2片选位,最后是一位是读写控制位,当其为1时,进行的是读操作,反之将要进行的是写操作。

3 AT24C02的读写操作

3.1 开始位、停止位和确认位的编程

总线SCL和SDA一般由上拉电阻拉为高电平,只有在SCL为低电平的周期内,SDA引脚上的数据才有效。而当SCL为高电平期间SDA引脚上产生的电平变化则表示I2C总线工作的“开始”或“停止”两种状态:当SCL为高平时,SDA由高电平转向低电平时表示“开始”状态,而由低电平转向高电平时表示“停止”状态,其时序如图3所示。

由时序图可以编写由主机发给AT24C02的开始信号和停止信号的KEIL C语言函数如下:

同时,AT24C02与主机进行信息交换,还需要另外一个“确认信号(ACK)”的状态。I2C总线数据传送时,每成功地传送一个字节数据后,AT24C02都必须产生一个应答信号,应答的器件在第9个时钟周期时将SDA线拉低,表示其已收到一个8位数据。AT24C02在接收到起始信号和与之匹配的地址之后就会响应第一个应答信号;如果AT24C02被设置为写操作,则每接收一个字节之后响应一个应答信号;当AT24C02被设置在读模式时,则在发送一个字节的数据后会释放SDA线,并监视主机发过来的应答信号,一旦接收到应答信号,AT24C02继续发送数据,如主机没有发送应答信号,AT24C02将停止传送数据并等待一个停止信号,此时主机必须发送一个停止信号给AT24C02,使其进入备用电源模式并使AT24C02处于已知的状态。由此可见,应答信号在AT24C02的读写工作中经常用到,根据图4应答信号的时序图。

可以编出一个检验是否有应答信号送来的操作函数如下:

3.2 写操作

AT24C02允许有两种写操作方式:字节写和页写。

3.2.1 AT24C02字节写操作。

其操作时序如图5所示。在字节写模式下,主机发送开始命令和AT24C02地址信息(“R/W”位置0)给AT24C02,主机在收到AT24C02产生应答信号后发送1个字节地址写入AT24C02的地址指针。主机在收到从器件的另一个应答信号后,再发送数据到被寻址的存储单元。AT24C02再次应答,并在主机产生停止信号后开始内部数据的擦写。在内部擦写过程中,AT24C02不再应答主机的任何请求。根据图5则可以编写出AT24C02的字节写操作函数W1Byte如下:

3.2.2 AT24C02页写操作

AT24C02允许每次写入8个字节的页写操作模式,页写操作和字节写操作的时序差不多都相同,不同的是在于传送了一字节数据后并不产生停止信号,主机被允许再发送7个额外的字节。每发送一个字节数据后,AT24C02产生一个应答位。如果在发送停止信号之前,主机发送超过8个字节,AT24C02内部地址计数器将自动翻转,先前写入的数据被覆盖。接收主机发送的停止信号后,AT24C02启动内部写周期将数据写到数据区。因此,可以编写一个页写操作的函数如下:

3.3 读操作

AT24C02的读操作主要有立即地址读取、随机地址读取和顺序地址存取3种。立即地址读取方式由一个空字节序列来加载数据地址,当从机寻址码和数据寻址码随钟输入,并被确认时,从机必须产生另一个开始状态,通过发出一个确认读取的信号之后,数据便随时钟串行输出,数据的读取不通过确认状态应答,而是通过一个停止状态来应答。其他两种方式基本类似,只是不需要产生另一个开始状态,而顺序地址读取时,读出的是连续数据。读操作的时序图类似于图4的写操作时序,因此可编出读一个字节的函数RlByte如下:

当然,对于AT2402的读取往往不是只一个字节,更多的时候还是想一连几个字节一起读取,因此,可编出连续读取N个字节的函数如下:

4 综合应用举例

以图6所示硬件电路为例,调用上面所编写的函数,将数据00H~07H送到AT24C02内部首地址为10H的地方存放,并将AT24C02内部以20H为首地址的连续8个字读到AT89C51的内部RAM20H~27H存放。其主程序如下:

其实,AT24CXX系列的E2PROM芯片很多,但其编程不尽相同。由于C语言的编程要精准控制时间很不容易,因此往往有些工程人员碰到类似的I2C硬件结构,大多采用C语言与汇编语言混合编程的方法。经过一番实践之后,觉得上述所编写的函数几乎可以用到所有I2C结构的硬件,只需要大家花一点时间调试下DELAY函数的时间就可以了。

责任编辑:gt

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 寄存器
    +关注

    关注

    30

    文章

    5025

    浏览量

    117702
  • 编程
    +关注

    关注

    88

    文章

    3439

    浏览量

    92371
  • 译码器
    +关注

    关注

    4

    文章

    310

    浏览量

    49897
收藏 人收藏

    评论

    相关推荐

    AT24C02只读存储器各引脚功能及管脚电压

    AT24C02只读存储器各引脚功能及管脚电压概述:AT24C02 它具有二线串行接口、双向数据传输协议、8 字节页面写模式、允许写部分页面、自定时写周期、内部结构 256X8(2K)、
    发表于 10-10 14:52

    基于Keil CAT24C02串行E2PROM的编程

      基于Keil CAT24C02串行E2PROM的编程AT24C02是美国Atmel公司的低功耗CMOS型E2PROM,内含256×8位存储空间,具有工作电压宽(2.5~
    发表于 08-18 17:13

    AT24C02 51单片机使用

    AT24C02 51单片机程序编写
    发表于 03-07 16:02

    AT24C02的使用

    在I2C总线这块,使用AT24C02作为存储器,作用就是存储密码,但是不是很理解其中说的器件地址是啥意思,目前就是一个AT24C02与单片机连接,求大神给我说说在存储密码这块,AT24C02
    发表于 05-14 17:36

    51单片机接AT24C02模拟I2C总线问题

    我用51单片机接AT24C02模拟I2C总线,编写程序的时候其中向AT24C02写入一个字节这个函数,如下:void WriteByte(uchar dat){ uchar i,tem
    发表于 09-17 14:16

    at24c02的应用的程序

    i2c协议是由一根时钟线和一根数据线进行传输,根据时序,以下模块化的程序既是总结,也可以之际直接进行调用at24c02芯片是可擦除可掉电保持的芯片void I2cStart(){SDA=1
    发表于 06-17 16:06

    AT24C02芯片工作原理是什么

    AT24C02芯片工作原理在IIC通信时,一般有写和读两种操作,我们用AT24C02来具体讲解。AT24C02芯片工作原理AT24C02芯片是以IIC接口的EEPROM器件。所谓EEP
    发表于 07-29 09:04

    配置STM32的IIC硬件时序读写AT24C02和AT24C08

    时序的,本文采用的是模拟时序,下篇文章就介绍配置STM32的IIC硬件时序读写AT24C02和AT24C08。模拟时序更加方便移植到其他单片机,通用性更高,不分MCU;硬件时序效率更高,单每个MCU配置方法不同,依赖硬件本身支持。目前器件: 采用
    发表于 12-08 06:27

    AT24C02的相关资料推荐

    AT24C02(I2C总线)_AT24C02数据存储&秒表(定时器扫描按键数码管)小白极客的51单片机笔记(自用)第一部分—存储器介绍第二部分—AT24C02存储芯片介绍第三部分—I2
    发表于 12-10 06:15

    AT24C02的特性与引脚描述

    、施密特触发器、噪声抑制用于硬件数据保护的写保护引脚8字节页(1K, 2K)允许部分页写写周期(最大5ms)描述AT24C02提供2048位的电可擦和可编程只读存储器(EEPROM)组织为256, 8位字。该装置经过优化,可用于许多工业和商业应用。
    发表于 01-19 06:20

    怎样去编写HT32F5232利用I2C读写AT24C02程序

    怎样去编写HT32F5232利用I2C读写AT24C02程序呢?
    发表于 01-27 06:26

    怎样去编写AT24C02的代码程序

    AT24C02程序bit write=0;***it SDA=P2^0;***it SCL=P2^1;void delayus(){;;}void start(){SDA=1;delayus
    发表于 02-14 07:41

    基于51/STM32与AT24C02模块的K023测试

    K023基于51/STM32AT24C02模块测试 OLED0.96显示读写值一.实现功能二.硬件清单三.资料清单程序代码文档资料四.模块简介1.基本参数2.引脚说明五.接线基于STM
    发表于 02-18 07:54

    AT24C02引脚功能及管脚电压

    AT24C02引脚功能及管脚电压 概述:AT24C02 它具有二线串行接口、双向数据传
    发表于 10-10 14:53 1.9w次阅读
    <b class='flag-5'>AT24C02</b>各<b class='flag-5'>引脚</b><b class='flag-5'>功能</b>及管脚电压

    Linux驱动开发-编写(EEPROM)AT24C02驱动

    系统里如何编写AT24C02的驱动,并且在应用层完成驱动读写测试,将AT24C02的存储空间映射成文件,在应用层,用户可以直接将AT24C02当做一个普通文件的形式进行读写,偏移文件指
    的头像 发表于 09-17 15:29 3005次阅读
    Linux驱动开发-<b class='flag-5'>编写</b>(EEPROM)<b class='flag-5'>AT24C02</b>驱动