eeprom

STM32F767+STM32CubeMX I2C通信读写EEPROM数据(采用轮询、DMA、中断三种方式)

青春壹個敷衍的年華 提交于 2019-12-10 14:29:19
STM32F767+STM32CubeMX I2C通信读写EEPROM数据(采用轮询、DMA、中断三种方式) 摘要-前言 作为一名STM32的初学者,在学习过程中会遇到很多问题,解决过程中会看到很多博主发过的文章,每次都是零零总总的学习各个大牛的经验。但时间久了就会忘记其中的一些关键点,所以才有了把自己解决问题的过程记录下来的想法,日后回忆起也很方便。 前人们做过很多STM32 I2C通信的努力,但大多都是基于STM32F0、F1、F4这些系列的板子,而众所周知不同系列之间还是有不同的,这就导致初学者学习STM32时,会遇到很多困难。另外 I2C通信很多人采取的是软件模拟实现,对硬件并不看好。但是毕竟这么多年过去了,HAL库及CubeMX的出现,能够很大程度上解决I2C宕机的问题。所以本文除了讲解CubeMX I2C通信以外,也顺便做了实验来验证I2C的实际效果。 硬件设施:正点原子STM32F676阿波罗开发板 IDE:KEIL5 STM32CubeMX:5.4.0 STM32CubeMX Firmware Package Name and Version:STM32Cube FW_F7 V1.15.0 Keil STM32F767芯片包:Keil.STM32F7xx_DFP.2.12.0 EEPROM:24C02 I2C2-SCL:PH4 I2C2-SDA:PH5 轮询方式

Is it worth to implement small filesystem for an EEPROM

血红的双手。 提交于 2019-12-07 06:09:11
问题 I have bought an I2C EEPROM. I want to store sensor and voltage data. I'm assuming that value can be bigger than one byte, and there can be a lot of data. Is it worth is such case to implement a filesystem with small file allocation table? It would make me easier to peek trought EEPROM for example. 回答1: I see two causes for a FAT on EEPROM If there is a requirement for the flexibility of having different files. Such as for data logging or configurations. It allows multiple such configuration

STC单片机Flash做EEPROM的代码

倾然丶 夕夏残阳落幕 提交于 2019-12-05 12:37:56
STC官方给出的建议: 1 /***************************************************************Author:Liming*** 2 * @brief 读取参数 3 * @param None 4 * @retval None 5 ****************************************************************0x49E7FC7B*****/ 6 void ReadParam(void) 7 { 8 uint8_t i; 9 uint8_t buffer[64][8];//1扇区分为64块存储区 1块内的8个字节 10 11 EepromReadBytes(IAP_SECTOR0, &buffer[0][0], 0x200); 12 13 #ifdef DEBUG 14 for(i=0; i<64; i++)//调试模式输出数据 15 { 16 SendBytes(&buffer[i][0], 8); 17 SendString("\r\n"); 18 Delay(25); 19 } 20 #endif 21 22 for(i=0; i<64; i++) 23 { 24 if((buffer[i][0] == 0xff) && buffer[i][1] != 0xff) 25

Is it worth to implement small filesystem for an EEPROM

旧街凉风 提交于 2019-12-05 09:47:12
I have bought an I2C EEPROM. I want to store sensor and voltage data. I'm assuming that value can be bigger than one byte, and there can be a lot of data. Is it worth is such case to implement a filesystem with small file allocation table? It would make me easier to peek trought EEPROM for example. I see two causes for a FAT on EEPROM If there is a requirement for the flexibility of having different files. Such as for data logging or configurations. It allows multiple such configuration/log files, to be independent and easily added in the future. This can be a very successful building block

offsetof(s,m)解析

南笙酒味 提交于 2019-12-04 18:49:08
h ttps://www.cnblogs.com/jingzhishen/p/3696293.html sizeof()用法汇总 sizeof()功能:计算数据空间的字节数 1.与strlen()比较 strlen()计算字符数组的字符数,以"\0"为结束判断,不计算为'\0'的数组元素。 而sizeof计算数据(包括数组、变量、类型、结构体等)所占内存空间,用字节数表示。 2.指针与静态数组的sizeof操作 指针均可看为变量类型的一种。所有指针变量的sizeof 操作结果均为4。 注意:int *p; sizeof(p)=4; 但sizeof(*p)相当于sizeof(int); 对于静态数组,sizeof可直接计算数组大小; 例:int a[10];char b[]="hello"; sizeof(a)等于4*10=40; sizeof(b)等于6; 注意:数组做型参时,数组名称当作指针使用!! void fun(char p[]) {sizeof(p)等于4} char str[20]="0123456789"; int a=strlen(str); //a=10; int b=sizeof(str); //而b=20; char ss[] = "0123456789"; sizeof(ss) 结果 11 ===》ss是数组,计算到\0位置,因此是10+1 sizeof(

痞子衡嵌入式:串行EEPROM接口事实标准及SPI EEPROM简介

邮差的信 提交于 2019-12-04 16:32:15
  大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家介绍的是 EEPROM接口标准及SPI EEPROM 。   痞子衡之前写过一篇文章 《SLC Parallel NOR简介》 ,介绍过并行NOR Flash基本概念。众所周知,现如今嵌入式非易失性存储器基本被NOR Flash一统江湖了,但在Flash技术发明之前,EEPROM才是非易失性存储器的霸主。EEPROM的全称是"电可擦除可编程只读存储器",即Electrically Erasable Programmable Read-Only Memory,EEPROM技术的发明可是拯救过一大批嵌入式工程师的,毕竟在这之前非易失性存储器技术的演进分别是ROM(只读), PROM(只能写一次), EPROM(紫外线可擦除),擦除方式都不太友好,直到EEPROM的出现才变得人性化。虽说现在Flash是主流,但在较低容量(2Mb以下)尤其是超低容量(1Kb以下)的市场,EEPROM仍然有其不可替代的应用场合。今天痞子衡就来好好聊一聊EEPROM: 一、EEPROM背景简介   聊到EEPROM发展史,不得不提浮栅MOSFET,这是一项发明于1967年的技术,它是所有闪存的基础。1970年,第一款成功的浮栅型器件-EPROM被发明。1979年,大名鼎鼎的SanDisk(闪迪)创始人Eli Harari

Qualcomm平台camera调试移植入门

淺唱寂寞╮ 提交于 2019-12-04 14:43:32
1 camera基本代码架构 高通平台对于camera的代码组织,大体上还是遵循Android的框架:即上层应用和HAL层交互,高通平台在HAL层里面实现自己的一套管理策略; 在kernel中实现sensor的底层驱动。但是,对于最核心的sensor端的底层设置、ISP效果相关等代码则是单独进行了抽离,放在了一个 daemon进程中进行管理: 图1 Qualcomm平台camera代码架构简图 由于高通把大部分具体的设置及参数放到了daemon进程中,所以在kernel部分只是进行了V4L2的设备注册、IIC设备注册等简单的动作: 图2 kernel层camera主要代码简图 如上图,camera在kernel层的主文件为msm.c,负责设备的具体注册及相关方法的填 充;在msm_sensor.c文件中,主要维护高通自己的一个sensor相关结构体—msm_sensor_ctrl_t,同时把dts文件中的配置 信息读取出来;kernel层对于不同的sensor对应自己的一个驱动文件— xxsensor.c,主要是把power setting的设定填充到msm_sensor_ctrl_t中。 在vendor目录下,高通把各个sensor实质性的代码放置在此。一部分代码是高通自己实现的daemon进程和kernel层及HAL层进行通讯的 框架代码

EEPROM的概念接口类型及软件实例

吃可爱长大的小学妹 提交于 2019-12-03 11:38:45
基本概念   EEPROM的全称是“电可擦除可编程只读存储器”,即Electrically Erasable Programmable Read-Only Memory。是相对于紫外擦除的rom来讲的。但是今天已经存在多种EEPROM的变种,变成了一类存储器的统称.这种rom的特点是可以随机访问和修改任何一个字节,可以往每个bit中写入0或者1。这是最传统的一种EEPROM,掉电后数据不丢失,可以保存100年,可以擦写100w次。具有较高的可靠性,但是电路复杂/成本也高。因此目前的EEPROM都是几十千字节到几百千字节的,绝少有超过512K的。不过,这个在高稳定性设备上面,还是一个必需品。使用的人还不少。 接口类型   EEPROM的接口一般分为两种:SPI和I2C。 SPI接口为四线,型号如AT25XXX。典型的硬件电路:   I2C接口为2线,型号如24CL02/04/XX.典型的硬件电路: 这里直接按照标准的SPI协议和I2C协议即可,唯一不同的就是它们一些地址和普通的Flash不同,这个需要对着用户手册查看的 EEPROM的操作—SPI接口和I2C接口 - 远航路上ing - 博客园 读写的时候,注意几个问题,前面链接的文章写的很清楚了,我这里就不做赘述了。 软件实例   笔者做这块的测试设备,需要在stm32 f4系列上实现它的操作,整体功能已经交付客户使用

Is there a general algorithm for microcontroller EEPROM wear leveling?

你说的曾经没有我的故事 提交于 2019-12-03 05:15:59
问题 I'm working on an Arduino library that will maximize the life of the AVR's EEPROM. It takes the number of variables you want to store and does the rest. This is my attempt, which does not work in all cases. Background information Atmel says each memory cell is rated for 100,000 write/erase cycles. They also provide an application note, which describes how to perform wear levelling. Here is a summary of the application note. By alternating writes across two memory addresses, we can increase

基于51单片机的温度采集系统

匿名 (未验证) 提交于 2019-12-03 00:22:01
前面,笔者介绍了如何制作一个小空间的温度湿度检测系统,这一次,笔者给大家介绍一下一个温度湿度收集装置的制作。 下面是一张原理图: 源代码如下: #include <reg52.h> #define uint unsigned int #define uchar unsigned char #include <intrins.h> typedef bit BOOL ; sbit io = P1^ 1 ; //(口线定义) sbit bee=P1^ 0 ; sbit rs = P2^ 5 ; sbit rw = P2^ 6 ; sbit ep = P2^ 7 ; bit flag_300ms ; sbit K1=P1^ 2 ; sbit K2=P1^ 3 ; sbit K3=P1^ 4 ; uchar yemian= 0 ; //(定义变量) uchar flat= 1 ; uchar data_byte; uchar RH,RL,TH,TL; uchar WenDu,ShiDu; //报警的温度和湿度 #include "eeprom52.h" /****************************延时程序****************************/ void delay(uchar ms) { // 延时子程序 uchar i ; while (ms--) {