STM32ExampleCode-03-EEPROM

STM32ExampleCode-03-EEPROM

1. 简介

AT24C02是一个带写保护的2K位串行CMOS EEPROM,内部分成32页,每页8Byte,即共256个8位字节供用户读写,操作时有两种寻址方式:芯片寻址和片内子地址寻址。我们常用的是芯片寻址:AT24C02的芯片地址为1010,其地址控制字格式为[1010][A2A1A0][R/W]。其中A2,A1,A0可编程地址选择位。A2,A1,A0引脚接高、低电平后得到确定的三位编码,与1010形成7位编码,即为该器件的地址码。R/W为芯片读写控制位,该位为0,表示芯片进行写操作,一般情况下我们使用一片24C02时,将A2、A1、A0的引脚都接到GND,此时通信地址为0xa0。
image-1682067892447

2. 下载例程

Gitee下载:STM32ExampleCode_02_LCD
article003_02.png

3. IIC驱动

在目录“\HARDWARE\IIC"下的myiic.h文件,根据需要修改自己的引脚,由于这里使用的是CRL和CRH寄存器来配置的输入输出方向,所以我们在修改时需要注意寄存器的正确使用,示例中IIC的SDA引脚为PB0,SCL引脚为PB1,在本STM32系列例程中涉及的所有IIC的相关模块,使用的都是这个IIC文件。
image-1682067949479

3. AT24C02驱动

1)查看数据手册

数据手册:立创商城-AT24C02
image-1682067981231

2) 原理图

AT24C02的应用电路很简单,如下图,需要注意的是,如果我们使用的不是24C02的芯片而不是现成的模块时,需要在STM32的IIC引脚添加上拉电阻以保证IIC的正常通信。
image-1682067996297

3) 读写操作

读写操作的IIC时序如下,涉及的随机读写、页读写以及始信号和停止信号等的时序图可以参考手册相关介绍
image-1682068019212
image-1682068023409

4) 驱动代码

完整驱动代码可以参考目录“.\HARDWARE\24CXX ”文件夹下的文件
image-1682068121113

5) 核心代码

a. 向at24c02某地址写某数据

AT24CXX_WriteOneByte(ADDRESS,DATA);

b. 读取at24c02某地址的数据

DATA=AT24CXX_ReadOneByte(ADDRESS);

c. 主函数调用示例

/*
*********************************************************************************************************
* 函 数 名: main
* 功能说明: 主函数
* 形 参:无
* 返 回 值: 无
*********************************************************************************************************
*/
int main(void)
{
  delay_init();            //delay初始化
  uart_init(115200);      //串口初始化
  AT24CXX_Init();          //AT24CXX初始化
  //在地址0x00上写入数据0x66
  printf("24c02 addr [0x00] write data is: 0x%x\r\n",0x66);
  AT24CXX_WriteOneByte(0x00,0x66);
  delay_ms(50);
  //读出0x00地址上的数据
  read_Data=AT24CXX_ReadOneByte(0x00);
  printf("24c02 addr [0x00] read data is: 0x%x\r\n",read_Data);
  while(1)
  {
    delay_ms(200);
  }
}

4. 示例工程

1) 打开工程

打开目录下的文件夹的keil工程
image-1682068280927

2) 编译烧录运行

STM32向AT24C02的0X00地址中写入一个数据,如0x66,然后再读取地址0x00中读取数据,具体结果如下图所示:
image-1682068294745


Licensed under CC BY-NC-SA 4.0