玩转X-CTR100 l STM32F4 l AT24C02 EEPROM存储

我造轮子,你造车,创客一起造起来!塔克创新资讯【塔克社区 www.xtark.cn 】【塔克博客 www.cnblogs.com/xtark/ 】

本文介绍X-CTR100控制器 板载EEPROM存储芯片AT24C02的使用,EEPROM常用于参数存储,系统掉电后也可以保存数据。
对比FLASH容量小,但是具有更高的擦写寿命。
原理
AT24C02是一个2K位串行CMOS E2PROM, 内部含有256个8位字节,CATALYST公司的先进CMOS技术实质上减少了器件的功耗。AT24C02有一个16字节页写缓冲器。该器件通过IIC总线接口进行操作,有一个专门的写保护功能。
|
管脚名称 |
功能 |
|
A0、A1、A2 |
器件地址选择 |
|
SDA |
串行数据、地址 |
|
SCL |
串行时钟 |
|
WP |
写保护 |
|
VCC |
+1.8V~6.0V工作电压 |
|
VSS |
地 |
例程
本例程实现单字节读写功能和连续字节读写功能。
硬件说明
硬件资源:
- 串口UART1
- 板载资源AT24C02
硬件连接:

X-CTR100设计有EEPROM芯片AT24C02,与MPU6050公用IIC2接口,地址引脚连接到GND。
软件生态
X-SOFT软件生态,X-API文件如下。
ax_at24c02.c——X-CTR100 板载 AT24C02 EEPROM 存储源文件
ax_at24c02.h——X-CTR100 板载 AT24C02 EEPROM 存储头文件
操作函数如下:
|
void AX_AT24C02_Init(void); //AT24C02初始化 void AX_AT24C02_Write(uint8_t *pbuf, uint8_t addr, uint8_t num); //AT24C02指定地址写入指定长度的数据 void AX_AT24C02_Read(uint8_t *pbuf, uint8_t addr, uint8_t num); //AT24C02指定地址读出指定长度的数据 void AX_AT24C02_WriteOneByte(uint8_t addr, uint8_t data); //AT24C02指定地址写入一个字节 uint8_t AX_AT24C02_ReadOneByte(uint8_t addr); //AT24C02指定地址读取一个字节 |
软件说明
本例程首先AT24C02初始化。然后进行单字节读写测试,分别向地址10、11、12写入数据,并读出数据显示,对比写入和读出的数据是否相同。然后进行多字节连续读写测试,向地址0写入字符串,并读出显示,对比写入和读出内容是否相同。主程序代码如下。
|
int main(void) { uint8_t tmp[3]; uint8_t str[] = { "X-CTR100 EEPROM TEST" }; uint8_t str1[sizeof(str)];
/* X-CTR100初始化 */ AX_Init(115200); printf("***X-CTR100 EEPROM AT24C02读写例程***\r\n\r\n");
//模块初始化及配置 AX_AT24C02_Init();
//X-API测试:单字节读写测试 printf("*单字节读写测试\r\n");
AX_AT24C02_WriteOneByte(10, 10); //地址10 写入10 AX_AT24C02_WriteOneByte(11, 20); //地址11 写入20 AX_AT24C02_WriteOneByte(12, 30); //地址12 写入30 tmp[0] = AX_AT24C02_ReadOneByte(10); //从地址10读出数据 tmp[1] = AX_AT24C02_ReadOneByte(11); //从地址11读出数据 tmp[2] = AX_AT24C02_ReadOneByte(12); //从地址12读出数据
printf("*地址10 11 12 写入数据:10 20 30\r\n"); printf("*地址10 11 12 读出数据:%d %d %d\r\n\r\n", tmp[0], tmp[1], tmp[2]);
//X-API测试:连续读写测试 printf("*连续读写测试\r\n"); AX_AT24C02_Write(str, 0, sizeof(str)); //地址0 写入 str AX_AT24C02_Read(str1, 0, sizeof(str)); //地址0 读出数据到 str1
printf("*地址0 写入数据:%s\r\n", str); printf("*地址0 读出数据:%s\r\n", str1);
while (1) { AX_Delayms(1000); AX_LEDG_Toggle(); } } |
实现效果
上电复位后,运行效果如下图所示。

玩转X-CTR100 l STM32F4 l AT24C02 EEPROM存储的更多相关文章
- 玩转X-CTR100 l STM32F4 l ADC 模拟数字转换
我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ] 本文介绍X-CTR100控制器 AD转换接 ...
- 玩转X-CTR100 l STM32F4 l MPU6050加速度陀螺仪传感器
我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ] 本文介绍X-CTR100控制器 板载加速度 ...
- 玩转X-CTR100 l STM32F4 l X-CTR100与树莓派搭建机器人平台
我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ] 本文介绍X-CTR100控制器与树莓派Linux系统 ...
- 玩转X-CTR100 l STM32F4 l 舵机控制
我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ] 本文介绍X-CTR100控制器的舵机控制,X-CTR ...
- 玩转X-CTR100 l STM32F4 l DRV8825 A4988 步进电机控制
我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ] 本文介绍X-CTR100控制器控制步进电机 ...
- 玩转X-CTR100 l STM32F4 l 基础例程printf、LED、蜂鸣器、拨码开关、位带操作
我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ] 本文介绍X-CTR100控制器基础板载资源 ...
- 玩转X-CTR100 l STM32F4 l PS2无线手柄
我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ] SONY的PS2无线手柄是索尼游戏机的遥控手柄,控制 ...
- 玩转X-CTR100 l STM32F4 l DSP指令集性能测试
我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ] 本文介绍X-CTR100控制器 DSP库的 ...
- 玩转X-CTR100 l STM32F4 l FPU单精度浮点性能测试
我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ] 本文介绍X-CTR100控制器如何开启ST ...
随机推荐
- 混合线性模型(linear mixed models)
一般线性模型.混合线性模型.广义线性模型 广义线性模型GLM很简单,举个例子,药物的疗效和服用药物的剂量有关.这个相关性可能是多种多样的,可能是简单线性关系(发烧时吃一片药退烧0.1度,两片药退烧0. ...
- idea ----> 使用idea工具整合mybaiti时出现的问题总结
使用idea测试mabtis实例时出现 java.lang.IllegalArgumentException: Mapped Statements collection does not conta ...
- C# 测试代码段性能耗时
一: DateTime BeginTime = System.DateTime.Now; //代码 DateTime EndTi ...
- proc-virtual-file-system
内核代码中分别找出一处 proc 和 seq_file 的完整使用过程,记录下来 在用户空间进行相应"读"."写" 介绍 Proc 虚拟文件系统 操作 proc ...
- LeetCode--292--Nim游戏
问题描述: 你和你的朋友,两个人一起玩 Nim游戏:桌子上有一堆石头,每次你们轮流拿掉 1 - 3 块石头. 拿掉最后一块石头的人就是获胜者.你作为先手. 你们是聪明人,每一步都是最优解. 编写一个函 ...
- Linux中磁盘mbr分区——实践篇
Linux中磁盘mbr分区——实践篇 fdisk命令 语法 fdisk(选项)(参数) 选项 -b <分区大小> 指定每个分区的大小 -l 列出分区表信息 -v 显示版本信息 参数 设备文 ...
- 『计算机视觉』各种Normalization层辨析
『教程』Batch Normalization 层介绍 知乎:详解深度学习中的Normalization,BN/LN/WN 一.两个概念 独立同分布(independent and identical ...
- [Uva P11168] Airport
题目是英文的,这里就不给出来了. 题目的大意是说,在平面上有n个点,要找一条直线,使所有点到直线的平均距离最小,且这些点都在该直线的同一侧(包括直线上). 那么,既然要使距离最小化,还要使所有点一定在 ...
- NOSQL -- mongoDB的了解与安装(Wins10)
NOSQL -- mongoDB的了解与安装 首先看看什么是nosql: 我的理解:非关系型数据库,大多是以map形式存储,map<key,value>,适合存储,查询.redis也是no ...
- Jquery中.attr()和.data()的区别
$.attr()和$.data()本质上属于DOM属性和Jquery对象属性的区别. 一个简单的例子 <!DOCTYPE html> <html> <head> & ...