EEPROM AT24C08的操作

EEPROM应该是学习IIC总线时候最先接触的东西了,EEPROM的优点是可以随机存取,不像Flash存储器一样需要先擦除在能写入,而且擦写次数多存储时间长,但是缺点是存储空间非常有限,像我这用的Atmel的AT24C08只有8Kbit的存储空间,也就是只有1KB,存储一些参数是够的,但是存储文档、音频什么的就算了,还好我现在项目只要存储一些参数,AT24C02的空间不够,所以用了空间相对大一点的AT24C08。本以为两个的程序是差不多的,但是还有些值得注意的地方要记录一下的。
由于AT24C02的存储空间是256Byte,IIC发送寻址地址的时候一个字节就够了,也就是发送完器件地址之后直接发送一个字节的寄存器地址就可以了,但是AT24C08的存储空间是1024Byte,一个字节的地址不够寻址,需要10位的寻址空间,我之前写过一篇文章:http://blog.csdn.net/tq384998430/article/details/53580267 里面说明了IIC读写16位地址的寄存器的方式,就是发送两个字节的寄存器地址,先发送地址的高字节,再发送地址的低字节,但是这一招在AT24C08上不适用,然后就逼我看一下AT24C08的数据手册http://pdf1.alldatasheet.com/datasheet-pdf/view/509421/ATMEL/AT24C08C-SSHM-T.html,上面第10页写道:
Standard EEPROM Access: The 4K and 8K EEPROM device requires an 8-bit device address word following a start
condition to enable the chip for a read or write operation. The device address word consists of a mandatory “1010” (0xA)
sequence for the first four Most Significant Bits (MSB) as shown in Figure 8-1 on page 11. This is common to all the
EEPROM devices.
The 4K EEPROM only uses the A2 and A1 device address bits with the third bit being a memory page address bit. The
two device address bits must compare to their corresponding hard-wired input pins. The A0 pin is no connect.
The 8K EEPROM only uses the A2 device address bit with the next two bits being for memory page addressing. The A2
address bit must compare to its corresponding hard-wired input pin. The A1 and A0 pins are no connect.
AT24C08的器件地址的定义如下:
这里写图片描述
说得很清楚,AT24C08将器件地址(Device Addr)中的A1和A0位作为Page address,也就是说A1和A0是存储器的10位地址中的最高两位,我们再读写数据的时候要将地址的最高两位(page地址)放在这里。示例程序如下:

void IIC_Send(u8 device,u16 addr,u8 dat)
{
    IIC_Start();
    IIC_SendByte(device | (addr >> 8));
    IIC_Wait_Ack();
    IIC_SendByte((u8)addr);  
    IIC_Wait_Ack();  
    IIC_SendByte(dat);
    IIC_Wait_Ack();
    IIC_Stop();
}
  • 1
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
EEPROM存储器AT24C02驱动是一种用于控制和操作AT24C02 EEPROM芯片的软件程序。AT24C02是一种2K位串行电路编程只读存储器(EEPROM),能够以字节为单位进行读写操作。下面是一个简单的EEPROM存储器AT24C02驱动的实现示例: 首先,需要确定与AT24C02芯片通信的硬件接口。一般来说,AT24C02芯片使用I2C(TWI)总线进行通信。因此,需要确保控制器上的I2C总线控制器(如I2C模块)已正确配置和初始化。 其次,需要实现与AT24C02芯片通信的相关函数,如写入数据、读取数据等。这些函数可以通过在控制器上通过I2C总线传输控制字节和数据字节来执行相关的EEPROM操作。 例如,实现写入数据的函数,可以按照以下步骤进行: 1. 通过发出启动条件向AT24C02芯片发送设备地址。设备地址应包括芯片的固定地址和A0、A1和A2引脚的状态,用来识别芯片的物理位置。 2. 发送一个字节的内存地址,确定要写入数据的EEPROM存储器地址。 3. 发送要写入的数据字节。 4. 等待写操作完成,可以通过轮询芯片或等待I2C总线中断来检查。 5. 发送停止位,结束写操作。 同样,读取数据的函数也可以按照类似的步骤进行实现,只不过在发送内存地址之后需要切换到读操作模式,并在读取数据后保存数据字节。 在驱动程序的应用中,可以使用这些函数来存储和检索数据。通过提供适当的地址,可以将数据写入或读取到AT24C02芯片的特定地址中。此外,除了基本的读写功能之外,还可以实现其他操作,如块写入、页写入等。 总之,EEPROM存储器AT24C02驱动程序通过I2C总线控制器与AT24C02芯片进行通信,实现了对EEPROM芯片的读写操作。驱动程序应提供适当的函数来进行数据存储和检索,并可以根据应用需求扩展其他功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值