本文主要是介绍24C02,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
24C02的应用
- 基础
- 字节写操作
- 字节读操作
基础
- 24C02功能概述
24C02是一个2KBit的串行EEPROM存储器,内部含有256个字节。在24C02里面有一个8字节的页写缓冲器。该设备的工作电压为1.8V到6.0V,芯片的第7引脚WP为写保护引脚,将该引脚接地允许正常的读写。
- 设备地址
24C02的设备地址包括固定部分和可编程部分。可编程部分需要根据硬件引脚A0、A1和A2来设置。设备地址的最后一位用于设置数据传输的方向,即读/写位。格式如下图:
在IIC总线协议中,设备地址是起始信号后第一个发送的字节。如果硬件地址引脚A0、A1、A2均接地,那么,
读操作地址为:0xA1;
写操作地址则为:0xA0。
字节写操作
24C02接收完设备地址后,产生应答信号;
然后接收8位内存字节地址,产生应答信号,
接着接收一个8位数据,产生应答信号;
最后主机发送停止信号,字节写操作结束。
1、stm32代码
void AT24CXX_WriteOneByte(u16 WriteAddr,u8 DataToWrite)
{ IIC_Start(); if(EE_TYPE>AT24C16) //判断芯片型号{IIC_Send_Byte(0XA0); IIC_Wait_Ack();IIC_Send_Byte(WriteAddr>>8); //发送高地址 }else {IIC_Send_Byte(0XA0+((WriteAddr/256)<<1)); //发送器件地址0XA0,写数据} //(WriteAddr/256) 是为了确保大容量芯片的地址IIC_Wait_Ack(); IIC_Send_Byte(WriteAddr%256); //发送低地址IIC_Wait_Ack(); IIC_Send_Byte(DataToWrite); //发送字节 IIC_Wait_Ack(); IIC_Stop();//产生一个停止条件 delay_ms(10);
}
字节读操作
主机首先发送起始信号,接着发送设备地址和它想要读取的数据内存字节地址,执行一个伪写操作。在24C02应答主机之后,主机重新发送起始信号和从设备地址,进行读操作。24C02响应并发送应答信号,然后输出所要求的一个8位字节数据。主机接收完这个8位数据后,产生一个“非应答”信号,最后发送停止条件,字节读操作结束。
1、stm32
u8 AT24CXX_ReadOneByte(u16 ReadAddr)
{ u8 temp=0; IIC_Start(); if(EE_TYPE>AT24C16){IIC_Send_Byte(0XA0); //发送写命令IIC_Wait_Ack();(ReadAddr>>8);//发送高地址 }else {IIC_Send_Byte(0XA0+((ReadAddr/256)<<1)); //发送器件地址0XA0,写数据} IIC_Wait_Ack(); IIC_Send_Byte(ReadAddr%256); //发送低地址IIC_Wait_Ack(); IIC_Start(); IIC_Send_Byte(0XA1); //进入接收模式 IIC_Wait_Ack(); temp=IIC_Read_Byte(0); IIC_Stop();//产生一个停止条件 return temp;
}
这篇关于24C02的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!