EEPROM数据读写例程开发指南
1. 概述
EEPROM (Electrically Erasable Programmable read only memory)是一种掉电后数据不丢失的存储器,常用来存储一些配置信息,以便系统重新上电的时候加载。EEPOM 芯片最常用的通讯方式为IIC协议。本示例封装了IIC总线的操作,可以使应用程序方便地读写EEPROM设备。
2. 开发板支持
该例程适用于CB6502M开发板。
3. 工作流程
3.1. 应用初始化
应用入口函数app_main(),主要实现如下功能:
- 板级初始化
- EEPROM读写
代码分析:
int app_main(int argc, char *argv[])
{
/* 板级初始化,各业务模块初始化 */
board_yoc_init();
......
/* record data to eeprom and read it */
eeprom_check_action();
return;
}
3.2. EEPROM操作
EEPROM API封装了IIC总线的操作,APP可通过简单的操作读取EEPROM的数据。
处理流程图如下图所示:
代码分析:
static void eeprom_check_action(void)
{
......
ret = eeprom_init();
......
ret = eeprom_write(DATAADDR_IN_EEPROM, (const uint8_t *)data_p, sizeof(report_data));
......
data_get = aos_malloc(sizeof(report_data));
......
ret = eeprom_read(DATAADDR_IN_EEPROM, data_get, sizeof(report_data));
aos_free(data_get);
......
eeprom_uninit();
}
4. 例程运行
以CB6502M开发板为例,示例程序的运行步骤为:
4.1. 接线
CB6502M开发板J34引脚图
以EEPROM 64为例的接线
EEPROM 管脚 | 开发板J34 |
---|---|
VCC | DVDD3V3 |
GND | GND |
SCL | SCL0 |
SDA | SDA0 |
4.2. 编译下载
连接打印串口和调试口
打印串口的串口调试工具配置为:
波特率: 115200, 数据位: 8, 校验位: None, 停止位: 1, 流控: None
使用集成开发环境CDK编译工程文件,然后下载至CB6502M开发板
按RESET按键,复位开发板,串口将打印如下信息
[ 0.221921][I][init ]OS version: 7.0.2
[ 0.254091][D][eeprom_demo]Enter APP mode
- EEPROM写数据打印信息
[ 0.720935][D][eeprom_demo]
0x0000: 0x00 0x00 0x00 0x07 0x10 0x11 0x12 0x13
0x0008: 0x14 0x15 0x16 0x00 0x00 0x00 0x00 0x00
0x0010: 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x0018: 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x0020: 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x0028: 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x0030: 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x0038: 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x0040: 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x0048: 0x00 0x00
- EEPROM读数据打印信息
[ 0.764524][D][eeprom_demo]Read:
[ 0.768157][D][eeprom_demo]
0x0000: 0x00 0x00 0x00 0x07 0x10 0x11 0x12 0x13
0x0008: 0x14 0x15 0x16 0x00 0x00 0x00 0x00 0x00
0x0010: 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x0018: 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x0020: 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x0028: 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x0030: 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x0038: 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x0040: 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x0048: 0x00 0x00