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

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

3天内不再提示

RA6快速设计指南 [11] 存储器 (3)

瑞萨嵌入式小百科 来源:未知 2023-06-28 12:10 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

02b53b9e-1569-11ee-962d-dac502259ad0.gif

8

存储器

8.5 外部存储器

RA6 MCU包含用于连接到外部存储器和器件的外部数据总线。某些产品还包括一个内置的SDRAM控制器,可通过该控制器使用最高达128MB的外部SDRAM。八个可编程片选提供了许多选项,可以在每个片选上设置这些选项,以允许连接到各种外部器件。存储器映射的外部片选区域地址从0x60000000开始。有关更多详细信息,请参见《硬件用户手册》。

8.5.1 使用外部16位存储器器件

连接具有字节选择线的外部16位存储器器件时,将MCU的A1连接到存储器的A0,将MCU的A0连接到字节选择线。

8.5.2 SDRAM初始化示例

Renesas FSP提供了采用CMSIS数据结构的C语言头文件,此文件映射了所有外部总线控制寄存器。以下函数是在Renesas FSP中使用CMSIS寄存器结构初始化SDRAM存储器控制器的示例。

左右滑动查看更多

void bsp_sdram_init (void)
{
  /** Delay at least 100uS after SDCLK active */ 
  R_BSP_SoftwareDelay(100U, BSP_DELAY_UNITS_MICROSECONDS);


  /** Setting for SDRAM initialization sequence */
#if (BSP_PRV_SDRAM_TRP < 3)
  R_BUS->SDRAM.SDIR_b.PRC = 3U;
#else
  R_BUS->SDRAM.SSDIR_b.PRC = BSP_PRV_SDRAM_TRP - 3U;
#endif


  while(R_BUS->SDRAM.SDSR)
  {
    /* According to h/w maual, need to confirm that all the status bits in SDSR are 0 before SDIR modification. */
  }


  R_BUS->SDRAM.SDIR_b.ARFC = BSP_PRV_SDRAM_SDIR_REF_TIMES; 


  while(R_BUS->SDRAM.SDSR)
  {
    /* According to h/w maual, need to confirm that all the status bits in SDSR are 0 before SDIR modification. */
  }


#if (BSP_PRV_SDRAM_TRFC < 3)
  R_BUS->SDRAM.SDIR_b.ARFI = 0U;
#else
  R_BUS->SDRAM.SDIR_b.ARFI = BSP_PRV_SDRAM_TRFC - 3U;
#endif


  while(R_BUS->SDRAM.SDSR)
  {
    /* According to h/w maual, need to confirm that all the status bits in SDSR are 0 before SDICR modification. */
  }


  /** Start SDRAM initialization sequence.
   * Following operation is automatically done when set SDICR.INIRQ bit.
   * Perform a PRECHARGE ALL command and wait at least tRP time.
   * Issue an AUTO REFRESH command and wait at least tRFC time.
   * Issue an AUTO REFRESH command and wait at least tRFC time.
   */
  R_BUS->SDRAM.SDICR_b.INIRQ = 1U; 
  while(R_BUS->SDRAM.SDSR_b.INIST)
  {
    /* Wait the end of initialization sequence. */
  }


  /** Setting for SDRAM controller */
  R_BUS->SDRAM.SDCCR_b.BSIZE = BSP_PRV_SDRAM_BUS_WIDTH;       /* set SDRAM bus width */
  R_BUS->SDRAM.SDAMOD_b.BE = BSP_PRV_SDRAM_CONTINUOUS_ACCESSMODE;  /* enable continuous access */
  R_BUS->SDRAM.SDCMOD_b.EMODE = BSP_PRV_SDRAM_ENDIAN_MODE;     /* set endian mode for SDRAM address space */


  while(R_BUS->SDRAM.SDSR)
  {
    /* According to h/w maual, need to confirm that all the status bits in SDSR are 0 before SDMOD modification. */
  }
  
  /** Using LMR command, program the mode register */
  R_BUS->SDRAM.SDMOD = ((((uint16_t)(BSP_PRV_SDRAM_MR_WB_SINGLE_LOC_ACC  << 9)
      |(uint16_t)(BSP_PRV_SDRAM_MR_OP_MODE     << 7))
      |(uint16_t)(BSP_PRV_SDRAM_CL         << 4))
      |(uint16_t)(BSP_PRV_SDRAM_MR_BT_SEQUENCTIAL << 3))
      |(uint16_t)(BSP_PRV_SDRAM_MR_BURST_LENGTH  << 0);


  /** wait at least tMRD time */ 
  while(R_BUS-
  >SDRAM.SDSR_b.MRSST)
  {
    /* Wait until Mode Register setting done. */
  }


  /** Set timing parameters for SDRAM */
  R_BUS->SDRAM.SDTR_b.RAS = BSP_PRV_SDRAM_TRAS - 1U;  /* set ACTIVE-to-PRECHARGE command cycles*/
  R_BUS->SDRAM.SDTR_b.RCD = BSP_PRV_SDRAM_TRCD - 1U;  /* set ACTIVEto READ/WRITE delay cycles */
  R_BUS->SDRAM.SDTR_b.RP = BSP_PRV_SDRAM_TRP - 1U;  /* set PRECHARGE command period cycles */
  R_BUS->SDRAM.SDTR_b.WR = BSP_PRV_SDRAM_TWR - 1U;  /* set write recovery cycles */
  R_BUS->SDRAM.SDTR_b.CL = BSP_PRV_SDRAM_CL;     /* set SDRAM column latency cycles */


  /** Set row address offset for target SDRAM */
  R_BUS->SDRAM.SDADR_b.MXC = BSP_PRV_SDRAM_SDADR_ROW_ADDR_OFFSET - 8U;


  R_BUS->SDRAM.SDRFCR_b.REFW = (uint16_t)(BSP_PRV_SDRAM_TRFC - 1U);  /* set Auto-Refresh issuing cycle */
  R_BUS->SDRAM.SDRFCR_b.RFC = BSP_PRV_SDRAM_REF_CMD_INTERVAL - 1U;  /* set Auto-Refresh period */


  /** Start Auto-refresh */
  R_BUS->SDRAM.SDRFEN_b.RFEN = 1U;


  /** Enable SDRAM access */
  R_BUS->SDRAM.SDCCR_b.EXENB = 1U;
}

8.6 数据对齐

没有对齐数据方面的限制。MCU能够对奇数存储地址执行字节、字和长整型访问。虽然对齐数据访问仍然是最佳选择,但并不是必须的。

8.7 字节顺序限制

存储器空间必须采用小尾数法才能在Cortex-M内核上执行代码。

下一章:寄存器写保护


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

    关注

    147

    文章

    19110

    浏览量

    403229
  • 瑞萨
    +关注

    关注

    38

    文章

    22516

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    RA6M3微控制:高性能与多功能的完美融合

    RA6M3微控制:高性能与多功能的完美融合 在当今的电子设计领域,微控制(MCU)作为核心组件,其性能和功能直接影响着产品的质量和竞争力。RA6M3 Group MCU凭借其卓越的
    的头像 发表于 04-01 11:10 207次阅读

    深入剖析RA6T3微控制:特性、应用与设计考量

    深入剖析RA6T3微控制:特性、应用与设计考量 在当今的电子设计领域,微控制扮演着至关重要的角色。Renesas的RA6T3微控制凭借
    的头像 发表于 04-01 10:10 124次阅读

    Renesas RA6E2微控制深度解析:性能、特性与应用指南

    Renesas RA6E2微控制深度解析:性能、特性与应用指南 在当今电子技术飞速发展的时代,微控制作为电子系统的核心部件,其性能和特性直接影响着整个系统的运行效率和稳定性。Ren
    的头像 发表于 04-01 10:10 134次阅读

    【案例5.1】存储器选型的考虑要点

    【案例5.1】存储器选型的考虑要点某设计,用户接口数据传输速率为10Gbps,每8个字节的数据对应一次查表需求,数据表存储在由DDR4SDRAM组成的存储器中。工程师需综合考虑各方面要求,进行
    的头像 发表于 03-04 17:20 412次阅读
    【案例5.1】<b class='flag-5'>存储器</b>选型的考虑要点

    瑞萨RA系列FSP库开发实战指南之常用存储器介绍

    存储器是计算机结构的重要组成部分。存储器是用来存储程序代码和数据的部件,有了存储器计算机才具有记忆功能。基本的存储器种类见图21_1。
    的头像 发表于 01-12 06:21 7380次阅读
    瑞萨<b class='flag-5'>RA</b>系列FSP库开发实战<b class='flag-5'>指南</b>之常用<b class='flag-5'>存储器</b>介绍

    探索Renesas FPB - RA2E2快速原型开发板:硬件设计与应用指南

    探索Renesas FPB - RA2E2快速原型开发板:硬件设计与应用指南 在嵌入式系统开发的世界里,拥有一款高效且功能丰富的快速原型开发板至关重要。Renesas的FPB -
    的头像 发表于 12-29 16:30 942次阅读

    探索Renesas FPB - RA6E2:快速原型开发板的深度解析

    探索Renesas FPB - RA6E2:快速原型开发板的深度解析 在嵌入式系统开发的领域中,拥有一款高效且功能丰富的快速原型开发板至关重要。Renesas的FPB - RA6E2
    的头像 发表于 12-29 15:15 671次阅读

    Renesas MCK - RA6T3:开启电机控制新篇章

    Renesas MCK - RA6T3:开启电机控制新篇章 电子工程师在电机控制领域不断探索,寻找高效、精准且稳定的解决方案。Renesas的MCK - RA6T3电机控制评估套件,就像是一颗璀璨
    的头像 发表于 12-29 15:10 455次阅读

    探索RA6T3微控制:性能、特性与应用全解析

    探索RA6T3微控制:性能、特性与应用全解析 在电子工程师的世界里,微控制是构建各种智能系统的核心组件。今天,我们将深入探讨瑞萨(Renesas)的RA6T3微控制
    的头像 发表于 12-29 13:55 431次阅读

    探索Renesas AIK - RA6M3:开启嵌入式开发新旅程

    用于帮助开发者开启初始固件开发工作。它配备了可直接访问RA6M3微控制I/O引脚的扩展引脚头,同时还提供了对常用外设的板载支持以及多种常见生
    的头像 发表于 12-29 10:05 509次阅读

    RENESAS FPB - RA4T1快速入门:电子工程师的实用指南

    RENESAS FPB - RA4T1快速入门:电子工程师的实用指南 在电子设计领域,快速且高效地进行原型开发和评估是每个工程师的追求。今天,我将为大家详细介绍RENESAS FPB
    的头像 发表于 12-29 09:45 380次阅读

    Renesas EK - RA8D2评估套件快速上手与定制开发指南

    Renesas EK - RA8D2评估套件快速上手与定制开发指南 在嵌入式开发领域,一款好的评估套件能极大地加速开发进程,帮助开发者快速验证想法和方案。Renesas的EK -
    的头像 发表于 12-26 15:50 619次阅读

    【瑞萨RA6E2地奇星开发板试用】介绍、环境搭建、工程测试

    基于100MHz Arm® Cortex®-M33 内核架构的核心板; 主控芯片为 48 引脚的 R7FA6E2BB3CNE; RA6E2 组是 RA6 系列中最新的入门级微控制
    发表于 12-07 15:27

    【免费试用】瑞萨 RA6E2 开发板免费试用

    RA-Eco-RA6E2-64PIN-V1.0是一款基于100MHzArmCortex-M33内核架构的核心板,主控芯片为R7FA6E2BB3CFM。RA6E2组是RA6系列中最新的入
    的头像 发表于 10-01 10:15 1058次阅读
    【免费试用】瑞萨 <b class='flag-5'>RA6</b>E2 开发板免费试用

    简单认识高带宽存储器

    HBM(High Bandwidth Memory)即高带宽存储器,是一种基于 3D 堆叠技术的高性能 DRAM(动态随机存取存储器)。其核心设计是通过硅通孔(TSV)和微凸块(Microbump
    的头像 发表于 07-18 14:30 5381次阅读