STM32
直播中

廉鼎琮

8年用户 971经验值
私信 关注
[问答]

STM32F429IGT6将flash配置为双bank,cpu经常坏掉,无法烧写的原因?

大家好!
STM32F429IGT6芯片有一个内部flash,大小为1MB,默认是1个bank,12个sector。
手册里有说,可以设置为双bank模式,即每个bank大小为512KB,每个bank有8个sector。

HAL_StatusTypeDef SetFlashDoubleBank(void)
{
        HAL_StatusTypeDef status = HAL_ERROR;
        //celar all flags
        __HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_EOP | FLASH_FLAG_OPERR | FLASH_FLAG_WRPERR
                                                  | FLASH_FLAG_PGAERR | FLASH_FLAG_PGPERR | FLASH_FLAG_PGSERR);

        /* Wait for last operation to be completed */
        status = FLASH_WaitForLastOperation((uint32_t)FLASH_WAIT_TIMEOUT_VALUE);
        if(status != HAL_OK)
                return HAL_ERROR;
        //1 UNLOCK
        if(HAL_FLASH_OB_Unlock() != HAL_OK)
        {
                return HAL_ERROR;
        }

        //2 SET DOUBLE BANK BIT
        FLASH->OPTCR |= FLASH_OPTCR_DB1M;

        //3 LAUNCH THE OPTION BTYES
        if(HAL_FLASH_OB_Launch() != HAL_OK)
        {
                return HAL_ERROR;
        }
        //4 LOCK
        if(HAL_FLASH_OB_Lock() != HAL_OK)
        {
                return HAL_ERROR;
        }

        return HAL_OK;
}


笔者使用这个函数将flash配置为双bank。但是问题来了,cpu经常坏掉,无法烧写,请大神们帮忙分析一下,如果在配置双bank时断电,会不会造成内部flash损坏?还有,如果内部flash损坏,将boot模式设置为ram启动,cpu能否启动?

回帖(1)

李泳瑜

2024-4-26 17:27:34
根据您的描述,您正在尝试将STM32F429IGT6的内部flash配置为双bank模式,但遇到了CPU经常坏掉和无法烧写的问题。以下是一些可能的原因和解决方案:

1. 配置错误:确保您正确地配置了双bank模式。请仔细检查您的代码,确保您遵循了STM32F429IGT6参考手册中的步骤。

2. 电源问题:确保您的开发板电源稳定且在规定的范围内。不稳定的电源可能导致CPU损坏。

3. 烧写器问题:如果您使用的是外部烧写器,请确保它与STM32F429IGT6兼容,并且烧写器的固件是最新的。

4. 代码问题:检查您的代码,确保没有无限循环或其他可能导致CPU损坏的问题。

5. 硬件问题:检查您的开发板,确保所有连接都正确,没有短路或损坏的元件。

6. 固件问题:确保您使用的是最新的HAL库和固件。

7. 散热问题:确保您的开发板有足够的散热,过高的温度可能导致CPU损坏。

8. 编程电压:检查您的编程电压是否在规定的范围内。过高或过低的电压都可能导致CPU损坏。

9. 编程速度:尝试降低编程速度,以减少对CPU的压力。

10. 重置问题:在编程过程中,确保正确地重置了设备。


举报

更多回帖

发帖
×
20
完善资料,
赚取积分