OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3132|回复: 3

求助,H743的SDRAM速度特别慢

[复制链接]

7

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
113
金钱
113
注册时间
2014-2-4
在线时间
22 小时
发表于 2020-3-12 09:49:58 | 显示全部楼层 |阅读模式
1金钱
刚做了一块板子,STM32H743IIT6芯片,板本是V,晶振12M,时钟配置Stm32_Clock_Init(160,2,2,4);//设置时钟,480Mhz,我是配置成133M的delay_init(480);

sys文件修改如下
                //设置PLL2的R分频输出,为220Mhz,后续做SDRAM时钟,可得到110M的SDRAM时钟频率
                RCC->PLLCKSELR|=12<<12;                //DIVM2[5:0]=25,设置PLL2的预分频系数
                RCC->PLL2DIVR|=(533-1)<<0;        //DIVN2[8:0]=440-1,设置PLL2的倍频系数,设置值需减1
                RCC->PLL2DIVR|=(2-1)<<9;        //DIVP2[6:0]=2-1,设置PLL2的p分频系数,设置值需减1
                RCC->PLL2DIVR|=(2-1)<<24;        //DIVR2[6:0]=2-1,设置PLL2的r分频系数,设置值需减1
                RCC->PLLCFGR|=0<<6;                        //PLL2RGE[1:0]=0,PLL2输入时钟频率在1~2Mhz之间(12/12=1Mhz)
                RCC->PLLCFGR|=0<<5;                        //PLL2VCOSEL=0,PLL2宽的VCO范围,192~836Mhz
                RCC->PLLCFGR|=1<<19;                //DIVP2EN=1,使能pll2_p_ck

//SDRAM配置
        sdtimereg|=1<<0;                                //加载模式寄存器到激活时间的延迟为2个时钟周期
        sdtimereg|=9<<4;                                //退出自刷新延迟为8个时钟周期,tXSR=72ns(min)
        sdtimereg|=5<<8;                                //自刷新时间为5个时钟周期,tRAS=42ns(min)
        sdtimereg|=7<<12;                                //行循环延迟为7个时钟周期,tRC=60ns(min)
        sdtimereg|=1<<16;                                //恢复延迟为2个时钟周期,tWR=2 CLK
        sdtimereg|=1<<20;                                //行预充电延迟为2个时钟周期,tRP=15ns(min)
        sdtimereg|=1<<24;                                //行到列延迟为2个时钟周期,tRCD=15ns(min)

......
        mregval|=2<<4;                                        //设置CAS值:3(可以是2/3)
......
        FMC_Bank5_6->SDRTR=1019<<1;                //设置刷新频率计数器

//
测试代码
        p1=(u32 *)0xc0000000;
        p2=(u32 *)0xc1000000;
        for(j=0;j<100;j++){
                for(i=0;i<4000000;i++)p1=i;
                for(i=0;i<4000000;i++)p2=i;
        }

发现这段代码特别慢。在内部存储区测试,减少缓冲大小,增加次数,速度能达到800M字节/秒,而上面的代码只能达到70M。
改成下面参数之后,速度成倍提高。
RCC->PLLCKSELR|=6<<12;                //DIVM2[5:0]=25,设置PLL2的预分频系数
我现在想知道什么速度是合理的,如何调到合适的参数。

最佳答案

查看完整内容[请看2#楼]

果然是这个问题。实测133M配置下不正常。按原子哥的配置测试。125M勉强能通过测试。考虑到余量,设置成100M比较合理。实测吞吐量差不多200M/S
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

7

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
113
金钱
113
注册时间
2014-2-4
在线时间
22 小时
 楼主| 发表于 2020-3-12 09:49:59 | 显示全部楼层
果然是这个问题。实测133M配置下不正常。按原子哥的配置测试。125M勉强能通过测试。考虑到余量,设置成100M比较合理。实测吞吐量差不多200M/S
回复

使用道具 举报

7

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
113
金钱
113
注册时间
2014-2-4
在线时间
22 小时
 楼主| 发表于 2020-3-12 11:32:39 | 显示全部楼层
大概知道了,533倍频这儿有问题,超过9bit,回去改下试试。
回复

使用道具 举报

5

主题

34

帖子

0

精华

初级会员

Rank: 2

积分
86
金钱
86
注册时间
2019-7-2
在线时间
23 小时
发表于 2020-6-1 14:51:39 | 显示全部楼层
你好,请问下SDRAM布线有什么要求
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-1 15:23

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表