基于 ART-PI FMC驱动SDRAM
创始人
2025-05-30 07:52:57
0

引脚接线图

SDRAMGPIO解释
FMC A0:5PF0:5地址线
FMC A6:9PF12:15地址线
FMC A10:12PG0:2地址线
FMC D0:1PD14:15数据线
FMC D2:3PD0:1数据线
FMC D4:12PE7:15数据线
FMC D13:15PD8:10数据线
FMC BA0PG4Bank地址输入
FMC BA1PG5Bank地址输入
FMC NBL0PE0数据掩码
FMC NBL1PE1数据掩码
FMC SDNEPC2片选
FMC SDCKEPC3时钟使能信号,选择哪个Bank主要就是看这个引脚
FMC SDNCASPG15列地址选通(低电平有效)
FMC SDNRASPF11行地址选通(低电平有效)
FMC SDNWEPH5写入使能(低电平有效)
FMC SDCLKPG8同步时钟

地址映射

Bank0开始地址为0xC000 0000(本文使用)
Bank1开始地址为0xD000 0000
在这里插入图片描述

ioc模式配置

  1. 使用 SDRAM Bank1所以选择 SDRAM1

  2. 使能片选和时钟

  3. 每个WB芯片内部在这里插入图片描述
    有4个bank

  4. 地址13位,数据16位

  5. 使用地址掩码功能所以启用Byte Enable
    在这里插入图片描述

  6. GPIO速度注意使用Very High

ioc configuration配置

  1. 使用Bank1
  2. 行列地址参考华邦数据手册,行地址是13位,列地址是9位
    在这里插入图片描述
  3. CAS延迟,参考华邦手册
    在这里插入图片描述
  4. 写保护:由于要使用读写功能所以不开启写保护
  5. SDRAM Common Clock,参考STM32数据手册,H750配置HCLK频率为400MHz,2分频就是200MHz,3分频就是133MHz
    在这里插入图片描述
  6. 使用突发读可以提高一点点性能,这里就不开启了
  7. 读管道延迟:在CAS延迟之后插入的延迟时间,配置为默认选项(0)
    在这里插入图片描述
    在这里插入图片描述
  8. Row to column Delay 行到列延迟(trcd),不能小于20ns
    SDRAM时钟频率=HCLK3=4003MHz,SDRAM时钟周期=7.5nsSDRAM时钟频率=\frac{HCLK}{3}=\frac{400}{3}MHz,SDRAM时钟周期=7.5nsSDRAM时钟频率=3HCLK​=3400​MHz,SDRAM时钟周期=7.5ns
    所以20ns至少需要3个周期,所以Row to column Delay 写3
    在这里插入图片描述
  9. 行预充电延迟(trp)查手册不低于20ns,配置为3
  10. 写恢复延迟(twr)2个tck(时钟周期),但是最低只能配置3(cubemx约束)
  11. 行循环延迟(trc)65ns,配置为8
  12. 自刷新时间(tras)45ns,配置为6
  13. 退出自刷新时间(txsr)75ns,配置为10
  14. 加载模式寄存器激活时间(trsc),配置2个时钟周期
    在这里插入图片描述

在这里插入图片描述

初始化SDRAM

参考华邦数据手册,翻译大概如下:

1. 在上电过程中,当输入信号保持在“NOP”状态时,所有VDD和VDDQ引脚必须同时爬升到指定电压(所有引脚电平拉高)。任何输入引脚或VDD电源的上电电压不得超过VDD + 0.3V
2. 通电后,需要先暂停200uS,然后使用precharge命令对所有Banks进行预充电。
3. 为了防止上电过程中DQ总线上的数据争用,需要在初始暂停期间将DQM和CKE引脚保持在高位。
4. 所有Bank预充电完成后,必须发出模式寄存器设置命令来初始化模式寄存器。
5. 在编程模式寄存器之前或之后,还需要额外的8个自动刷新周期(CBR),以确保正确的后续操作。

在这里插入图片描述

在这里插入图片描述

  /* USER CODE BEGIN FMC_Init 2 */
//自己填充的代码,第一步给SDRAM提供时钟FMC_SDRAM_CommandTypeDef Command;Command.CommandMode= FMC_SDRAM_CMD_CLK_ENABLE;Command.CommandTarget=FMC_SDRAM_CMD_TARGET_BANK1;Command.AutoRefreshNumber=1;Command.ModeRegisterDefinition = 0;HAL_SDRAM_SendCommand(&hsdram1,&Command,0xFFFF);
//第二步HAL_Delay(1);//至少延时200us//第三步 对所有bank预充电 Command.CommandMode= FMC_SDRAM_CMD_PALL;Command.CommandTarget=FMC_SDRAM_CMD_TARGET_BANK1;Command.AutoRefreshNumber=1;Command.ModeRegisterDefinition = 0;HAL_SDRAM_SendCommand(&hsdram1,&Command,0xFFFF);
//第四步 插入8个自动刷新周期Command.CommandMode= FMC_SDRAM_CMD_AUTOREFRESH_MODE;Command.CommandTarget=FMC_SDRAM_CMD_TARGET_BANK1;Command.AutoRefreshNumber=8;Command.ModeRegisterDefinition = 0;HAL_SDRAM_SendCommand(&hsdram1,&Command,0xFFFF);//第五步 编程SDRAM加载模式寄存器Command.CommandMode= FMC_SDRAM_CMD_LOAD_MODE;Command.CommandTarget=FMC_SDRAM_CMD_TARGET_BANK1;Command.AutoRefreshNumber=1;Command.ModeRegisterDefinition = 0x230;HAL_SDRAM_SendCommand(&hsdram1,&Command,0xFFFF);//第六步,配置自动刷新周期HAL_SDRAM_ProgramRefreshRate(&hsdram1,1022);/* USER CODE END FMC_Init 2 */

测试代码

uint32_t pbuff[32*1024*1024/4] __attribute__((at(0xC0000000)));//bank1 放置到另一个拓展内存里for(int count=0;count<0x20000000/4;count++){pbuff[count]=count/3;}for(int count=0;count<0x20000000/4;count++){if(pbuff[count]!=count/3){goto checkFailed;}}
checkFailed:while(1);/* USER CODE END 3 */

引脚电路图参考

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

工程代码

gitee

相关内容

热门资讯

安卓系统限制无法录音,探索无法... 你有没有遇到过这种情况?手机里明明装了录音软件,却突然发现,哎呀妈呀,竟然无法录音了!这可真是让人头...
怎么降级手机系统安卓,操作指南... 手机系统升级了,新功能层出不穷,但有时候,你可能会觉得,这系统太卡了,想回到那个流畅如丝的年代。别急...
米oa系统是安卓系统吗,深入解... 亲爱的读者,你是否曾好奇过,米OA系统是不是安卓系统的一员?这个问题,就像是一颗好奇的种子,悄悄地在...
手机刷安卓车载系统,手机刷机后... 你有没有发现,现在开车的时候,手机和车载系统之间的互动越来越紧密了呢?想象当你驾驶着爱车,一边享受着...
vivo安卓怎么降系统,viv... 手机用久了,是不是觉得系统越来越卡,运行速度大不如前?别急,今天就来教你怎么给vivo安卓手机降降级...
nova 4刷安卓系统,体验全... 最近手机界可是热闹非凡呢!听说华为nova 4要刷安卓系统了,这可真是让人兴奋不已。你有没有想过,你...
如果当初没有安卓系统,科技世界... 想象如果没有安卓系统,我们的生活会是怎样的呢?是不是觉得有点不可思议?别急,让我们一起穿越时空,探索...
安卓电视装win系统,系统转换... 亲爱的读者们,你是否曾想过,在你的安卓电视上装一个Windows系统,让它瞬间变身成为一台功能强大的...
安卓手机还原系统好处,重拾流畅... 你有没有遇到过安卓手机卡顿、运行缓慢的情况?别急,今天就来给你揭秘一下安卓手机还原系统的那些好处,让...
安卓系统能跑win吗,探索跨平... 你有没有想过,你的安卓手机里能不能装上Windows系统呢?这听起来是不是有点像科幻电影里的情节?别...
安卓车载系统蓝牙设置,畅享智能... 你有没有发现,现在开车的时候,手机和车载系统之间的互动越来越频繁了呢?这不,今天就来给你详细说说安卓...
奥利奥安卓系统,探索新一代智能... 你有没有想过,一块小小的奥利奥饼干竟然能和强大的安卓系统扯上关系?没错,今天就要来聊聊这个跨界组合,...
微信使用安卓系统,功能解析与操... 你有没有发现,现在用微信的人越来越多了呢?尤其是安卓系统的用户,简直就像潮水一样涌来。今天,就让我带...
体验最新原生安卓系统,极致体验... 你有没有想过,手机系统就像是我们生活的调味品,有时候换一种口味,生活都会变得有趣起来呢?最近,我体验...
安卓系统能玩原神,尽享奇幻冒险... 你有没有想过,在安卓系统上也能畅玩《原神》这样的热门游戏呢?没错,就是那个画面精美、角色丰富、玩法多...
安卓写手机银行系统,基于安卓平... 你有没有想过,手机银行系统在我们日常生活中扮演了多么重要的角色呢?每天刷刷手机,就能轻松管理账户,转...
僵尸之夜恐怖安卓系统,揭秘恐怖... 僵尸之夜,恐怖安卓系统来袭!想象一个寂静的夜晚,你正沉浸在美梦中,突然,一阵诡异的铃声打破了夜的宁静...
谷歌框架和安卓系统,构建智能移... 你有没有想过,为什么你的手机那么聪明,能帮你找到路线,还能帮你拍出美美的照片呢?这都要归功于一个超级...
安卓系统和oppo系统哪个流畅... 你有没有想过,手机系统哪个更流畅呢?安卓系统和OPPO系统,这两个名字听起来就让人心动。今天,咱们就...
安卓怎么用微软系统,利用微软系... 你是不是也和我一样,对安卓手机上的微软系统充满了好奇?想象那熟悉的Windows界面在你的安卓手机上...