一、24C02
24C02是一个2K Bit的串行EEPROM存储器,内部含有256个字节。在24C02里面有一个8字节的页写缓冲器。24C02支持I2C总线协议。I2C是一种双向、两线串行通信接口,分别是串行数据线SDA和串行时钟线SCL。两根线都必须通过一个上拉电阻接到电源,如图是典型的总线配置。
总线上发送数据的器件被称为发送器,接收数据的器件被称为接收器。控制信息交换的器件被称作主器件,受主器件控制的器件被称为从器件。主器件产生串行时钟信号SCL,控制总线的访问状态、产生START和STOP条件,两者之间的数据字节数是没有限制的,由总线上的主器件决定。信息以字节(8位)为单位传输,第9位时由接收器产生应答。
24C02设备地址
24C02的设备地址包括固定地址和可编程地址。可编程部分需要根据硬件引脚A0、A1和A2来配置。设备地址最后一位用来设置数据传输方向,即读/写位。
在蓝桥杯比赛开发板上,如图所示,硬件引脚A0、A1和A2全部接地,那么此处24C02设备读操作地址为:0xA1(1010 0001),写操作地址为:0xA0(1010 0000)。
二、24C02字节写操作
(1)写设备地址。
(2)发送内存字节地址。
(3)写入目标数据。
//-------------------24C02字节写函数-------------------//
void write_24C02(uchar addr,uchar dat)
{
IIC_Start();
IIC_SendByte(0xa0); //写设备地址
IIC_WaitAck();
IIC_SendByte(addr); //发送内存字节地址
IIC_WaitAck();
IIC_SendByte(dat); //写入目标数据
IIC_WaitAck();
IIC_Stop();
}
三、24C02字节读操作
(1)写设备地址。
(2)发送内存字节地址。
(3)读设备地址。
(4)读出目标数据。
//---------------------24C02字节读函数-------------------//
uchar read_24c02(uchar addr)
{
uchar tmp;
IIC_Start();
IIC_SendByte(0xa0); //写设备地址
IIC_WaitAck();
IIC_SendByte(addr); //发送内存地址
IIC_WaitAck();
IIC_Start();
IIC_SendByte(0xa1); //读设备地址
IIC_WaitAck();
tmp = IIC_RecByte(); //读出目标数据
IIC_Stop();
return tmp;
}