首页 > 其他分享 >AT24C02(IIC)

AT24C02(IIC)

时间:2024-07-27 22:26:58浏览次数:9  
标签:DELAY unsigned char Delay AT24C02 IIC TIME I2C

AT24C02

概述:
AT24C02是一个2K位串行CMOS E2PROM, 内部含有256个8位字节,CATALYST公司的先进CMOS技术实质上减少了器件的功耗。AT24C02有一个16字节页写缓冲器。该器件通过IIC总线接口进行操作,有一个专门的写保护功能

主要特点:

存储容量: 2 Kbit(256 字节),可用作保存小块配置数据或用户设置。
接口类型: I2C,总线地址支持 7 位(允许在同一总线上连接多个 EEPROM)。
电源电压: 工作电压范围为 1.8V 至 5.5V,适应不同的电源要求。
操作温度范围: 通常为 -40°C 至 +85°C,适合广泛的应用环境。
数据保持时间: 高达 100 年,确保数据长期可靠保存。
写入时间: 典型写入时间约为 5ms,适用于需要快速更新的应用。
写保护: 芯片具有写保护功能,以防止意外的数据修改。

芯片管脚图如下
在这里插入图片描述
图一
![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/35621ca335724b40bd6ae105612fb591.png
图二
该图来自芯片手册中,简单介绍一下各个引脚的功能

  • A0、A1、A2:器件地址选择
  • SDA:数据线
  • SCL:时钟线
  • WP:写保护线(如果WP管脚连接到Vcc,所有的内容都被写保护只能读。当WP管脚连接到Vss or GND 或悬空允许器件进行正常的读/写操作)

IIC通信协议

iic为主从通信协议,采用一主多从模式即一个主机控制多个从机
在这里插入图片描述
图三
从机都挂载在时钟线和数据线上,每个从机都有所对应的通信地址
在这里插入图片描述
通讯开始时时钟线高电平期间数据线拉低
在这里插入图片描述

对应代码

//起始信号
void I2CStart(void)
{
    sda = 1;
    scl = 1;
	I2C_Delay(DELAY_TIME);
    sda = 0;
	I2C_Delay(DELAY_TIME);
    scl = 0;    
}

接下来就是发送7位地址码(还有一位是读写位),理论上可以挂载128个从机设备
(信号读取规则为时钟线高电平期间读取数据线上的数据)

//发送一个字节
void I2CSendByte(unsigned char byt)
{
    unsigned char i;
	
    for(i=0; i<8; i++){
        scl = 0;
		I2C_Delay(DELAY_TIME);
        if(byt & 0x80){
            sda = 1;
        }
        else{
            sda = 0;
        }
		I2C_Delay(DELAY_TIME);
        scl = 1;
        byt <<= 1;
		I2C_Delay(DELAY_TIME);
    }
	
    scl = 0;  
}
//接收一个字节
unsigned char I2CReceiveByte(void)
{
	unsigned char da;
	unsigned char i;
	for(i=0;i<8;i++){   
		scl = 1;
		I2C_Delay(DELAY_TIME);
		da <<= 1;
		if(sda) 
			da |= 0x01;
		scl = 0;
		I2C_Delay(DELAY_TIME);
	}
	return da;    
}
//等待应答
unsigned char I2CWaitAck(void)
{
	unsigned char ackbit;
	
    scl = 1;
	I2C_Delay(DELAY_TIME);
    ackbit = sda; 
    scl = 0;
	I2C_Delay(DELAY_TIME);
	
	return ackbit;
}
//发送应答
void I2CSendAck(unsigned char ackbit)
{
    scl = 0;
    sda = ackbit; 
	I2C_Delay(DELAY_TIME);
    scl = 1;
	I2C_Delay(DELAY_TIME);
    scl = 0; 
	sda = 1;
	I2C_Delay(DELAY_TIME);
}
//停止信号
void I2CStop(void)
{
    sda = 0;
    scl = 1;
	I2C_Delay(DELAY_TIME);
    sda = 1;
	I2C_Delay(DELAY_TIME);
}

AT24C02写入
在这里插入图片描述
AT24C02读取
在这里插入图片描述
代码如下所示

//AT24c02 写数据
void write_at24c02(unsigned char addr,unsigned char date)
{
	I2CStart();
	I2CSendByte(0xA0);
	I2CWaitAck();
	
	I2CSendByte(addr);
	I2CWaitAck();
	I2CSendByte(date);
	I2CWaitAck();
	I2CStop();
	Delay100ms(); //延时函数必须加
}
//AT24c02 读数据
unsigned char read_at24c02(unsigned char addr)  
{
	unsigned char dat;
	I2CStart();
	I2CSendByte(0xA0);
	I2CWaitAck();
	
	I2CSendByte(addr);
	I2CWaitAck();
	
	I2CStart();
	I2CSendByte(0xA1);
	I2CWaitAck();        //发送数据后必须加等待函数
	dat = I2CReceiveByte();
	I2CSendAck(1);      //接收之后必须加一个发送应答
	I2CStop();
	Delay100ms(); //延时函数必须加
	return dat;
}

标签:DELAY,unsigned,char,Delay,AT24C02,IIC,TIME,I2C
From: https://blog.csdn.net/m0_74219261/article/details/140733081

相关文章

  • 【I²C协议】STC89C51单片机IIC通信(代码+原理)
    STC89C51单片机IIC通信什么是I²C协议特点构成通信协议开始信号、结束信号、应答信号数据传输代码示例什么是I²C协议IIC,即I²C,全称Inter-IntegratedCircuit,字面上的意思是集成电路之间,它其实是I²CBus简称,所以中文应该叫集成电路总线,是由PHILIPS公司在80年......
  • msp430f5529lp移植OLED屏幕 iic 4针 ccs
    OLED.C  代码私发,开发环境ccs......
  • stm32 - IIC
    目录STM32-IIC1.基本概念2.引脚说明SDASCK/SCL3.传输方向4.通信过程1.空闲状态2.开始信号3.数据发送4.应答信号5.数据接收6.停止信号STM32-IIC1.基本概念半双工同步通信的串行通信接口2.引脚说明SDASCK/SCLIIC总线只需要两根引脚就可以实现通信,一根是数......
  • IIC初了解
    引脚说明IIC需要俩根引脚可以实现通信,一根是SDA(SerialData),另一根是SCL(SerialClock)所有通过IIC接口通信的外围器件都挂载到IIC总线上。IIC的总线必须有主器件提供。每个从器件由于没有片选引脚,所以每个从器件都需要有自己独立的器件地址。SDA引脚和SCL的输出模式一般都要输......
  • 串口、IIC、SPI的优缺点
    串口、IIC、SPI的优缺点串口(SerialPort)串口通信是一种基本的串行通信方式,它通过串行数据线(TX和RX)进行数据的发送和接收。串口通信通常用于微控制器与PC或其他设备之间的通信。特点:简单易用,硬件实现成本低。通信速率较低,适合长距离通信。可以实现全双工通信(同时发送和接收......
  • IIC驱动--TM1651
     /*********************************************************************************@fileGPIO_Toggle\main.c*@authorMCDApplicationTeam*@versionV2.0.1*@date18-November-2011*@briefThisfilecontainsthemainfuncti......
  • 什么是I2C,IIC怎么用,从实例波形分析I2C读写
    什么是I2C,IIC怎么用,从实例波形分析I2C读写前言今天分享的主题是I2C通信。接下来从I2C是什么,怎么用,以及以时钟外设读写作为实例进行分析。I2C简介I2C(Inter-IntegratedCircuit),也可以叫IIC、I2C,译作集成电路总线,是两线式串行通信总线,用于设备间的通讯等,标准情况下最高传送速率达......
  • IIC通信协议
    一、IIC(Inter-IntegratedCircuit)通信的基本概念:硬件结构:只需要两根线:SCL(串行时钟线)和SDA(串行数据线)可以连接多个设备,每个设备都有唯一的地址(7bit)通信原理:主从通信:一个主设备,多个从设备同步通信:由SCL线提供时钟信号串行、半双工:数据可以双向传输,但同一时刻只能单向基......
  • AT24C02存储芯片
    AT24C02芯片目录AT24C02芯片一、基本参数二、接口与引脚三、功能特点四、I2C时序结构起始条件和终止条件字节传输发送一个字节:接受一个字节发送应答和接受应答发送完之后要接收应答接收完之后要发送应答发送应答接受应答发送一帧数据接收一帧数据先发送再接......
  • 树莓派学习笔记18:IIC驱动_PCA9685(16路舵机驱动模块)
    今日继续学习树莓派4B4G:(RaspberryPi,简称RPi或RasPi)本人所用树莓派4B装载的系统与版本如下: 版本可用命令(lsb_release-a)查询:​​ Python版本3.7.3:​​ IIC驱动_PCA9685(16路舵机驱动模块)文章提供测试代码讲解,整体代码贴出、测试效果图目录 开启树......