AT24C02

驱动程序照着时序图写或上网找,这里不说了

24c02是按照i2c通信的,

在此谈一下鄙人关于i2c的认识:

首先需一个起始信号表示操作开始:先将sda和scl均置高(释放总线)再将sda置0,即在scl为高时sda低跳变,就是开始信号  顺便把scl拉低。

开始写一字节:在scl为低时把sda赋好数据,scl上升沿后写过去,再将scl置低,sda装载数据,如此重复,写完8位后,释放总线,等待应答   ,最后把scl置0

等待ack:等待从件把sda拉低  表示接受成功

读一个字节:先将sda置高(个人理解:若读字节时是下降沿后读到信号,该信号靠从件发出,若主机sda拉低,从件是无力拉高的,因此主机先将sda拉高)此后与写类似,只不过有可能下降沿后读,结束后把scl置0

读后也需要释放总线

结束信号:先将scl,sda均置低(释放总线,若上述均保证结束时scl为0,则不需置scl)再将scl置高,此时sda上升跳变,就是结束信号

具体实现:

向某个地址写一个数据:

void At24c02Write(uchar addr,uchar dat)
{
    I2C_Start();//起始信号	·
	I2C_SendByte(0xa0,1);//器件寻址,1表等待响应,0则略过,另外:器件地址高四位固定为1010,低四位中最低位为写入与读取的选择,
                              //其余三位为器件选择,这里全部接地所以为0
	I2C_SendByte(addr,1);//写入数据的目标地址
	I2C_SendByte(dat,1);//要写的数据
	I2C_Stop();	 //停止信号	,此后器件进入擦写工作,期间不接受主机的信号
}

向某个地址读一个数据:

<pre name="code" class="cpp">uchar  At24c02Read(uchar addr)
{
    uchar dat=0;
    I2C_Start();//起始信号
	I2C_SendByte(0xa0,1);
	I2C_SendByte(addr,1);//假写入 ,地址即为要读的地址,具体看所含芯片文档
	I2C_Start();//起始信号
	I2C_SendByte(0xa1,1); //最低位变1,设为读取模式
	dat=I2C_ReadByte();	//接受数据
	I2C_Stop();//停止信号
	return dat;
}

接着上次读或写的地址读数据:

uchar  At24c02Read_next()
{
    uchar dat=0;
    I2C_Start();
	I2C_SendByte(0xa1,1);//直接读命令,接着上一次读写的地址读数据
	dat=I2C_ReadByte();
	I2C_Stop();
	return dat;
}	 

注意:写入操作后一段时间不能对24c02进行任何操作(正在擦写)   需延时10ms左右

参考资料:点击打开链接i2c,i         2c

代码:点击打开链接

proteus 调试i2c元件的方法

时间: 2024-10-15 01:18:51

AT24C02的相关文章

I2C总线介绍及AT24C02驱动编写 笔记

中断处理程序 { 清除中断 硬件自动清除 软件清除 } CPU芯片手册相关章节 -------- I2C CPU外接设备的方式 1)GPIO简洁的方式(按键,LED) 通过设置GPIO管脚的状态来完成通信(控制) gpccon gpcpud gpcdat 2)类似于内存的接口 (DDRAM norflash nand dm9000) 从硬件上看CPU和芯片 数据线 地址先  BANK 3)协议类接口 uart I2C AT24C02    EEPROM 3,如何解决CPU和设备通信的问题 I2C

AT24C02/04/08 地址理解

该类器件要通过iic总线操作,读写过程中都要先寻址,这类器件地址有两个字节组成,如下表,1010是固定的,A表示器件地址,可以拉高和拉低,iic总线上可以并接2的几次方个器件.P表示具体的内部地址数,比如at24c02共有256个字节,第二个地址字节完全可以满足,不用P.但是at24c04一个有512个字节,需要9位地址线,第一个字节中的p就表示地址线了,p=0表示低256字节,1表示高256字节.注意:一般页写可以连续写8个数据.主机每发送一个字节都要接受从机的应答信号.该类器件是采用iic总

IIC读写AT24C02代码2——串口命令控制多页读写

通过串口输入 R .W 进行控制程序读写IIC设备.波特率9600bps,晶振115200HZ. main.c /*----------------------------------------------- IIC编程 1 编写:Louis 邮箱:[email protected] 日期:2015.06.01 修改:通过串口命令R/W,控制EEPROM的读R写W.并从串口提示. 改进:增加对页读写功能 晶振:11.0592MHZ NOTE:*通过实测发现,AT24C02可以连续写入16BYT

单片机模拟 IIC 总线与 EEPROM(AT24C02)通信

数据有效性: 起始和终止信号时序: 设备地址: 写字节时序: 读数据时序: 函数模拟 IIC 总线 时序: /**************************************/ /******模拟I2C总线操作函数*************/ /**************************************/ //延时函数 void Delay() { ; ; } //初始化 void I2C_Init() { SDA = 1; SCL = 1; } //起始信号 vo

实现AT24C02的数据读写操作

源:实现AT24C02的数据读写操作 /*************************************************************** 功能:11:32 2008-6-27 作者:SG 时间:2004-03-15 版本:V1.0 ***************************************************************/ #include "INTRINS.H" #include "reg52.h"

芯片烧录器编程AT24C02

网上买了两款芯片烧录器,因为项目用的到.芯片以后的类型可能是IIC 接口的.就选则了一个IIC接口的AT24C02EEPROM.进行尝试.手头上没有这款芯片. 就想起自己单片机上有这款芯片.然后就开始自己的烧录之路. 因为芯片是扣不下来的,所以,要把这八个引脚和烧录器上对接,确实有点难度.后来看了AT24C02芯片仔细一想.有好多引脚是不需要的,有的是器件地址. 或者是使能端口.所以最后看了一下单片机的电路图,把AT24C02的SCL和SDA引脚 用杜邦线连了出来.根据芯片引脚和烧录器芯片夹口的

玩转X-CTR100 l STM32F4 l AT24C02 EEPROM存储

我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ] 本文介绍X-CTR100控制器 板载EEPROM存储芯片AT24C02的使用,EEPROM常用于参数存储,系统掉电后也可以保存数据. 对比FLASH容量小,但是具有更高的擦写寿命. 原理 AT24C02是一个2K位串行CMOS E2PROM, 内部含有256个8位字节,CATALYST公司的先进CMOS技术实质上减少了器件的功耗.AT24C02有一个

AT24C02芯片学习记录

1.首先看AT24C02芯片的引脚说明 2.芯片的型号与存储容量(bit)的对应关系: 3.总线时序 下面这个表有对上面时序图的各种时间进行描述 4.数据有效性(数据在什么时候可以改变) 5.起始信号和结束信号 6.应答信号 7.设备地址 8.写操作 1)字节写操作 2)页写操作 9.读操作 1)当前地址读操作 2)随机读操作 3)顺序读操作 原文地址:https://www.cnblogs.com/QQ2962269558/p/12075152.html

AT24C02及DS18B20的支持

一.AT24C02的驱动支持 Linux系统本身就支持I2C的驱动,下面就来看一下,在Linux下如何通过I2C总线访问AT24C02芯片.先运行命令“make menuconfig”打开内核配置对话框,然后勾选Device Drivers->I2Csupport项,再勾选Device Drivers->Misc devices->EEPROM support->I2C EEPORMs from most vendors项.这样配置后,内核就支持I2C总线和EEPROM器件了.接下