×

MCU的嵌入式系统设计如何运行SDRAM

消耗积分:0 | 格式:pdf | 大小:0.16 MB | 2020-11-25

分享资料个

  在使用 MCU 的嵌入式系统设计中,当程序或者数据内存占用太大而无法放入片上闪存或 SRAM 时,开发者通常考虑使用 SDRAM。别问我为什么你的 MCU 不支持 SDRAM。 SDRAM 是同步动态随机存取存储器的缩写。在微控制器应用中,微控制器通过使用外部存储控制器(EMC)操作访问 SDRAM ,SDRAM 时钟频率通常为 100MHz 或 133MHz。外部存储控制器通常不支持 DDR SDRAM, 数据只是单边沿采样,即并行数据总线可以接受一个命令并在每个时钟周期传输一个数据字。在 SDRAM 中执行程序是使用 SDRAM 的一种典型用法, 小编这里就介绍一下 SDRAM 中执行程序的方法和 SDRAM 执行程序的性能基准。

  SDRAM 初始化

  SDRAM 必须在使用前进行配置,SDRAM 初始化分为 6 个步骤。配置 EMC 寄存器的 SDRAM 时钟频率、字节顺序和时序参数。 SDRAM 的时序比较复杂,用户需要通过查阅相关 SDRAM 芯片的手册获得时序参数(如刷新周期、预充电命令周期、自刷新退出时间、写恢复时间等等)。发送 NOP 命令发送预充电命令发送两次自动刷新命令设置 SDRAM 模式发送正常运行命令系统启动时,SDRAM 尚未初始化。理论上,程序在系统启动后的任何时刻都可以进行 SDRAM 初始化。然而,由于 SDRAM 初始化过程比较复杂,使用的系统资源较多,SDRAM 初始化必须在所需的系统资源初始化完成后再进行。具体上讲,开发者在芯片刚刚启动时(如 Reset_Handler 中)初始化 SDRAM 需要留心以下细节:由于 SDRAM 初始化函数使用系统堆栈或全局变量,开发者必须确保系统堆栈或全局变量所在的物理内存上电及时钟使能。在程序跳转到主程序启动之前,全局变量未清零或初始化,如果在主函数之前执行 SDRAM 初始化,开发者必须手动初始化变量。举个例子,在 LPC5460x 中,开发者需要在 SystemInit 函数中初始化 SDRAM,该函数(SystemInit)由 Reset_Handler 调用。在调用系统初始化之前,要通过设置 AHBCLKCTRLSET0 寄存器将 SRAM 时钟使能。 Reset_HandlerPROC EXPORTReset_Handler [WEAK] IMPORTSystemInitIMPORT__main ;clock control SRAM1/SRAM2/SRAM3 for stack LDRr0, = 0x40000220 ; AHBCLKCTRLSET0 MOVr1, #0x38 STRr1, [r0] LDRr0, =SystemInit BLXr0 LDRr0, =__main BXr0 ENDP

 

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

评论(0)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !