楼主在上周末一口气写了三篇评测,这次第三波的测评选择了这块板子上的SDRAM做一下测评,同样地,**和大家分享CUBE的使用心得: 首先去找DISCOVERY板子上的SDRAM芯片型号 在官网提供的数据手册中写得很清晰,镁光公司的内存芯片,型号为:MT48LC4M32B2B5-6A。(文件已附在附件中)芯片的基本特性参数如图 内存128M,数据总线32位宽等。 这段话是论坛大牛提到的内容,我也认真地看了一下,并且在网上找到一篇**(见附件): /***********************************************************************************************************大牛原话 对于SDRAM来说,有几个参数对其性能影响至关重要,它们是tRCD,CL,tRP,tWR。 tRCD:在发送列读写命令时必须要与行有效命令有一个间隔,这个间隔被定义为tRCD,即RAS to CAS Delay(RAS至CAS延迟),可以理解为行选通周期,这应该是根据芯片存储阵列电子元件响应时间(从一种状态到另一种状态变化的过程)所制定的延迟。广义的tRCD以时钟周期(tCK,Clock Time)数为单位,比如tRCD=2,就代表延迟周期为两个时钟周期,具体到确切的时间,则要根据时钟频率而定,对于IS42S16400J-7TL,tRCD为15ns。 CL(CAS Latency):在选定列地址后,就已经确定了具体的存储单元,剩下的事情就是数据通过数据I/O通道(DQ)输出到内存总线上了。但是在CAS发出之后,仍要经过一定的时间才能有数据输出,从CAS与读取命令发出到第一笔数据输出的这段时间,被定义为CL(CAS Latency,CAS潜伏期)。由于CL只在读取时出现,所以CL又被称为读取潜伏期(RL,Read Latency)。CL的单位与tRCD一样,为时钟周期数,具体耗时由时钟频率决定。数据写入的操作也是在tRCD之后进行,但此时没有了CL(CL只出现在读取操作中)。对于IS42S16400J-7TL,CL可取2或3个周期。 tRP:在发出预充电命令之后,要经过一段时间才能允许发送RAS行有效命令打开新的工作行,这个间隔被称为tRP(Precharge command Period,预充电有效周期)。和tRCD、CL一样,tRP的单位也是时钟周期数,具体值视时钟频率而定。对于IS42S16400J-7TL,tRP为15ns。 tWR:数据并不是即时地写入存储电容,因为选通三极管(就如读取时一样)与电容的充电必须要有一段时间,所以数据的真正写入需要一定的周期。为了保证数据的可靠写入,都会留出足够的写入/校正时间(tWR,WriteRecovery Time),这个操作也被称作写回(Write Back)。对于IS42S16400J-7TL,tWR为2个周期。 ******************************************************************************************************************************/ 本帖的目的还是侧重CUBE的使用经验,以及对板子的外设进行评测实验,因此,关于SDRAM的细节内容不再多做介绍。耐心地啃完数据手册,查阅完自己不懂的地方之后,便可以直接新建CUBE的板级工程了。 时钟及片选通过板子预标记的橙色标识可以看出选用的通道0通道,0号片选。其次是bank,这边对应上SDRAM芯片,可以选择4bank,地址线选择最大的12根,数据线选择32位。使能32位字长。其中关于地址线和数据线的位长,一开始我也没法确定,但在板级工程右边预标记的橙色内容中,便可以很轻易地确定这两个参数。6右侧密密麻麻的引脚使能,如果自己一个个去点,也得去查原理图。这里还是查询了一下原理图确定自己的配置没有错。 同样地,我习惯使用板子自带USART作为调试工具。 时钟配置我开到最高。 接下来就是我们要关注的FMC中,SDRAM的参数了。 这些参数一看我也很头晕,不过肯定和数据手册能够对应起来,在此之前,我打开了库文件中的例程代码,专门查看了一下例程中的配置: 将这些参数和cube里面的配置参数对应起来,一看就很明了了。 SDRAM的配置参数分两块,一块是控制参数,另一块是时间参数。对于控制参数,楼主就按照例程代码里配置的去配置了一下。对于时间参数,楼主再一次查看了SDRAM的Datasheet,找到了以下七个主要参数。 这些参数的说明能和cube里的对应起来,由于我的主频和例程的主频开的不一样,因此,换算的时间也不一样。这边需要大家自行计算。 配置完这些,就可以像以往一样导出成SW4STM32的代码了。 这边再和大家分享一个小技巧,在调试界面,选择window->show view中,有很多可以观察的界面很有用,楼主最喜欢的几个是: outline:可以查看函数定义,快速对应到函数以及变量的位置。 variables和expression:一个查看全局变量,一个查看局部变量。 还有一个就是memory:在这个工程里面,我们可以查看地址为0xC0000000处,当调试运行至断点,便会显示当前内存的值,非常之好用。 最后分享一下我的测评工程,工程参考ST的库。读写外部SDRAM,因为工程比较大,所以删除了库文件,只保留.c文件供大家使用断点调试参考。欢迎大家一起讨论。 |