初级会员

- 积分
- 102
- 金钱
- 102
- 注册时间
- 2016-8-29
- 在线时间
- 10 小时
|
1金钱
参考SDRAM的示例程序,如果使用 SDCKE1 和 SDNE1 的话,除了对应的引脚模式更改以外,别的地方是否需要更改?
另外,SDRAM不是只有4个BANK么?为什么示例程序中说配置为5和6?
//SDRAM初始化
void SDRAM_Init(void)
{
FMC_SDRAM_TimingTypeDef SDRAM_Timing;
SDRAM_Handler.Instance=FMC_SDRAM_DEVICE; //SDRAM在BANK5,6
SDRAM_Handler.Init.SDBank=FMC_SDRAM_BANK1; //SDRAM接在BANK5上
// SDRAM_Handler.Init.SDBank=FMC_SDRAM_BANK2; //SDRAM接在BANK6上
SDRAM_Handler.Init.ColumnBitsNumber=FMC_SDRAM_COLUMN_BITS_NUM_9; //列数量
SDRAM_Handler.Init.RowBitsNumber=FMC_SDRAM_ROW_BITS_NUM_13; //行数量
SDRAM_Handler.Init.MemoryDataWidth=FMC_SDRAM_MEM_BUS_WIDTH_16; //数据宽度为16位
SDRAM_Handler.Init.InternalBankNumber=FMC_SDRAM_INTERN_BANKS_NUM_4; //一共4个BANK
SDRAM_Handler.Init.CASLatency=FMC_SDRAM_CAS_LATENCY_3; //CAS为3
SDRAM_Handler.Init.WriteProtection=FMC_SDRAM_WRITE_PROTECTION_DISABLE;//失能写保护
SDRAM_Handler.Init.SDClockPeriod=FMC_SDRAM_CLOCK_PERIOD_2; //SDRAM时钟为HCLK/2=180M/2=90M=11.1ns
SDRAM_Handler.Init.ReadBurst=FMC_SDRAM_RBURST_ENABLE; //使能突发
SDRAM_Handler.Init.ReadPipeDelay=FMC_SDRAM_RPIPE_DELAY_1; //读通道延时
SDRAM_Timing.LoadToActiveDelay=2; //加载模式寄存器到激活时间的延迟为2个时钟周期
SDRAM_Timing.ExitSelfRefreshDelay=8; //退出自刷新延迟为8个时钟周期
SDRAM_Timing.SelfRefreshTime=6; //自刷新时间为6个时钟周期
SDRAM_Timing.RowCycleDelay=6; //行循环延迟为6个时钟周期
SDRAM_Timing.WriteRecoveryTime=2; //恢复延迟为2个时钟周期
SDRAM_Timing.RPDelay=2; //行预充电延迟为2个时钟周期
SDRAM_Timing.RCDDelay=2; //行到列延迟为2个时钟周期
HAL_SDRAM_Init(&SDRAM_Handler,&SDRAM_Timing);
SDRAM_Initialization_Sequence(&SDRAM_Handler);//发送SDRAM初始化序列
}
|
最佳答案
查看完整内容[请看2#楼]
还需要改SDRAM控制器的部分配置。 4个bank是ba0,ba1控制的,对你来说,没什么影响,只需要配置BA0,BA1复用输出,设置SDRAM_Handler.Init.InternalBankNumber=FMC_SDRAM_INTERN_BANKS_NUM_4; 就可以了[/backcolor]。
|