一、请教单片机掉电后,如何快速的保存数据问题?
针对题主的问题,我想应该从以下几个方面入手:
尽量选用内部的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内容,可以直接写入数据,可以节省大量的时间。
二、单片机掉电检测与保存该怎么样做?
1,单片机掉电,可不代表端口上就没电,电压还是加在单片机上,是没有电流流过单片机,掉电后单片机相当于无穷大电阻,只有微弱有电流留过控制口(一般很小,uA级),以便控制口得到开启逻辑,cpu将醒来.2,在它要睡眠时,会交代下,留下钥匙来开启它,一般是外部中断,STC12C5410AD当然有很多端口可以唤醒cpu, 所谓掉电检测中断,就是外中断来了,当然有逻辑要求,边缘,或低电平,的信号,暗号对上了cpu就上电了,内部逻辑导通,正常电流流过,开始正常工作了.
三、如何保存单片机程序设定的参数,停电后这些参数不会消失?
很多单片机(如PIC16F87X系列)除了基本的ROM和RAM外,都带有内部EEPROM,CPU是在运行时可以对EEPROM进行读写的。
EEPROM掉电后的信息是不会丢失的。四、labview如何做掉电保存?
labview做掉电保存的解决方法
把数据存放在D200-D511都可以实行掉电保持的。 寄存器是中央处理器内的组成部分。寄存器是有限存贮容量的高速存贮部件,它们可用来暂存指令、数据和地址。在中央处理器的控制部件中,包含的寄存器有指令寄存器(IR)和程序计数器(PC)。在中央处理器的算术及逻辑部件中,存器有累加器(ACC)。 寄存器是内存阶层中的最顶端,也是系统获得操作资料的最快速途径。
五、单片机复位与单片机掉电是一样吗?
不一要,复位是重新启动程序,从头运行。
掉电如果重新送上电就和复位一样,如果不送电那就是停机。六、单片机空闲掉电模式哪个模式比较省电?
单片机在运行程序的时候比空闲模式费电。
七、怎么找各种单片机和电子芯片的数据和参数?
1、直接去品牌官网或者代理商那里查找。确定了需要查找的芯片型号之后,去到相应的品牌官网和代理商去搜索查询。缺点是挨个挨个查很繁琐很花费时间。
2、按照芯片型号一个个去搜索引擎搜索。有被收录的型号就能够找到芯片(datasheet)资料,不过要一页页翻有点麻烦;这里要注意可能还会出现型号相同而用错datasheet资料的情况。
3、上专门的datasheet芯片查询网站、小程序、APP去查;最好去比较全面的平台,按照器件型号一键搜索,就能找得到的那种,很方便。比如:
icspec,一款实用又免费的芯片规格书查询工具。
awww.icspec.com/indexwww.icspec.com/indexwww.icspec.com/indexwww.icspec.com/indexwww.icspec.com/indexwww.icspec.com/indexwww.icspec.com/indexwww.icspec.com/indexwww.icspec.com/indexwww.icspec.com/indexwww.icspec.com/indexwww.icspec.com/indexwww.icspec.com/indexwww.icspec.com/indexwww.icspec.com/indexwww.icspec.com/indexwww.icspec.com/indexwww.icspec.com/indexwww.icspec.com/indexwww.icspec.com/indexwww.icspec.com/indexwww.icspec.com/indexwww.icspec.com/index还有icspec微信小程序和icspec App,可以查询元器件型号、芯片规格书、datasheet(数据手册)下载、参数对比、企业信息查询、半导体行业资讯、技术资料等等。
整合了三千多家芯片原厂品牌,集聚了一千多万份芯片规格书,并且支持大批量下载。
八、mcgs触摸屏掉电保存怎么设置?
你好,MCGS触摸屏掉电保存需要进行以下设置:
1. 在MCGS编程软件中打开工程,在“系统设置”中找到“掉电保存”选项。
2. 在“掉电保存”选项中勾选“使能掉电保存”选项。
3. 在“掉电保存”选项中设置需要保存的参数,包括触摸屏状态、数据等。
4. 在“掉电保存”选项中设置保存的方式,可以选择内部Flash、SD卡等。
5. 在“掉电保存”选项中设置恢复时的操作,包括恢复的顺序、时间等。
6. 在“掉电保存”选项中保存设置,然后下载到MCGS触摸屏中。
以上就是MCGS触摸屏掉电保存的设置方法,用户可以根据实际需求进行设置。
九、单片机切换参数模式保存后再运行,如何实现的?
先定义一个变量,用于保存运行模式。如果还想掉电保存,就同时保存在内部EEPROM中。每次开机上电时,都检查EEPROM中保存的这个变量值,如果是0xFF,说明是第一次上电,就写入一个默认的运行模式。否则,不是0xFF,说明已经保存了一个运行模式了,就读出来放在定义的变量中。好了,下面就执行一些初始化程序,然后显示出主界面,再根据运行模式变量值转去执行相应的运行模式了。
再回到你提问的问题上来,按键设置了新的运行模式,但不执行新的运行模式,只是改变模式变量值,确定设置完成后,保存在EEPROM中。如果设置新的运行模式,需要重新初始化,就转向前面的初始化程序,之后显示主界面,下面就根据变量值转向新的运行摸式了。如果不需要初始化,就直接转回显示主界面处往下执行就可以了。
十、51单片机怎么保存函数?
把一些功能相对独立的模块(子程序集合)单独编成一个源文件,然后再编一个头文件,把这个源文件中用到宏定义及子程序在头文件中声明一下,然后将源文件添加到工程中,主文件中包含该头文件即可