This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
您好(再次)
我正在连接8MB/64Mbit SDRAM, 希望有人能确认我对 传递给 EPIConfigSDRAMSet()的刷新计数器值的理解。
我有一个25MHz XTAL、并使用 PLL 生成120MHz 系统时钟频率。
我将分频器设置为1、使 EPI Clk =(120MHz/(((1 / 2)+ 1)* 2) = 40MHz 在文档中声明 分频器值1会导致 EPI 时钟速率为 系统时钟的一半40MHz!= 120MHz/2、但系统 时钟的三分之一。
使用40MHz 时、我会得到:
RFSH = 64000 / 4096 = 15.625 / 0.025 = 625
因此,我对 EPIConfigSDRAMSet()的调用是:
MAP_EPIConfigSDRAMSet (EPI0_BASE、(EPI_SDRAM_CORE_FREQ_30_50 | EP_SDRAM_FUL_POWER | EPI_SDRAM_SIZE 64MBIT)、625);
但是、如果它是60MHz (120MHz/2)
RFSH = 64000 / 4096 = 15.625 / 0.016 = 937
我现在对 EPIConfigSDRAMSet()的调用是:
MAP_EPIConfigSDRAMSet (EPI0_BASE、(EPI_SDRAM_CORE_FREQ_50_100 | EPI_SDRAM_FUL_POWER | EPI_SDRAM_SIZE 64MBIT)、 937);
接口配置充分、我可以使用任一配置在整个 SDRAM 上运行 March 测试、这让我特别担心、因为警告"如果使用的数字大于允许的值、SDRAM 的刷新频率不够、数据丢失"。
谢谢、
HL
TivaWare 文档(第11.2.2.11节)中的公式 有点令人困惑。 它使用整数除法、使1/2 = 0。 更清楚的是、如果写入:
EPIClk =(分频器= 0)? SYSCLK:(SYSCLK /(((Divider >>1)+1) x 2))
因此、如果在 系统时钟为120MHz 时调用 EPIDividerSet (EPI0_BASE、1)、EPI 时钟为60MHz。
当然! SMH。 感谢 Bob