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

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

3天内不再提示

RZ/N2L SDRAM由CS2改为CS3相应PN代码修改方法演示

瑞萨MCU小百科 来源:瑞萨嵌入式小百科 2024-04-25 14:14 次阅读

瑞萨RZ/N2L MPU

RZ/N2L是一种工业以太网通信用MPU,可轻松将网络功能添加到工业设备中。它搭载支持TSN的三端口千兆以太网交换机和EtherCAT从控制器,可支持EtherCAT、PROFINET RT/IRT、EtherNet/IP、OPC UA等主要的工业以太网通信协议。它对网络专用配套芯片加以优化,无需大幅改变设备的内部配置即可直接连接并快速访问外部应用主机CPU。此外,Arm Cortex-R52的最大工作频率为400MHz,外设功能包括带ECC的大容量RAM与ΔΣ I/F、A/D转换器、PWM定时器UARTCAN等,可在单个芯片上实现远程I/O、传感器集线器、变频器和网关。

39c1e05a-02c7-11ef-a297-92fbcf53809c.png

RZ/N2L PN例程,SDRAM接口片选使用的是CS2(因为RZN2L RSK 的特殊硬件设计),而根据UM,系统里使用单片SDRAM的话,BSC必须CS3#。本文将为您演示为了适配使用CS3的硬件要求,PN的代码需要做的三处修改。

1

修改 hal_entry.c 文件中 bsp_sdram_init() 函数,把与CS2相关的配置屏蔽掉,如下面代码所示。

#if 0 ~ #endif 之间代码,60~86行:

static void bsp_sdram_init (void)
{


    volatile uint32_t val;


    R_RWP_S->PRCRS  = 0x0000A50F;
    R_RWP_NS->PRCRN = 0x0000A50F;


    /* NOTE: Port setting and CKIO configuration should have been done before */


    // Configure clock frequency
    val = R_SYSC_NS->SCKCR;
    val &= ~(7<<16);
    //val |=  (6<<16);// CKIO clock: 25MHz 
    val |=  (1<<16);// CKIO clock: 66.7MHz
    R_SYSC_NS->SCKCR = val;


    /* Enable BSC and CKIO module */
    val = R_SYSC_NS->MSTPCRA;
    val &= ~(1<<0);
    R_SYSC_NS->MSTPCRA = val;
    val = R_SYSC_NS->MSTPCRA;        // dummy read: step1


    // Enable CKIO module
    val = R_SYSC_NS->MSTPCRD;
    val &= ~(1<<11);
    R_SYSC_NS->MSTPCRD = val;
    val = R_SYSC_NS->MSTPCRD;        // dummy read: step1
    
    R_RWP_NS->PRCRN = 0x0000A500;
    R_RWP_S->PRCRS  = 0x0000A500;


    /* Wait */
val = R_BSC->CSnBCR[3];        // dummy read: step2
val = R_BSC->CSnBCR[3];        // dummy read: step2
val = R_BSC->CSnBCR[3];        // dummy read: step2
val = R_BSC->CSnBCR[3];        // dummy read: step2
val = R_BSC->CSnBCR[3];        // dummy read: step2


    /* SDRAM:W9825G6KH-6 */
    /* Row address: A0-A12. Column address: A0-A8. */
val = ( 2 <<  9)// BSZ: data bus witdh: 16-bits
 | ( 1 << 11)// Reserved
 | ( 4 << 12)// TYPE: SDRAM
 | ( 0 << 16)// IWRRS: Idle State Insertion between Read-Read Cycles in the Same CS Space
 | ( 0 << 19)// IWRRD: Idle State Insertion between Read-Read Cycles in Different CS Spaces
 | ( 0 << 22)// IWRWS: Idle State Insertion between Read-Write Cycles in the Same CS Space
 | ( 0 << 25)// IWRWD: Idle State Insertion between Read-Write Cycles in Different CS Spaces
 | ( 0 << 28);// IWW: Idle Cycles between Write-Read Cycles and Write-Write Cycles
    R_BSC->CSnBCR[3] = val;


    /* Wait cycle */
val = ( 2 <<  0)// WTRC: Number of Idle states frmo REF Command/Self-refresh relase to ACTV/REF/MRS command
 | ( 2 <<  3)// TRWL: Number of Auto-precharge startup Wait Cycle
 | ( 1 <<  7)// A3CL: CAS Latency: 2
 | ( 1 << 10)// WTRCD: Number of Waits between ACTV command and READ/WRIT command
 | ( 1 << 13);// WTRP: Number of Auto-precharge completion wait states        
        R_BSC->CS3WCR_1 = val;


#if 0
    /* Wait */
val = R_BSC->CSnBCR[2];        // dummy read: step2
val = R_BSC->CSnBCR[2];        // dummy read: step2
val = R_BSC->CSnBCR[2];        // dummy read: step2
val = R_BSC->CSnBCR[2];        // dummy read: step2
val = R_BSC->CSnBCR[2];        // dummy read: step2




    /* SDRAM:W9825G6KH-6 */
    /* Row address: A0-A12. Column address: A0-A8. */
val = ( 2 <<  9)// BSZ: data bus witdh: 16-bits
 | ( 1 << 11)// Reserved
 | ( 4 << 12)// TYPE: SDRAM
 | ( 0 << 16)// IWRRS: Idle State Insertion between Read-Read Cycles in the Same CS Space
 | ( 0 << 19)// IWRRD: Idle State Insertion between Read-Read Cycles in Different CS Spaces
 | ( 0 << 22)// IWRWS: Idle State Insertion between Read-Write Cycles in the Same CS Space
 | ( 0 << 25)// IWRWD: Idle State Insertion between Read-Write Cycles in Different CS Spaces
 | ( 0 << 28);// IWW: Idle Cycles between Write-Read Cycles and Write-Write Cycles
    R_BSC->CSnBCR[2] = val;


   /* Wait cycle */
    val = ( 1 <<  7)// A3CL: CAS Latency: 2
 | ( 1 << 10);// Reserved 1
 
    R_BSC->CS2WCR_1 = val;
#endif
    /* SDRAM control */
    R_BSC->SDCR = 0x00110811;// auto-refresh, auto-precharge mode, Col 9-bits, Row 13-bits


    /* Refresh setting for SDRAM */
    R_BSC->RTCOR = BSC_PROTECT_KEY 
                 | ( 29 <<  0);        // Refresh Time: 29 counts
    R_BSC->RTCSR = BSC_PROTECT_KEY 
                 | (  0 <<  7)         // Compare match Flag: clear
                 | (  0 <<  6)         // Compare match interrupt enable: Disabled
                 | (  2 <<  3)         // Refresh timer count clock: CKIO/16
                 | (  0 <<  0);        // Refresh count: 1 time
                 
    /* wait 200us*/
    R_BSP_SoftwareDelay(200, BSP_DELAY_UNITS_MICROSECONDS);


    /* Power-on Sequence */
    /* Set mode register of SDRAM. needs wait for 2 SDRAM clock after set. */
    *((uint16_t *)0x80212040) = 0x0000;   // Burst length=1, Sequential, CL=2, Burst read and burst write
    *((uint16_t *)0x80211040) = 0x0000;   // Burst length=1, Sequential, CL=2, Burst read and burst write


}

2

pnip_reg.h 头文件,将CS2 Region的地址定义修改为CS3的Memory Region,如下图将0x54xxxxxx地址修改为0x58xxxxxx地址。

39f20ea6-02c7-11ef-a297-92fbcf53809c.png

#ifdef _RENESAS_RZN_
#define U_PNIP__BASE    (0x58000000 + PNIP_DEV_TOP_BASE)
#define U_PNIP__END    (0x581FFFFF + PNIP_DEV_TOP_BASE)
#define U_PERIF_AHB__BASE (0x58200000 + PNIP_DEV_TOP_BASE)
#define U_PERIF_AHB__END  (0x583FFFFF + PNIP_DEV_TOP_BASE)
#endif

3

修改Linker文件中SDRAM Adddress相关Region定义。

3a174554-02c7-11ef-a297-92fbcf53809c.png

以IAR的 fsp_xspi0_boot.icf 为例:

文件中定义了

1

RAM_Region

地址空间为:0x7440 0010 – 0x744F FFFF;

需要修改为:0x7840 0010 - 0x784F FFFF;

2

Heap_Region

地址空间为:0x5500 0000 – 0x555F FFFF;

需要修改为:0x5900 0000 – 0x595F FFFF;

3

SDRAM_NC_region

地址空间为:0x5450 0000 – 0x547F FFFF;

需要修改为:0x5850 0000 – 0x587F FFFF;


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

    关注

    112

    文章

    16240

    浏览量

    177599
  • 以太网通信
    +关注

    关注

    2

    文章

    52

    浏览量

    11024
  • 交换机
    +关注

    关注

    21

    文章

    2625

    浏览量

    99337
  • AD转换器
    +关注

    关注

    4

    文章

    250

    浏览量

    41384
  • EtherCAT总线
    +关注

    关注

    5

    文章

    72

    浏览量

    5371

原文标题:RZ/N2L SDRAM由CS2改为CS3相应PN代码修改方法

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

收藏 人收藏

    评论

    相关推荐

    PN代码适配客户板子修改方法

    Renesas RZ/N2L入门套件 + 用于使用RZ/N2L MPU进行评估或开发。
    的头像 发表于 01-10 12:20 1643次阅读
    <b class='flag-5'>PN</b><b class='flag-5'>代码</b>适配客户板子<b class='flag-5'>修改</b><b class='flag-5'>方法</b>

    RZ/T2M RZ/N2L RZ/T2L系列应用心得

    RZ/T2M和RZ/N2L共用各种软件协议栈支持情况。
    的头像 发表于 11-15 16:09 2176次阅读
    <b class='flag-5'>RZ</b>/T<b class='flag-5'>2</b>M <b class='flag-5'>RZ</b>/<b class='flag-5'>N2L</b> <b class='flag-5'>RZ</b>/T<b class='flag-5'>2L</b>系列应用心得

    如何在RZ/N2L RZ/T2M的PN代码中增加其他驱动代码呢?

    当前提供的PN代码,无论是N2L平台或T2M平台,目前都只有IAR版本,并且不能直接调用FSP配置工具进行代码生成(但是
    的头像 发表于 05-20 14:18 922次阅读
    如何在<b class='flag-5'>RZ</b>/<b class='flag-5'>N2L</b> <b class='flag-5'>RZ</b>/T<b class='flag-5'>2</b>M的<b class='flag-5'>PN</b><b class='flag-5'>代码</b>中增加其他驱动<b class='flag-5'>代码</b>呢?

    Adobe GoLive cs2

    使用Adobe GoLive CS2软件, 您可以借助直观的可视工具充分利用CSS的功能,轻松地将现有Adobe资源放到Web上, 并且还能设计和发布复杂的Web和移动设备内容。
    发表于 04-05 22:45 20次下载

    RZ/T2M、RZ/N2L 组硬件设计指南

    RZ/T2M、RZ/N2L 组硬件设计指南
    发表于 01-09 18:57 1次下载
    <b class='flag-5'>RZ</b>/T<b class='flag-5'>2</b>M、<b class='flag-5'>RZ</b>/<b class='flag-5'>N2L</b> 组硬件设计指南

    RZ/N2L 组数据表

    RZ/N2L 组数据表
    发表于 01-09 19:21 1次下载
    <b class='flag-5'>RZ</b>/<b class='flag-5'>N2L</b> 组数据表

    RZ/N2L 组用户手册:硬件

    RZ/N2L 组用户手册:硬件
    发表于 01-09 19:21 2次下载
    <b class='flag-5'>RZ</b>/<b class='flag-5'>N2L</b> 组用户手册:硬件

    Renesas Starter Kit+ for RZ/N2L 用户手册

    Renesas Starter Kit+ for RZ/N2L 用户手册
    发表于 01-10 18:54 0次下载
    Renesas Starter Kit+ for <b class='flag-5'>RZ</b>/<b class='flag-5'>N2L</b> 用户手册

    RZ/T2M、RZ/N2L 组硬件设计指南

    RZ/T2M、RZ/N2L 组硬件设计指南
    发表于 06-30 18:33 2次下载
    <b class='flag-5'>RZ</b>/T<b class='flag-5'>2</b>M、<b class='flag-5'>RZ</b>/<b class='flag-5'>N2L</b> 组硬件设计指南

    RZ/N2L 组数据表

    RZ/N2L 组数据表
    发表于 06-30 19:20 0次下载
    <b class='flag-5'>RZ</b>/<b class='flag-5'>N2L</b> 组数据表

    RZ/N2L 组用户手册:硬件

    RZ/N2L 组用户手册:硬件
    发表于 06-30 19:21 3次下载
    <b class='flag-5'>RZ</b>/<b class='flag-5'>N2L</b> 组用户手册:硬件

    Renesas Starter Kit+ for RZ/N2L 用户手册

    Renesas Starter Kit+ for RZ/N2L 用户手册
    发表于 06-30 19:28 0次下载
    Renesas Starter Kit+ for <b class='flag-5'>RZ</b>/<b class='flag-5'>N2L</b> 用户手册

    RZ/N2L工业网络SOM套件应用说明

    电子发烧友网站提供《RZ/N2L工业网络SOM套件应用说明.pdf》资料免费下载
    发表于 01-03 09:46 1次下载
    <b class='flag-5'>RZ</b>/<b class='flag-5'>N2L</b>工业网络SOM套件应用说明

    RZ/T2M、RZ/N2LRZ/T2L组 硬件设计指南

    电子发烧友网站提供《RZ/T2M、RZ/N2LRZ/T2L组 硬件设计指南.pdf》资料免费下
    发表于 02-02 09:39 2次下载
    <b class='flag-5'>RZ</b>/T<b class='flag-5'>2</b>M、<b class='flag-5'>RZ</b>/<b class='flag-5'>N2L</b>、<b class='flag-5'>RZ</b>/T<b class='flag-5'>2L</b>组 硬件设计指南

    产品详解 | 瑞萨电子RZ/N2L MPU

    产品详解 | 瑞萨电子RZ/N2L MPU
    的头像 发表于 04-20 08:06 799次阅读
    产品详解 | 瑞萨电子<b class='flag-5'>RZ</b>/<b class='flag-5'>N2L</b> MPU