找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1820|回復(fù): 7
收起左側(cè)

單片機(jī)意外掉電數(shù)據(jù)快速保存方法

[復(fù)制鏈接]
ID:838763 發(fā)表于 2024-7-15 11:11 | 顯示全部樓層 |閱讀模式
最近在項(xiàng)目上遇到需要意外掉電保存20個(gè)字節(jié)的數(shù)據(jù),因?yàn)橐4娌榭催@些信息,所以數(shù)據(jù)保存在外部eeprom里面,但是掉電瞬間系統(tǒng)供電不能長時(shí)間維持寫入,,方法將要寫的數(shù)據(jù)先保存在單片機(jī)內(nèi)部flash里面,開機(jī)的時(shí)候在寫到外部存貯器,STM32本身具有低電壓檢測,這樣就不需要硬件電路配合就可以簡單的實(shí)現(xiàn)大量數(shù)據(jù)意外掉電保存的要求,目前測試良好,提供給大家,看看哪位高人還有什么方法能決絕這樣類似問題。
回復(fù)

使用道具 舉報(bào)

ID:466250 發(fā)表于 2024-7-15 17:17 | 顯示全部樓層
還可以用鐵電,寫入次數(shù)接近無限次,無視掉電
回復(fù)

使用道具 舉報(bào)

ID:401564 發(fā)表于 2024-7-15 18:32 | 顯示全部樓層
藍(lán)藍(lán)小星星 發(fā)表于 2024-7-15 17:17
還可以用鐵電,寫入次數(shù)接近無限次,無視掉電

鐵電一般是100億次以上,但并不是無限的,一樣的要掉電檢測的
回復(fù)

使用道具 舉報(bào)

ID:384109 發(fā)表于 2024-7-15 20:07 | 顯示全部樓層
要保存的數(shù)據(jù)在調(diào)電瞬間有更新的話該怎么保存呢
回復(fù)

使用道具 舉報(bào)

ID:466250 發(fā)表于 2024-7-16 01:52 | 顯示全部樓層
Y_G_G 發(fā)表于 2024-7-15 18:32
鐵電一般是100億次以上,但并不是無限的,一樣的要掉電檢測的

鐵電內(nèi)部就是用的ram,沒有寫入等待時(shí)間。肯定是無限次,只是廠家保守了。掉電還寫入引起出錯(cuò)的問題,這是程序邏輯問題,不是鐵電的問題。
回復(fù)

使用道具 舉報(bào)

ID:421260 發(fā)表于 2024-7-16 07:46 | 顯示全部樓層
用了N年的掉電數(shù)據(jù)源保存!
void PVD_NVIC_Configuration(void)
{
    NVIC_InitTypeDef NVIC_InitStructure; //中斷優(yōu)先級配置
    EXTI_InitTypeDef EXTI_InitStructure;

    RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, ENABLE);

    NVIC_InitStructure.NVIC_IRQChannel = PVD_IRQn;
    NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
    NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
    NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
    NVIC_Init(&NVIC_InitStructure);

    EXTI_StructInit(&EXTI_InitStructure);
    EXTI_InitStructure.EXTI_Line = EXTI_Line16;             //PVD連接到中斷線16上
    EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;     //使用中斷模式
    EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising;  //電壓低于閥值時(shí)產(chǎn)生中斷
    EXTI_InitStructure.EXTI_LineCmd = ENABLE;               //使能中斷線
    EXTI_Init(&EXTI_InitStructure);                         //初始

    PWR_PVDLevelConfig(PWR_PVDLevel_2V8);//設(shè)定監(jiān)控閥值
    PWR_PVDCmd(ENABLE);//使能PVD
}
/*-------------------------------------------------------------------------------
PVD中斷
---------------------------------------------------------------------------------*/
void PVD_IRQHandler(void)
{
    if(EXTI_GetITStatus(EXTI_Line16) != RESET)
    {
       這里些:代碼,需要保持的數(shù)據(jù)。。。
        EXTI_ClearITPendingBit(EXTI_Line16);//清中斷
    }
}
回復(fù)

使用道具 舉報(bào)

ID:230500 發(fā)表于 2024-7-16 08:45 | 顯示全部樓層
如果硬件不能更改; 就用鐵電吧;幾乎接近無限次寫入!  其次再考慮一些偏門的方案,比如寫入到時(shí)鐘芯片內(nèi)
回復(fù)

使用道具 舉報(bào)

ID:838763 發(fā)表于 2024-7-16 15:01 | 顯示全部樓層
szqinyi 發(fā)表于 2024-7-16 07:46
用了N年的掉電數(shù)據(jù)源保存!
void PVD_NVIC_Configuration(void)
{

這個(gè)程序本身沒有任何問題,只是斷電系統(tǒng)耗電太大,寫入數(shù)據(jù)較大,就會出問題
回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表