一、简介
1、AT24C02是一个存储容量为2K bit 的E2PROM
? ? ? ? ? ? ? ?
2、SDA(串行数据线)和SCL(串行时钟线)
????????SCL:上升沿向设备写入数据,下降沿设备向主机发送数据
????????SDA:双向传输,SCL为高时,若SDA数据改变,则视为起始信号或停止信号(如下图)
- ? ? ? ? ? ? ? ? ??
????????在总线空闲状态时,这两根线一般被上面所接的上拉电阻拉高,保持着高电平。
二、应用
在iic.c文件中手写“读函数”和“写函数”
void IIC_Write_EEPROM(unsigned char addr,unsigned char dat)
{
unsigned char i=0;
IIC_Start();
IIC_SendByte(0xA0); //发送“写”信号,让EEPROM准备
IIC_WaitAck();
IIC_SendByte(addr); //2K 256byte 地址范围是0-2^8 即0x00-0xff
IIC_WaitAck();
IIC_SendByte(dat);
IIC_WaitAck();
IIC_Stop();
}
unsigned char IIC_Read_EEPROM(unsigned char addr)
{
unsigned char dat;
IIC_Start();
IIC_SendByte(0xA0); //写数据
IIC_WaitAck();
IIC_SendByte(addr);
IIC_WaitAck();
IIC_Start();
IIC_SendByte(0xA1); //发送“读”信号
IIC_WaitAck();
dat = IIC_RecByte();
//IIC_SendAck(0); //MCU给器件发送是否应答,0应答 1非应答 可省略不写
IIC_Stop();
return dat;
}
NOTES:
1、若需马上读取数据,则最好先延时1ms左右
2、关于Address byte
- 1、前四位是厂家规定的,不可更改
- 2、A2 A1 A0是可以自己定义的器件地址,蓝桥杯开发板中全部接地即代表全部为0
- 3、R/W是读/写位????
▲文中不足之处请大家指正
|