侧边栏壁纸
博主头像
塞塞哇 博主等级

开源创客

  • 累计撰写 38 篇文章
  • 累计创建 9 个标签
  • 累计收到 11 条评论

目 录CONTENT

文章目录

AT32-扩大SRAM

塞塞蛙
2024-01-26 / 0 评论 / 0 点赞 / 258 阅读 / 0 字

AT32-扩大SRAM

AT32 MCU某些型号片上SRAM,有提供一个特别的SRAM扩展模式,可让用户通过设定用户系统数据区的EOPB0来调整SRAM的大小。一般此扩展模式的设置都建议使用雅特力的ICP或ISP工具,在产品批量生成时跟程序的烧录一起完成,但在使用者无法使用ICP/ISP工具的情境下,也可以通过执行程序来完成。本篇指南将说明如何在程序中正确的设置EOPB0来完成SRAM的扩展。

支持型号
AT32F403xx

AT32F403Axx

AT32F407xx

AT32F413xx

AT32F435xx

AT32F437xx

参考文章: https://bbs.21ic.com/icview-2980266-1-4.html

修改步骤

内置 SRAM 96KB(默认)/224KB 大小可以通过以下任何方式选择:

AT32F403A SRAM 大小设置涉及 FLASH 用户系统数据说明,通过配置 EOPB0 选择,地址是:0x

1FFF_F810。

EOPB0=0xFF 表示片上 SRAM 为 96KB

EOPB0=0xFE 表示片上 SRAM 为 224KB。

使能 EOPB0 有效务必要掉电或 RESET 一次。

1 在任意C文件中增加一个方法

/**
 * 扩展内存 224K
 */
void extend_sram(void) {
    // 其中EXTEND_SRAM的定义值在工程项目配置选项中完成。须注意函数内,不可使用全局变量
    if (((USD->eopb0) & 0xff) != EXTEND_SRAM) {
        flash_unlock();
        flash_user_system_data_erase();
        flash_user_system_data_program((uint32_t)&USD->eopb0, EXTEND_SRAM);
        nvic_system_reset();
    }
}

2 修改启动文件

image-pntk.png

 ; 添加扩展内存
                IMPORT extend_sram
                MOV32 R0, #0x20001000
                MOV SP, R0
                LDR R0, =extend_sram
                BLX R0
                MOV32 R0, #0x8000000
                LDR SP, [R0]
                ;End

修改Keil的内存大小如图所示

image-pjbb.png

0x38000/1024 = 224

烧录完成需要重新上电,如果在后续烧录出现烧录失败M4内核信息,可以尝试使用ISP工具清空Flash,且此工具还可以读取设备信息查看是否内存大小配置正确。

0
  1. 支付宝打赏

    qrcode alipay
  2. 微信打赏

    qrcode weixin

评论区