0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何在APM32E1上高效管理2MB SDRAM

Geehy极海半导体 来源:21ic论坛极海半导体专区 2025-07-15 09:33 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

来源:转载自21ic论坛极海半导体专区

01 前言

一般我们开发MCU自带的SRAM,对一般应用来说,已经够用了,但是对于内存需求较高的场合,比如跑GUI或者算法等,自带的内存会就不够用,这个时候就要外扩SRAM或SDRAM。

不过还好找到了APM32E103VET6S,这款芯片合封了2MB的SDRAM,就是集成在芯片内部的意思,据我阅读数据手册了解,合封的SDRAM只是跟MCU封装在一起,初始化程序写法跟外扩SDRAM是一样的。在程序中使用SDRAM的时候我们都需要填入起始地址,很不方便,这时候就需要内存管理来帮助我们自动分配内存,大大减少开发时间和出现bug的可能。

540caa20-5d71-11f0-baa5-92fbcf53809c.png

图1-1产品命名规范

根据图1-1可以看出APM32后缀带S就是合封了2MB的SDRAM,不带后缀S是没有的,那么再来对比下这2者的区别,如图1-2所示,合封了SDRAM的会把SDRAM所使用到的引脚隐藏起来了,但是官方没有把PB11隐藏起来,与SDRAM存在冲突,如有使用建议更换其他IO口。

54226004-5d71-11f0-baa5-92fbcf53809c.png

图1-2 合封与非合封的区别

接下来看官方芯片数据手册如图1-3,Flash:512KB,SRAM:128KB,SDRAM:2MB

5434d0fe-5d71-11f0-baa5-92fbcf53809c.png

图1-3存储器

543f7b9e-5d71-11f0-baa5-92fbcf53809c.png

图1-4地址映射图

从地址映射可以看到SDRAM的地址从60000000H开始,记住这个地址,待会程序里用到。

02 准备材料

接下来用到2个程序,正点原子战舰内存管理例子和APM32E1的SDK的DMC_SDRAM例子,我们在DMC_SDRAM程序的基础上移植正点原子战舰内存管理例子:

1、【正点原子】战舰STM32F103开发板资料 资料盘(A盘)4,程序源码实验37 内存管理实验

2、APM32E10x_SDK_V1.2ExamplesEMMCDMC_SDRAM

03 移植说明

1、首先复制正点原子战舰内存管理例子里的malloc.c和malloc.h到DMC_SDRAM工程下,修改malloc.c中的外部内存地址为0x60000000

544f384a-5d71-11f0-baa5-92fbcf53809c.png

2、修改malloc.h,我这里SDRAM用1920K,留了点没用完

545d0c86-5d71-11f0-baa5-92fbcf53809c.png

3、移植完成,下面测试下

54722206-5d71-11f0-baa5-92fbcf53809c.png

运行串口打印如下:

548ffdf8-5d71-11f0-baa5-92fbcf53809c.png

Err Count : 0证明SDRAM测试读写正常。然后再看打印的p地址不是0x20000000H,而是在60000000H到60200000H之间,就证明申请的内存用在SDRAM内。

好了,以后程序里就可以用mymalloc(SRAMEX,xxx)函数申请SDRAM自动分配的内存或者mymalloc(SRAMIN,xxx)申请内部SRAM自动分配的内存啦。

注:文章作者在原帖中提供了例程文件,有需要请至原文21ic论坛下载

原文地址:https://bbs.21ic.com/icview-3327108-1-1.html

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 芯片
    +关注

    关注

    462

    文章

    53592

    浏览量

    459820
  • mcu
    mcu
    +关注

    关注

    147

    文章

    18643

    浏览量

    388279
  • sram
    +关注

    关注

    6

    文章

    809

    浏览量

    117247
  • 内存
    +关注

    关注

    9

    文章

    3174

    浏览量

    76146

原文标题:APM32芯得 EP.60 | 自带SRAM不够用?一文教你如何在APM32E1上高效管理2MB SDRAM

文章出处:【微信号:geehysemi,微信公众号:Geehy极海半导体】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    在极海APM32系列MCU中如何把代码重定位到SDRAM运行

    在有些情况下,我们想要把代码放到SDRAM运行。下面介绍在APM32的MCU中,如何把代码重定位到SDRAM运行。对于不同APM32系列的MCU,方法都是一样的。
    的头像 发表于 11-04 09:14 4879次阅读
    在极海<b class='flag-5'>APM</b>32系列MCU中如何把代码重定位到<b class='flag-5'>SDRAM</b>运行

    ESP32-PICO-MINI-02确定内部flash为2MB,没有外部ram吗?

    我购买的 ESP32-PICO-DevKitM-2 ,烧录 getstart 中的helloword程序(添加了打印内部ram和外部ram),日志显示flash只有2MB,外部Ram为0,这与官网上描述的相差很大,这是怎么回事。
    发表于 07-02 08:08

    CC3200如何将flash从1MB改成2MB

    CC3200如何将flash从1MB改成2MB?CC3200将flash从1MB改成2MB,需要修改哪里来适配大flash,如何修改flash各个分区的大小? File system
    发表于 04-05 16:10

    EMW3166内部2MB SPI闪存

    你好,我们正在开发一个对的emw3166 WICED平台项目,我们是否2MB的内部SPI Flash是有线的QSPI的港口很困惑,或对SPI1,使它不可能使用外部引脚4, 5, 6和7
    发表于 08-30 14:51

    为什么在sdkconfig中默认将ESP32闪存容量设置为2MB呢?

    当 ESP32 提供 4MB 闪存时,对于大多数示例,为什么在 sdkconfig 中默认将 ESP32 的( CONFIG_ESPTOOLPY_FLASHSIZE ) 设置为 2MB?我的代码比
    发表于 03-01 07:36

    E1 2.048 Mb/s Interface Pod

    The HP E5125A E1 2.048 Mb/sInterface Pod generates and analyzes2.048 Mb/s PDH frames using
    发表于 07-09 16:43 12次下载

    何在MCU上高效管理内存?

    本文主要介绍内存的基本概念以及操作系统的内存管理算法。
    发表于 02-08 15:29 2次下载
    如<b class='flag-5'>何在</b>MCU<b class='flag-5'>上高效</b>地<b class='flag-5'>管理</b>内存?

    APM32E103xCxE数据手册

    APM32E103xCxE数据手册
    发表于 11-09 21:03 2次下载
    <b class='flag-5'>APM32E</b>103xCxE数据手册

    AN1082_APM32F4xx_SDRAM应用笔记

    AN1082_APM32F4xx_SDRAM应用笔记
    发表于 11-09 21:03 0次下载
    AN1082_<b class='flag-5'>APM32F4xx_SDRAM</b>应用笔记

    APM32E103VET6S_SDRAM模块_SDRAM与IO口冲突问题

    APM32E103VET6S_SDRAM模块_SDRAM与IO口冲突问题
    发表于 11-09 21:03 1次下载
    <b class='flag-5'>APM32E103VET6S_SDRAM</b>模块_<b class='flag-5'>SDRAM</b>与IO口冲突问题

    DS13737 超低功耗Arm® Cortex®-M33 32位MCU+TrustZone®+FPU,240 DMIPS,2MB闪存,786 KB SRAM

    DS13737 超低功耗Arm® Cortex®-M33 32位MCU+TrustZone®+FPU,240 DMIPS,2MB闪存,786 KB SRAM
    发表于 11-23 08:28 0次下载
    DS13737 超低功耗Arm® Cortex®-M33 32位MCU+TrustZone®+FPU,240 DMIPS,<b class='flag-5'>2MB</b>闪存,786 KB SRAM

    DS13086 超低功率Arm® Cortex®-M33 32位MCU+TrustZone®+FPU, 240 DMIPS,高达2MB的闪存,786KB的SRAM,密码器

    DS13086 超低功率Arm® Cortex®-M33 32位MCU+TrustZone®+FPU, 240 DMIPS,高达2MB的闪存,786KB的SRAM,密码器
    发表于 11-23 08:28 0次下载
    DS13086 超低功率Arm® Cortex®-M33 32位MCU+TrustZone®+FPU, 240 DMIPS,高达<b class='flag-5'>2MB</b>的闪存,786KB的SRAM,密码器

    DS12117_32 位 Arm® Cortex®-M7 480MHz MCU,2MB 闪存,1MB RAM,46 com. 和模拟接口,加密

    DS12117_32 位 Arm® Cortex®-M7 480MHz MCU,2MB 闪存,1MB RAM,46 com. 和模拟接口,加密
    发表于 11-23 08:29 0次下载
    DS12117_32 位 Arm® Cortex®-M7 480MHz MCU,<b class='flag-5'>2MB</b> 闪存,<b class='flag-5'>1MB</b> RAM,46 com. 和模拟接口,加密

    DS12110_32 位 Arm® Cortex®-M7 480MHz MCU,最高 2MB 闪存,最高 1MB RAM,46 com. 和模拟接口

    DS12110_32 位 Arm® Cortex®-M7 480MHz MCU,最高 2MB 闪存,最高 1MB RAM,46 com. 和模拟接口
    发表于 11-23 20:26 0次下载
    DS12110_32 位 Arm® Cortex®-M7 480MHz MCU,最高 <b class='flag-5'>2MB</b> 闪存,最高 <b class='flag-5'>1MB</b> RAM,46 com. 和模拟接口

    2MB片内RAM的RTOS微处理器RZ/A1LC数据手册

    RZ/A1LC 微处理器单元(MPU)是 RZ/A1 系列中最具成本效益的产品,其特点是配备运行频率为 400MHz 的 Arm®Cortex®-A9 内核以及 2MB 的片上静态随机存取存储器
    的头像 发表于 03-11 14:07 988次阅读
    带<b class='flag-5'>2MB</b>片内RAM的RTOS微处理器RZ/A<b class='flag-5'>1</b>LC数据手册