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

    文章

    16984

    浏览量

    350273
  • 瑞萨
    +关注

    关注

    34

    文章

    22290

    浏览量

    86051

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

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

收藏 人收藏

    评论

    相关推荐

    什么是ROM存储器的定义

    一、ROM存储器的定义 ROM存储器是一种在计算机和电子设备中用于存储固定数据的存储器。与RAM(随机存取存储器)不同,ROM
    的头像 发表于 11-04 09:59 205次阅读

    存储器的分类和特点是什么

    存储器(Internal Memory),也称为主存储器或随机存取存储器(RAM),是计算机系统中用于存储数据和程序的硬件组件。它是计算机运行过程中最直接、最
    的头像 发表于 10-14 10:09 382次阅读

    存储器分为随机存储器和什么

    ,Read-Only Memory)。 一、随机存储器(RAM) 随机存储器的定义和特点 随机存储器(RAM)是一种可读写的存储器,其特点是可以随机访问
    的头像 发表于 10-14 09:54 597次阅读

    PLC主要使用的存储器类型

    PLC(可编程逻辑控制)中的存储器是其重要组成部分,用于存储程序、数据和系统信息。PLC的存储器主要分为两大类:系统存储器和用户
    的头像 发表于 09-05 10:45 1366次阅读

    ram存储器和rom存储器的区别是什么

    定义: RAM(Random Access Memory):随机存取存储器,是一种易失性存储器,主要用于计算机和其他设备的临时存储。 ROM(Read-Only Memory):只读存储器
    的头像 发表于 08-06 09:17 572次阅读

    RA6T2的16位模数转换操作 [11] 配置RA6T2 ADC模块 (8)

    RA6T2的16位模数转换操作 [11] 配置RA6T2 ADC模块 (8)
    的头像 发表于 05-24 08:06 299次阅读
    <b class='flag-5'>RA6</b>T2的16位模数转换<b class='flag-5'>器</b>操作 [<b class='flag-5'>11</b>] 配置<b class='flag-5'>RA6</b>T2 ADC模块 (8)

    存储器与外存储器的主要区别

    在计算机系统中,存储器是不可或缺的核心部件,它负责存储和处理各种数据和信息。根据存储位置和功能的不同,存储器可大致分为内存储器(简称内存)和
    的头像 发表于 05-22 18:16 4899次阅读

    RA6T2的16位模数转换操作 [6] 配置RA6T2 ADC模块 (3)

    RA6T2的16位模数转换操作 [6] 配置RA6T2 ADC模块 (3)
    的头像 发表于 04-12 08:06 269次阅读
    <b class='flag-5'>RA6</b>T2的16位模数转换<b class='flag-5'>器</b>操作 [<b class='flag-5'>6</b>] 配置<b class='flag-5'>RA6</b>T2 ADC模块 (<b class='flag-5'>3</b>)

    浅谈存储器层次结构

    通过多级存储器的设计,存储器层次结构能够在存储容量和访问速度之间找到一个平衡点。高速缓存存储器和主存储器提供了
    发表于 02-19 13:54 694次阅读
    浅谈<b class='flag-5'>存储器</b>层次结构

    CK-RA6M5上的RA AWS云连接,带蜂窝网络-入门指南

    电子发烧友网站提供《CK-RA6M5上的RA AWS云连接,带蜂窝网络-入门指南.pdf》资料免费下载
    发表于 02-19 10:50 0次下载
    CK-<b class='flag-5'>RA6</b>M5上的<b class='flag-5'>RA</b> AWS云连接,带蜂窝网络-入门<b class='flag-5'>指南</b>

    RA8D1微控制组评估套件快速入门指南

    电子发烧友网站提供《RA8D1微控制组评估套件快速入门指南.pdf》资料免费下载
    发表于 01-31 10:15 1次下载
    <b class='flag-5'>RA</b>8D1微控制<b class='flag-5'>器</b>组评估套件<b class='flag-5'>快速</b>入门<b class='flag-5'>指南</b>

    MCK-RA8T1快速入门指南

    电子发烧友网站提供《MCK-RA8T1快速入门指南.pdf》资料免费下载
    发表于 01-29 14:07 0次下载
    MCK-<b class='flag-5'>RA</b>8T1<b class='flag-5'>快速</b>入门<b class='flag-5'>指南</b>

    CK-RA6M5上的RA AWS云连接(带以太网)入门指南

    电子发烧友网站提供《CK-RA6M5上的RA AWS云连接(带以太网)入门指南.pdf》资料免费下载
    发表于 01-03 10:10 0次下载
    CK-<b class='flag-5'>RA6</b>M5上的<b class='flag-5'>RA</b> AWS云连接(带以太网)入门<b class='flag-5'>指南</b>

    全面解析存储器层次结构原理

    靠近 CPU 的小、快速的高速缓存存储器(cache memory)做为一部分存储在相对慢速的主存储器(main memory)中数据和指令的缓冲区域。
    发表于 12-25 09:21 1155次阅读
    全面解析<b class='flag-5'>存储器</b>层次结构原理

    RA6M3 RT-Thread* LVGL HMI Board开发实践指南-GPIO实践

    RT-Thread即将发布一系列RA6M3外设驱动的实践指南,我们将使用瑞萨RA6M3 HMI-Board 开发板,带领大家上手RT-Thread设备驱动, 本篇文章将介绍GPIO外设。GPIO
    的头像 发表于 11-30 19:05 1166次阅读
    <b class='flag-5'>RA6M3</b> RT-Thread* LVGL HMI Board开发实践<b class='flag-5'>指南</b>-GPIO实践