当前位置: 首页 > news >正文

杰发科技AC7801——EEP内存分布情况

简介

按照文档进行配置

核心代码如下

/*!* @file sweeprom_demo.c** @brief This file provides sweeprom demo test function.**//* ===========================================  Includes  =========================================== */
#include <stdlib.h>
#include "ac780x_sweeprom.h"
#include "ac780x_debugout.h"/* ============================================  Define  ============================================ */
#define SWEEPROM_SIZE (1024UL) /* Ssoftware eeprom size(Byte) */
#define TEST_WORDS 100
/* ===========================================  Typedef  ============================================ *//* ==========================================  Variables  =========================================== */uint32_t g_testA[TEST_WORDS] = {0}; /* Buffer for software eeprom read and write */
uint32_t g_testReadA[TEST_WORDS] = {0};
/* ====================================  Functions declaration  ===================================== *//* ======================================  Functions define  ======================================== */
/*** @brief elfash overnight test** @param[in] none* @return none*/
void SWEEPROMDemoTest()
{uint32_t i, j = 0;uint32_t tmpCircle = 0;  //注意16位只能计算到65536后从0开始,如需更大数字需要32位EFLASH_UnlockCtrl(); //每次重启都需要初始化/* initialize eeprom size 1KB, locate in the 62th page in eflash */SWEEPROM_Init(SWEEPROM_SIZE, 60);// SWEEPROM_Erase();SWEEPROM_Read(0, (uint16_t *)g_testReadA, 2);tmpCircle = 0;while (j < 100){for (i = 0; i < TEST_WORDS; i++){g_testA[i] = i + tmpCircle;}tmpCircle++;SWEEPROM_Write(0, (uint16_t *)&g_testA[0], TEST_WORDS * 2);SWEEPROM_Read(0, (uint16_t *)g_testReadA, TEST_WORDS * 2);if (j % 10 == 0){for (i = 0; i < TEST_WORDS; i++){printf("%d ", g_testReadA[i]);}printf("\r\n");}j++;}while (1);
}/*** @brief main function** @param[in] none* @return none*/
int main(void)
{InitDebug();InitDelay();// sweepromDemoTest();SWEEPROMDemoTest();while (1);
}

使用ATClink查看内存

通过计算发现在65K的地方

实际上应该是从60页也就是2K*60=120K的地方。

再测试其他页,从50页开始

提出疑问

再看看上面的65K数据,65k/2=32页,想起来之前从32页写过数据,因此再改成32页。观察结果发现最后写的数据没有变化。

根据打印的结果来看,应该在202最后一个数字,结果不对

最后一个值应该是CA

怀疑是数据没有擦除,于是擦除全片数据,然后再进行读写。

因为从后面写的话,每次看地址都要把开始地址往后挪一点有点麻烦,于是从第10页开始写。然后看内存。

正确结果

最终发现在5000的地址,也就是在刚好20K的地方开始写数据。

符合我们的页数设置,第10页,每页2K,即第20480的地址就是第10页的起始地址。

SWEEPROM_SIZE的关系

页数的地址搞清楚了,和SWEEPROM_SIZE是否有关系呢?

此时修改SWEEPROM_SIZE大小来看看有何变化

SWEEPROM_SIZE设置为4096,发现没有变化

测试不同页设置的结果

试一下是否都是按照这个格式来擦写

从第56页的位置开始写

结果显示正常

从第60页开始写,按照计算应该在

结果正确

经过本次测试,我发现,在读写时候应该注意数据长度是16位还是32位。

注意位数——16bit和32bit

在使用16位进行存储时候,正常存储袋10个数,在使用32位时候,发现位数不对。

发现多出来几个数据

SWEEPROM_SIZE的限制

经过测试,从第60页开始写,大小为2048时候是正常的

http://www.lryc.cn/news/241259.html

相关文章:

  • 【mybatis注解实现条件查询】
  • 【广州华锐互动】VR线上课件制作软件满足数字化教学需求
  • MySQL 中 DELETE 语句中可以使用别名么?
  • flutter创建不同样式的按钮,背景色,边框,圆角,圆形,大小都可以设置
  • 【C++】标准模板库STL作业(其二)
  • 基于SpringBoot+Redis实现点赞/排行榜功能,可同理实现收藏/关注功能,可拓展实现共同好友/共同关注/关注推送功能
  • AI“胡说八道”?怎么解?
  • [SIGGRAPH-23] 3D Gaussian Splatting for Real-Time Radiance Field Rendering
  • 大话设计模式C++实现
  • IT 领域中的主要自动化趋势
  • 使用Python解析CAN总线
  • DevExpress中文教程 - 如何在macOS和Linux (CTP)上创建、修改报表(下)
  • RAID的应用场景以及优缺点
  • java SpringCloud版本b2b2c鸿鹄云商平台全套解决方案 小程序商城免费搭建
  • [Linux] shell脚本的函数和数组
  • 万宾科技智能井盖的效果怎么样?
  • nvm切换版本之后npm用不了
  • 【elementui】el-popover在列表里循环使用,取消的doClose无效解决办法
  • 【php】解决加载速度慢导出超时问题记录
  • postgresql安装fdw扩展
  • 反爬虫机制与反爬虫技术(二)
  • Grails 启动
  • 2023年亚太地区数学建模大赛 问题A
  • 基于springboot实现校园在线拍卖系统项目【项目源码】
  • 详解ES6的Promise
  • 多语言快速排序算法
  • opencv-图像梯度
  • linux centos7 安装nginx
  • Xilinx Zynq-7000系列FPGA实现视频拼接显示,提供两套工程源码和技术支持
  • DAOS低时延与高性能RDMA网络