AT24C02操作方法及程序(含时序图)

合集下载

I2C总线协议AT24c02程序

I2C总线协议AT24c02程序

I2C总线协议(AT24c02)程序主:STC89C54从:AT24C02电路图时序图下面是代码#include ;#define uchar unsigned char#define addr_x 0xae//写#define addr_d 0xaf//读sbit sda = P2^1;//数据管脚sbit scl = P2^0;//时钟管脚bit ack;void DelayUs2x(unsigned char t)//延时1{while(--t);}void DelayMs(unsigned char t)//延时2{ while(t--){ //大致延时1mS DelayUs2x(245); DelayUs2x(245);}}void delay() //延时大于4μs{;;}void i2_qs()//起始信号{sda = 1;//拉高数据scl = 1;//拉高时钟delay();//延时大于 4μssda =0;//拉低数据产生起始信号(下降沿)delay();//延时大于 4μsscl = 0;//拉低时钟delay();//延时大于4μs}void i2_tz()//停止信号{sda = 0;//拉低数据scl = 1;//拉高时钟delay();//延时大于 4μssda = 1;//拉高时钟产生结束信号(上升沿)delay();//延时大于4μs}void i2_ack(bit _ack)//入口产生 0 ack 1nak{sda = _ack;//ack或者nakscl = 1;//拉高时钟delay();//延时大于 4μsscl = 0;//拉低时钟delay();//延时大于 4μs}void i2_fs(uchar Data) //发送8位数据{uchar i;for(i=0;i<8;i++)//8位计数{Data <<= 1;//把最高位移送到进制标志位中(CY)sda = CY;//把进制位中的数据赋值给数据线scl = 1;//拉高时钟delay();//延时大于 4μsscl = 0;//拉低时钟//这里}//下面代码是接收ACK的代码delay();//延时大于4μssda = 1;//拉高数据准备接收ACKscl = 1;//拉高时钟产生稳定的有效的数据(相对的)if(sda==1)//确认接收的是ACK还是NAKack = 0;//ackelseack = 1;//nakscl = 0;//拉低时钟delay();//延时大于 4us}uchari2_js()//接收8位数据{uchar i,Data = 0;sda = 1;//使能内部上拉,准备读取数据for(i=0;i<8;i++)//8位计数器{Data <<= 1;//移出数据的最高位scl = 1;//拉高时钟delay();//延时大于 4usData |= sda;//接收数据scl = 0;//拉低时钟delay();//延时大于 4us}return Data;}void i2_sj_x(uchar addr,uchar Data)//往设备内写入数据(参数 1、寄存器地址 2、写入的数据){i2_qs();//起始信号i2_fs(addr_x);//设备地址+写信号i2_fs(addr);//寄存器内部地址i2_fs(Data);//写入设备的数据i2_tz();//停止信号}uchar i2_sj_d(uchar addr)//读取数据(参数寄存器地址){ucharData;i2_qs();//起始信号i2_fs(addr_x);//设备地址+写信号i2_fs(addr);//寄存器内部地址i2_qs();//起始信号i2_fs(addr_d);//设备地址+读信号Data =i2_js();//读取数据i2_ack(0);//ACK应答i2_tz();//停止信号return Data;//返回读取的数据}voidmain(void){uchar dat;i2_sj_x(3,0x0f); //数据写入24c02DelayMs(50);dat = i2_sj_d(3); //从24c02中读取数据P1 = dat;//使用8个LED显示读出的数据while(1){;}}以上代码只是简单的实现I2C总线的读写。

AT24C02EEPROM读写程序

AT24C02EEPROM读写程序

;--------------------------------------------------------------------------------------------------------------------- ;本程序是针对AT89S52单片机编制的EEPROM读写程序(2013.8.4测试通过);本程序在4MHZ、12MHZ和24MHZ分别测试通过;AT24C02的A0、A1、A2均接GND,设备地址高7位为(1010)000;WP接GND,充许对EEPROM正常读写;本程序仅作学习交流之用。

;--------------------------------------------------------------------------------------------------------------------- SCl equ P2.0 ;SCL接A T89S52的P2.0端口,作为EEPROM的串行输入时钟SDA equ P2.1 ;SDA接AT89S52的P2.1端口,作为主机与EEPROM之间信息串行传输总线WRITEDATA equ 08H;拟写入EEPROM的数据在主机中的存贮单元地址READDATA equ 09H ;从EEPROM读取的数据存放到主机存贮单元地址EPROMADDRESS equ 0AH;拟随机读写EEPROM的存贮单元地址;------------------------------------------------ORG 00HLJMP MAIN;------------------------------------------------ORG 50HMAIN: MOV SP,#20H;防止堆栈影响已用内存数据;以下为写EEPROM过程mov EPROMADDRESS,#09H;该地址可以随意输入(00H~FFH),但读和写的地址须相同MOV WRITEDA TA,#01010010B;该数字可以随意输入,并将读和写的数据进行比较;如读数正确则按将读出数据在P1口输出,可在P1口各位分别接LED灯直观显示出来。

24c02读写程序

24c02读写程序

E2PROM芯片24C02的读写程序一、实验目的:给24C02的内部RAM写入一组数据,数据从24C02内部RAM的01h开始存放。

然后再把这组数据读出来,检验写入和读出是否正确。

在这里我们给24C02中写入0、1、2的段码,然后把它读出来,送到数码管显示。

二、理论知识准备:上面两个实验主要学习的是利用单片机的串口进行通讯,本实验要介绍的是基于I2C总线的串行通讯方法,下面我们先介绍一下I2C总线的相关理论知识。

(一)、I2C总线概念I2C总线是一种双向二线制总线,它的结构简单,可靠性和抗干扰性能好。

目前很多公司都推出了基于I2C总线的外围器件,例如我们学习板上的24C02芯片,就是一个带有I2C总线接口的E2PROM存储器,具有掉电记忆的功能,方便进行数据的长期保存。

(二)、I2C总线结构I2C总线结构很简单,只有两条线,包括一条数据线(SDA)和一条串行时钟线(SCL)。

具有I2C接口的器件可以通过这两根线接到总线上,进行相互之间的信息传递。

连接到总线的器件具有不同的地址,CPU根据不同的地址进行识别,从而实现对硬件系统简单灵活的控制。

一个典型的I2C总线应用系统的组成结构如下图所示(假设图中的微控制器、LCD驱动、E2PROM、ADC各器件都是具有I2C总线接口的器件):我们知道单片机串行通讯的发送和接收一般都各用一条线TXD和RXD,而I2C总线的数据线既可以发送也可以接受,工作方式可以通过软件设置。

所以,I2C总线结构的硬件结构非常简洁。

当某器件向总线上发送信息时,它就是发送器,而当其从总线上接收信息时,又成为接收器。

(三)、I2C总线上的数据传送下面我们看看I2C总线是如何进行数据传送的。

我们知道,在一根数据线上传送数据时必须一位一位的进行,所以我们首先研究位传送。

1、位传输I2C总线每传送一位数据必须有一个时钟脉冲。

被传送的数据在时钟SCL的高电平期间保持稳定,只有在SCL低电平期间才能够改变,示意图如下图所示,在标准模式下,高低电平宽度必须不小于4.7us。

I2C总线at24c02芯片使用说明

I2C总线at24c02芯片使用说明

3.2.5 密码储存电路密码储存电路采用I2C总线at24c02存储芯片存放密码,可实现断电密码不消失,at24c02存储芯片可长期存储信息,可上百万次以上重新擦写。

图3-5 密码储存电路2.4.3 I2C总线密码存储芯片at24c02介绍图2-3 at24c02引脚图(1)引脚功能介绍及相关知识WP:写保护引脚,将该引脚接VCC,E2PROM就实现写保护(只读)。

引脚接地或悬空,可以对器件进行读写操作。

SCL:串行时钟引脚,串行输入输出时该引脚用于输入时钟。

SDA:串行数据输入输出引脚,用来输入输出数据,该引脚为射极开路输出,需接上拉电阻。

(2)I2C总线协议只有总线非忙时才被允许进行数据传送,在传送时,当时钟线为高电平,数据线必须为固定状态,不允许有跳变。

时钟线为高电平时数据线的任何电平变化将被当作总线的启动或停止条件。

(3)起始条件起始调教必须在所有操作命令之前发送。

时钟线保持高电平期间,数据线电平从高到低跳变作为I2C总线的启动信号。

CAT24Cxxx一直监视SDA和SCL电平信号,直到条件满足时才响应。

(4)停止条件时钟线保持高电平期间,数据线电平从低到高跳变作为I2C总线的停止信号。

(5)器件地址的约定主器件在发送启动命令后开始传送数据,主器件发送相应的从器件地址,8位从器件地址的高四位固定为1010,接下来的3位用来定义存储器的地址,对于CAT24C021/022,这三位无意义,对于CAT24C41/042,接下来的2位无意义,第三位是地址高位,CAT24C081/082中,第一位无意义,后两位表示地址高位。

最后一位为读写控制位,“1”表示对从器件进行读写操作,“0”表示写操作。

在主器件发送启动命令和一字节从器件地址后,如果与从器件地址吻合,CAT24C02将发送一个应答信号,然后再根据读/写控制为进行读或写操作。

(6)应答信号每次数据传送成功后,接收器件将发送一个应答信号。

当第九个时钟信号产生时,产生应答型号的器件将SDA下拉为低,通知已经接受到8位数据,接收到起始条件和从器件地址后,CAT24C02发送一个应答信号,如果为写操作,每接收到一个字节数据,CAT24C02发送一个应答信号。

AT24C02使用手册

AT24C02使用手册

7 1 2 3
AT24 C0 2
A)
图9-1 AT24C02引脚及应用电路
B) A)芯片引脚 B)应用电路
4
(1)引脚功能 图9-1 A) 为AT24C02芯片DIP封装引脚图,其中:
SAD、SCL:IC总接口;A2~A0:地址引脚; TEST:测试端,高电平有 效;VDD、VSS:电源端和接地端。 (2)电路设计 图9-1 B)为AT24C02应用电路,AT24C02的SDA和SCL 端分别接 AT89S52虚拟IC总线接口VSDA和VSCL端, TEST端接地,A2、A1、A0 可作为多片AT24C02寻地位,若只用一片AT24C02,A2、A1、A0接地 。
第13章 24c02应用
特性
CAT24WC01 /02/04/08/1 6 1 K/2K/4K/8K/ 6K 位串行E PROM
特性 与 400KHz I 2 C总线兼容 工作电压范围1.8-- 6.0伏
低功耗 CMOS技术 写保护功能 当 WP为高电平时进入写 保护状态 页写缓冲器 自定时擦写周期 1,000,000 /编程 擦除周期 可保存数据 100年 8脚 DIP或 SOIC TSSOP封装 温度范围 -55 +125 商业级 工业级和汽车级
概述
3
4
IC总线EPROM芯片AT24C02
5V
5 .1 k
5 .1 k
P1.1
VSDA 1 2 3 4 A0 A1 A2 VSS VDD TEST SCL SDA 8 7 6 5 VSCL
SDA
V SS V D D
5
8
P1.0
AT89 A0 A1 A2 AT24 C0 2
B) A)芯片引脚 B)应用电路

I2C总线芯片AT24C02程序设计

I2C总线芯片AT24C02程序设计

I2C总线芯片AT24C02程序设计AT24C02是一种常见的I2C总线芯片,具有2K字节的存储空间。

在程序设计方面,主要需要考虑以下几个方面:初始化、读取数据、写入数据。

首先,需要考虑的是初始化芯片。

在初始化过程中,主要有两个关键的步骤,一个是设置I2C总线的速率,另一个则是设置芯片地址。

以下是AT24C02初始化的伪代码:```void init_AT24C0//设置I2C总线速率i2c_set_speed(I2C_SPEED);//设置AT24C02芯片地址i2c_write_byte(AT24C02_ADDR);if (!i2c_check_ack()//错误处理机制}```在初始化完成后,就可以进行数据的读取和写入。

以下是读取数据的伪代码:```uint8_t read_AT24C02(uint16_t addr)//发送开始信号i2c_start(;//发送芯片地址和写入模式i2c_write_byte(AT24C02_ADDR , I2C_WRITE); if (!i2c_check_ack()//错误处理机制}//发送要读取的地址高位和低位i2c_write_byte(addr >> 8);if (!i2c_check_ack()//错误处理机制}i2c_write_byte(addr & 0xFF);if (!i2c_check_ack()//错误处理机制}//发送重新开始信号i2c_restart(;//发送芯片地址和读取模式i2c_write_byte(AT24C02_ADDR , I2C_READ);if (!i2c_check_ack()//错误处理机制}//读取数据uint8_t data = i2c_read_byte(;//发送停止信号i2c_stop(;//返回读取到的数据return data;```以上是读取数据的伪代码,对应地,写入数据的伪代码如下:```void write_AT24C02(uint16_t addr, uint8_t data)//发送开始信号i2c_start(;//发送芯片地址和写入模式i2c_write_byte(AT24C02_ADDR , I2C_WRITE);if (!i2c_check_ack()//错误处理机制}//发送要写入的地址高位和低位i2c_write_byte(addr >> 8);if (!i2c_check_ack()//错误处理机制}i2c_write_byte(addr & 0xFF); if (!i2c_check_ack()//错误处理机制}//写入数据i2c_write_byte(data);if (!i2c_check_ack()//错误处理机制}//发送停止信号i2c_stop(;```需要注意的是,在读取或写入数据之前,必须实现I2C总线的相关函数,如设置速率、发送信号、写入数据等。

AT24c02最全的中文资料

CA T24C 161/162(16K),CAT24C081 /082(8K) CAT24C041/042(4K),CAT24C021/022(2K)I2C串行CMOS E2PROM,精确的复位控制器和看门狗定时器控制电路特性•数据线上的看门狗定时器(仅对CA T24Cxxl)籲可编程复位门槛电平籲高数据传送速率为400KHz和I2C总线兼容• 2.7V至6V的工作电压•低功耗CMOS工艺籲16字节页写缓冲区籲片内防误擦除写保护籲高低电平复位信号输出——精确的电源电压监视器——可选择5V、3.3V和3V的复位门槛电平•100万次擦写周期•数据保存可长达100年•8脚DIP或SOIC封装•商业级、工业级和汽车温度范围概述CA T24Cxxx是集E2PROM存储器,复位微控制器和看门狗定时器三种流行功能与一体的芯片。

CAT24C161/162 (16K),CAT24C081/082 (8K),CA T24C041/042 (4K)和CAT24C021/022 (2K)以I2C是串行CMOS E2PROM器件。

釆用CMOS工艺大降低了器件的功耗。

CA T24Cxxx 另一特点是16字节的页写缓冲区,提供8脚DIP和SOIC 封装。

CA T24Cxxx的复位功能和看门狗定时器功能保证系统出现故障的时候能给CPU —个复位信号。

CA T24Cxxx 的2脚输出低电平复位信号,7脚输出高电平复位信号。

CAT24Cxxl看狗溢出信号从SDA脚输出。

CAT24Cxx2不具备看门狗功能。

绝对最大参数工作温度:-55°C〜125°C贮存温度:-65°C〜15°C各管脚承受对地电压:-2.0V〜Vcc+2.0V VCC对地电压范围:-2.0V〜7.0V 最大功耗: 1.0W管脚焊接温度(10S): 300 °C输出短路电流:100mA管脚配置]V C C ]RESET方框图表一直流操作特性表二上电时序管脚介绍WP:写保护将该管脚接Vcc,E2PRON就实现写保护(只读)。

EEPROM_AT24C02_笔记


AT24C02 使用
一、芯片介绍:
1,2,3 脚(A0 、A1 、A2 ) :可编程地址输入端 4(GND) :电源地 5(SDA)serial date:串行数据输入/输出端 6(SCA)serial clock input :串行时钟输入端 7(WP )write protect:写保护输入端,用于硬件数据保护。当期为低电平时,可对整 个存储器进行正常的读/写操作;当为高电平时,存储器具有写保护功能,但读操作不 受影响。 8(Vcc) :电源正端
}
二、存储结构与寻址
AT24C02 的存储容量为 2KB ,内部分成 32 页,每页 8B,共 256 页。操作时有两种寻芯片地址为 1010, 其地址控制格式为 1010A2A1A0R/W 。
其中 A2 、A1 、A0 为可编程地址选择位。A2 、A1、A0 引脚接高、低电平得到 确定的三位编码,与 1010 形成 7 位编码,即为该器件的地址码。R/W 位芯片 读写控制位,该位为 0,表示对芯片进行写操作;该位为 1,表示对芯片进行读 操作。 (2) 片内子地址寻址:芯片寻址可对内部 256B 中的任一个进行读/写操作,其寻址 范围为 00~FF,共 256 个寻址单位。
(2)指定地址连续读,此种方式的读地址控制与前面指定地址读相同,单片机接 收到每一个字节数据后应做出应答,只要 EEPROM 检测到应答信号,其内部的地址寄 存器就自动加 1,指向下一个单元,并顺序将指向的单元的数据送到 SDA 串行数据线 上。 当需要结束读操作时, 单片机接收到数据后在需要应答的时刻发送一个非应答信号, 接着再发送一个停止信号即可。这种读操作的数据帧格式如图 8.3.8 所示。
芯片操作时序图:对应后面的程序理解
总线时序图

I2C总线at24c02芯片使用说明

325密码储存电路密码储存电路采用l2C总线at24c02存储芯片存放密码,可实现断电密码不消失,at24c02存储芯片可长期存储信息,可上百万次以上重新擦写。

2.4.3 I 2C总线密码存储芯片at24c02介绍S-I&ad TSSOP图2-3 at24c02 引脚图(1)引脚功能介绍及相关知识WP写保护引脚,将该引脚接VCC U PROM就实现写保护(只读)。

引脚接地或悬空,可以对器件进行读写操作。

SCL串行时钟引脚,串行输入输出时该引脚用于输入时钟。

SDA串行数据输入输出引脚,用来输入输出数据,该引脚为射极开路输出,需接上拉电阻。

(2) |2C总线协议只有总线非忙时才被允许进行数据传送,在传送时,当时钟线为高电平,数据线必须为固定状态,不允许有跳变。

时钟线为高电平时数据线的任何电平变化将被当作总线的启动或停止条件。

(3)起始条件起始调教必须在所有操作命令之前发送。

时钟线保持高电平期间,数据线电平从高到低跳变作为I2C总线的启动信号。

CAT24Cxx>一直监视SDA和SCL电平信号,直到条件满足时才响应。

(4) 停止条件时钟线保持高电平期间,数据线电平从低到高跳变作为l 2C 总线的停止信号。

(5) 器件地址的约定主器件在发送启动命令后开始传送数据,主器件发送相应的从器件地址, 8位从器件地址的高四位固定为1010,接下来的3位用来定义存储器的地址,对 于CAT24C021/022这三位无意义,对于 CAT24C41/042接下来的2位无意义, 第三位是地址高位,CAT24C081/082中,第一位无意义,后两位表示地址高位。

最后一位为读写控制位,“ 1”表示对从器件进行读写操作,“ 0 ”表示写操 作。

在主器件发送启动命令和一字节从器件地址后,如果与从器件地址吻合, CAT24C02各发送一个应答信号,然后再根据读/写控制为进行读或写操作。

(6) 应答信号每次数据传送成功后,接收器件将发送一个应答信号。

AT24C02页读写程序

Order &=0xf0;
for(i=0;i<8;i++)
{
if(Order&0x80)
SID_set;
else
SID_clr;
CLK_clr;
CLK_set;
Order<<=1;
}
Order=Data;
Order<<=4;
for(i=0;i<8;i++)
{
if(Order&0x80)
SID_set;
{
uchar Value;
IIC_Start();
AT24C02_Send_Byte(Slave_Addr);
AT24C02_Send_Byte(Addr);
IIC_Start();
AT24C02_Send_Byte(Slave_Addr+1);
Value=AT24C02_Rec_Byte();
IIC_SendAck(1);
{
IIC_Start();
AT24C02_Send_Byte(Slave_Addr);
AT24C02_Send_Byte(Address);
AT24C02_Send_Byte(Dat);
IIC_Stop();
}
/*单字节读AT24C02*/
uchar Single_Read_AT24C02(uchar Slave_Addr,uchar Addr)
/*接收应答信号*/
uchar IIC_RecAck(void)
{
uchar A;
SDA_in;
SCL_set;
Delay(35);
if(PINC & (1<<4))
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

总线工作原理
I2C 总线进行数据传送时,时钟信号为高电平期间,数据线上的数据必须保持稳定,只有在时钟线上的信号为低电平期间,数据线上的高电平或低电平状态才允许变化。

起始和终止信号 :SCL 线为高电平期间,SDA 线由高电平向低电平的变化表示起始信号;SCL 线为高电平期间,SDA 线由低电平向高电平的变化表示终止信号。

数据传送格式(1)字节传送与应答
每一个字节必须保证是8位长度。

数据传送时,先传送最高位(MSB ),每一个被传送的字节后面都必须跟随一位应答位(即一帧共有9位)。

如果一段时间内没有收到从机的应答信号,则自动认为从机已正确接收到数据。

AT24C02的芯片地址如下图,1010为固定,A0,A1,A2正好与芯片的1,2,3引角对应,为当前电路中的地址选择线,三根线可选择8个芯片同时连接在电路中,当要与哪个芯片通信时传送相应的地址即可与该芯片建立连接,TX-1B 实验板上三根地址线都为0。

最后一位R/W 为告诉从机下一字节数据是要读还是写,0为写入,1为读出。

AT24C02的芯片地址(0xa0为写,0xa1为读)
任一地址写入数据格式
任一地址读取数据格式。

相关文档
最新文档