我造轮子,你造车,创客一起造起来!塔克创新资讯【塔克社区 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存储的更多相关文章

  1. 玩转X-CTR100 l STM32F4 l ADC 模拟数字转换

    我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ]      本文介绍X-CTR100控制器 AD转换接 ...

  2. 玩转X-CTR100 l STM32F4 l MPU6050加速度陀螺仪传感器

    我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ]      本文介绍X-CTR100控制器 板载加速度 ...

  3. 玩转X-CTR100 l STM32F4 l X-CTR100与树莓派搭建机器人平台

    我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ] 本文介绍X-CTR100控制器与树莓派Linux系统 ...

  4. 玩转X-CTR100 l STM32F4 l 舵机控制

    我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ] 本文介绍X-CTR100控制器的舵机控制,X-CTR ...

  5. 玩转X-CTR100 l STM32F4 l DRV8825 A4988 步进电机控制

    我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ]      本文介绍X-CTR100控制器控制步进电机 ...

  6. 玩转X-CTR100 l STM32F4 l 基础例程printf、LED、蜂鸣器、拨码开关、位带操作

    我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ]      本文介绍X-CTR100控制器基础板载资源 ...

  7. 玩转X-CTR100 l STM32F4 l PS2无线手柄

    我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ] SONY的PS2无线手柄是索尼游戏机的遥控手柄,控制 ...

  8. 玩转X-CTR100 l STM32F4 l DSP指令集性能测试

    我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ]      本文介绍X-CTR100控制器 DSP库的 ...

  9. 玩转X-CTR100 l STM32F4 l FPU单精度浮点性能测试

    我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ]      本文介绍X-CTR100控制器如何开启ST ...

随机推荐

  1. 雷林鹏分享:jQuery EasyUI 树形菜单 - 创建基础树形网格

    jQuery EasyUI 树形菜单 - 创建基础树形网格 树形网格(TreeGrid)组件从数据网格(DataGrid)继承,但是允许在行之间存在父/子节点关系.许多属性继承至数据网格(DataGr ...

  2. (转) gffcompare和gffread | gtf | gff3 格式文件的分析 | gtf处理 | gtfparse

    工具推荐:https://github.com/openvax/gtfparse 真不敢相信,Linux自带的命令会这么强大,从gtf中提取出需要的transcript,看起来复杂,其实一个grep就 ...

  3. HDOJ 1022 Train Problem

    两个数组存进出顺序,如果不同进栈,相同出栈.

  4. Confluence 6 空间的权限是附加的

    空间的权限是附加的.如果一个用户以个人的方式或者以一个用户组成员的方式赋予了权限,Confluence 将会把这些权限合并在一起.  下面是这个概念的示例... Sasha 是 confluence- ...

  5. CentOS6.8下实现配置配额

    CentOS6.8下实现配置配额 Linux系统是支持多用户的,即允许多个用户同时使用linux系统,普通用户在/home/目录下均有自己的家目录,在默认状态下,各个用户可以在自己的家目录下任意创建文 ...

  6. 『Python』skimage图像处理_旋转图像

    一段简短的实现图像旋转的代码,使用了skimage库,据说和PIL相比,skimage对numpy等科学计算库的支持更好,这里是为了完成师兄给的帮他修改程序的任务,如果以后有需求的话可能会对pytho ...

  7. Codeforces Round #503 (by SIS, Div. 1)E. Raining season

    题意:给一棵树每条边有a,b两个值,给你一个m,表示从0到m-1,假设当前为i,那么每条边的权值是a*i+b,求该树任意两点的最大权值 题解:首先我们需要维护出(a,b)的凸壳,对于每个i在上面三分即 ...

  8. 第二阶段——个人工作总结DAY10

    1.昨天做了什么:昨天其实什么也没实现. 2.今天打算做什么:今天就软件,等到审核过了,再看看软件最后后台是怎么实现的. 3.遇到的困难:后台自己都没有实现.

  9. 基于spring的web项目启动时预加载数据到ServletContext

    1.要在web启动时预加载数据到ServletContext,实现方法有很多,一种比较简单的方案就是: 1)新建一个bean,定义其初始化方法: <bean id="beanId&qu ...

  10. hdu1569-方格取数-二分图网络流

    方格取数(2) Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Su ...