无法在这个位置找到: article_head.htm
返回首页

请教单片机掉电后,如何快速的保存数据问题?

86 2025-04-17 00:08 赋能高科

一、请教单片机掉电后,如何快速的保存数据问题?

针对题主的问题,我想应该从以下几个方面入手:

尽量选用内部的flash来存储数据,内部flash的读写速度快,可靠性高。

  如果用外置的flash或者是eeprom进行存储,flash一般是spi接口,考虑到电磁干扰,MCU的响应速度等问题,即使是采用MCU的硬件SPI模块进行通信,SPI的clock时钟最高也就1MHz左右,发送1个字节的数据大概需要10us,不考虑擦除flash的时间,存储100个字节的数据,如果考虑可靠性,需要读取验证,大概需要5ms左右的时间。

 而eeprom一般采用IIC接口,与SPI接口类似,以高速IIC进行通信,存储100个字节的数据至少需要5ms左右的时候。

FLASH的特点是写数据只能由1改写为0,由0改写为1需要整个page,或者整个sector,或者整个block进行擦除。

以STM32F051为例,一个page为1kByte,一个block为64kByte,擦除一个page大概耗时约20ms,在整个擦除过程中,整个MCU是挂机的,也就是不执行任何操作。而FLASH的写操作比较快,大概1个Byte耗时1us。

需要有掉电检测电路,掉电检测需要通过检测给MCU供电的LDO或者DC-DC的前级电压。

比如MCU通过12V-3.3V的LDO供电,则需要通过检测12V的电压来判断是否断电。

将12V通过电阻分压之后,接入MCU的A/D检测口来判断是否掉电。

MCU供电的LDO或者DC-DC的前级并联足够的电容,以确保电容的供电能保证MCU将数据写入。

 可以通过以下的步骤确认电容的大小:

评估由掉电时前级电压供电的工作电流大小,MCU一旦检测到掉电,需要切掉耗电大的输出,比如控制继电器输出的I/O口需要立即断开。比如20mA。

确认LDO的最低输入电压,比如5.3

确认判断掉电的电压,比如10V,确认掉电开始到LDO最低输入电压之间的压差,比如4.7V

确认写入所有数据所需要的时间,比如20ms。

根据公式计算所需电容的容量,C=I*T/U=20mA*20mS/4.7V=85uF。可选择100uF的电容。

MCU一旦检测到掉电,需要切掉耗电大的输出,比如控制继电器输出的I/O口需要立即断开。

在正常工作时,事先准备一块存储空间,将其擦除成为0xFF。

检测到掉电之后,可以不需要擦除FLASH内容,可以直接写入数据,可以节省大量的时间。

二、pb如何保存数据?

PB(Protocol Buffers)可以通过以下方式来保存数据:

1.将数据序列化为二进制格式并写入到文件中。PB使用自定义二进制格式来序列化和反序列化数据,这些二进制数据可以直接写入文件或者传输到其他系统中。

2.将数据序列化为JSON或者XML格式并写入到文件中。PB支持将数据序列化为JSON或者XML格式,这些格式可以方便的读取和修改,但是序列化的数据会变得更大,不如二进制格式节省空间。

3.使用PB内置的数据库。PB提供了内置的数据库支持,可以将数据直接保存到数据库中,比如SQLite、PostgreSQL、MySQL等。这种方式可以方便的管理和查询数据,但是需要更多的系统资源。总之,PB支持多种方式来保存数据,需要根据实际情况选择合适的方式,以便满足应用需求。

三、示波器如何保存数据?

一般数字示波器保存有两种方式,图,保存图片和保存数据。图片保存就是将示波器显示屏上的内容全屏保存,另一种是仅将数据保存示波器上。保存键是英文save,简写为SAV。点了保存后通常会选择图片保存或数据保存,按照提示选择保存即可。

四、python如何保存数据?

python数据的保存方法如下:

1、如果你是使用集成的开发环境,直接去C盘文件夹下可以找到相应的程序文件,它是自动保存的;

2、如果你是使用python 自带的GUI,也可以像上面的方法找到文件,但也可以另存为(save as).py文件到你自己的地址;

3、如果你是使用命令行,你可以点击菜单“全选”、“复制”,到一个新建的txt文件中,然后保存.txt文件,并将文件扩展名.txt修改为.py即可。

五、otdr数据如何保存?

保存方法:OTDR测试数据导出根OTDR的型号是有关系的,有的OTDR需要用数据线、有的OTDR需要用到PCIM卡,现在出厂的OTDR一般都有USB口的,直接插上U盘就可以了,如北京奥普维尔、EXFO的OTDR都可以直接插U盘就可以导出了

六、51单片机如何存储数据?

不知道你是想保存什么类型的数据,是掉电保护的还是缓存的?

如果是保存掉电不保护的缓存数据,可以用单片机内部的RAM空间,包括20H~7FH直接寻址区、80H~FFH中非SFR占用的间接寻址区,在STC单片机中还有内部扩展RAM也可以使用。

如果是保存掉电保护的数据,可以在单片机外部挂机flash或eeprom芯片。目前常用的51单片机中,有部分型号可以将ROM的顶端空间配置成eeprom,用于存储这类掉电保护的数据。

七、json保存业务数据如何增量保存?

Json保存业务数据时的增量保存方法如下:

1. 确认需要增量保存的数据:首先需要确认需要增量保存的数据,则需要记录之前保存过的数据和最新的数据,然后对这些数据进行对比,找出需要增量保存的数据。

2. 对比需要保存的数据:在获得最新数据和之前数据之后,需要对数据进行比较,找出新数据和旧数据之间的差异,然后对这些差异进行增量保存,通常可以通过循环遍历的方式进行对比。

3. 保存增量数据:在找出差异之后,需要将新增和修改的数据进行增量保存,在原有的JSON字符串中添加新增的数据和修改的数据,同时对删除的数据做出相应的标记,并在存在这些标记的时候删除这些数据。

4. 更新 JSON 文件:在完成增量保存后,需要将更新后的 JSON 保存到文件中,并使用相应的存储技术将 JSON 数据存储到数据库或缓存中,使得后续可以随时访问和使用。

增量保存的过程需要注意数据的安全性和准确性,需要确保新增和修改的数据与原有数据无冲突。增量保存并不是每次都需要执行,通常需要根据具体业务需求和数据量大小来决定是否需要增量保存。同时,增量保存需要考虑数据的并发处理,以解决多线程访问导致的数据不一致问题。

八、Keep跑步后数据如何保存数据?

软件会自动保存数据,也可以分享到朋友圈

九、wireshark如何保存全部数据?

1、打开wireshark->Capture->Interface->选择你的网卡(选中)->Start2、OK抓包开始,工具栏上有stop,点击停止抓包3、过滤,这个你可以看我之前回复的一个问题。或者网上查一查。比如tcp&&tcp.len>04、Fire->Save下面有选项,选择过滤完的,还是全部的,还是选中的。

5、输入文件名,欧了~?oldq=1

十、dvd碟如何保存数据?

如果你的电脑有刻录光驱,在装机时一定会把刻录软件安装上,常见的就是nero。

打开nero,在选项里选择以数据方式刻录,添加视频文件和图片文件,可带文件夹按提示刻录,视频、照片就被保存在光盘中。在进行刻录的步骤里有一项应选多次刻录,已备光盘未满时以后再次刻录保存其它的文件。不这样选用多次刻录,就是一次性以后就不能添加文件保存了

无法在这个位置找到: article_footer.htm