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

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

3天内不再提示

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

瑞萨MCU小百科 来源:未知 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
    +关注

    关注

    146

    文章

    16019

    浏览量

    343640
  • 瑞萨
    +关注

    关注

    32

    文章

    22214

    浏览量

    84915

原文标题:RA6快速设计指南 [11] 存储器 (3)

文章出处:【微信号:瑞萨MCU小百科,微信公众号:瑞萨MCU小百科】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    RA2快速设计指南 [5] 存储器

    RA2快速设计指南 [5] 存储器
    的头像 发表于 10-24 16:17 301次阅读
    <b class='flag-5'>RA</b>2<b class='flag-5'>快速</b>设计<b class='flag-5'>指南</b> [5] <b class='flag-5'>存储器</b>

    RA2快速设计指南 [3] 时钟电路

    RA2快速设计指南 [3] 时钟电路
    的头像 发表于 10-24 16:05 251次阅读
    <b class='flag-5'>RA</b>2<b class='flag-5'>快速</b>设计<b class='flag-5'>指南</b> [3] 时钟电路

    RA6快速设计指南 [17] 外部总线,一般布线实践 (上)

    14 外部总线 RA6器件包括一个外部总线控制器。某些RA6器件具有内置的SDRAM控制器。 14.1 总线宽度和多路复用 外部存储区的访问宽度可以设置为8位或16位。通过将CSnCR寄存器或SDC
    的头像 发表于 07-14 12:10 362次阅读
    <b class='flag-5'>RA6</b><b class='flag-5'>快速</b>设计<b class='flag-5'>指南</b> [17] 外部总线,一般布线实践 (上)

    RA6T1 CPU 卡快速入门指南

    RA6T1 CPU 卡快速入门指南
    发表于 07-05 18:36 0次下载
    <b class='flag-5'>RA</b>6T1 CPU 卡<b class='flag-5'>快速</b>入门<b class='flag-5'>指南</b>

    EK-RA6M2– 快速入门指南

    EK-RA6M2 – 快速入门指南
    发表于 07-04 20:54 0次下载
    EK-<b class='flag-5'>RA</b>6M2– <b class='flag-5'>快速</b>入门<b class='flag-5'>指南</b>

    EK-RA4M3 快速入门指南

    EK-RA4M3 快速入门指南
    发表于 07-04 19:48 0次下载
    EK-<b class='flag-5'>RA</b>4M3 <b class='flag-5'>快速</b>入门<b class='flag-5'>指南</b>

    RA6快速设计指南 [13] I/O端口配置 (2)

    该引脚作为输出。I/O端口的默认状态为“0”(输入)。可以在RA6 MCU上读取端口方向寄存器。 • 相应端口控制寄存器 (PCNTR1)
    的头像 发表于 07-03 12:10 761次阅读

    RA6快速设计指南 [10] 存储器 (2)

    8 存储器 8.4 片上闪存 RA6 MCU具有两部分闪存:代码闪存和数据闪存,各部分的大小和擦写周期数因器件而异。闪存控制单元 (FCU) 控制闪存的编程和擦除。闪存应用程序命令接口 (FACI
    的头像 发表于 06-26 12:10 416次阅读
    <b class='flag-5'>RA6</b><b class='flag-5'>快速</b>设计<b class='flag-5'>指南</b> [10] <b class='flag-5'>存储器</b> (2)

    RA6快速设计指南 [9] 存储器 (1)

    8 存储器 RA6 MCU支持4GB的线性地址空间,范围为 0000 0000h 到 FFFF FFFFh ,其中包含程序、数据和外部存储器总线。该系列的某些产品包括一个SDRAM控制器,可利用
    的头像 发表于 06-21 12:15 472次阅读
    <b class='flag-5'>RA6</b><b class='flag-5'>快速</b>设计<b class='flag-5'>指南</b> [9] <b class='flag-5'>存储器</b> (1)

    RA6快速设计指南 [8] 使用TrustZone®

    7 使用TrustZone 7.1 Arm TrustZone 技术的实现 某些RA6 MCU(如RA6M4和RA6M5)包含Arm TrustZone (TZ) 安全功能。有关 TZ 实现的完整
    的头像 发表于 06-19 15:25 368次阅读
    <b class='flag-5'>RA6</b><b class='flag-5'>快速</b>设计<b class='flag-5'>指南</b> [8] 使用TrustZone®

    RA6快速设计指南 [5] 时钟电路 (3)

    5 时钟电路 5.5 时钟设置示例 Renesas FSP为RA6 MCU提供了一个简单的可视化时钟配置工具,如下所示。 图11. 使用Renesas FSP配置器进行时钟设置 5.6 HOCO精度
    的头像 发表于 06-12 12:25 445次阅读
    <b class='flag-5'>RA6</b><b class='flag-5'>快速</b>设计<b class='flag-5'>指南</b> [5] 时钟电路 (3)

    RA6快速设计指南 [4] 时钟电路 (2)

    5 时钟电路 5.1 复位条件 复位后,RA6 MCU开始以中速片上振荡器 (MOCO) 作为主时钟源运行。复位时,默认情况下主振荡器和PLL处于关闭状态。HOCO和IWDT可能处于打开或关闭状态
    的头像 发表于 06-09 12:30 382次阅读
    <b class='flag-5'>RA6</b><b class='flag-5'>快速</b>设计<b class='flag-5'>指南</b> [4] 时钟电路 (2)

    RA6 MCU设计之时钟电路

    复位后,RA6 MCU开始以中速片上振荡器 (MOCO) 作为主时钟源运行。复位时,默认情况下主振荡器和PLL处于关闭状态。HOCO和IWDT可能处于打开或关闭状态,具体取决于选项设置存储器中的设置(请参见后文第4节)。
    发表于 06-09 12:28 222次阅读
    <b class='flag-5'>RA6</b> MCU设计之时钟电路

    RA6快速设计指南 [3] 选项设置存储器,时钟电路(1)

    不同的内存占用和分布,有关寄存器的详细介绍,请参见《硬件用户手册》中的“选项设置存储器”一章。 闪存选项寄存器在代码闪存映射中占用一定空间。尽管寄存器位于RA MCU上保留闪存的一部分中,但是有些用户可能会无意中将数据存储在这些
    的头像 发表于 06-08 17:00 457次阅读
    <b class='flag-5'>RA6</b><b class='flag-5'>快速</b>设计<b class='flag-5'>指南</b> [3] 选项设置<b class='flag-5'>存储器</b>,时钟电路(1)

    RA6快速设计指南 [1] 简介,电源,仿真器支持(1)

    补充,重点介绍大多数工程师在开始自己的设计时需要注意的一些关键项目。本文档还从应用的角度探讨了一些设计决策。 RA6快速设计指南 目标器件 RA6系列MCU
    的头像 发表于 06-04 16:25 679次阅读
    <b class='flag-5'>RA6</b><b class='flag-5'>快速</b>设计<b class='flag-5'>指南</b> [1] 简介,电源,仿真器支持(1)