硬汉嵌入式论坛

 找回密码
 立即注册
查看: 1298|回复: 8
收起左侧

[FMC] STM32H723+W9825G6 SDRAM读写的问题

[复制链接]

4

主题

9

回帖

21

积分

新手上路

积分
21
发表于 2024-6-23 17:28:16 | 显示全部楼层 |阅读模式
本帖最后由 snikeguo 于 2024-6-23 23:19 编辑

我测试时发现,如果只测试前4M的话, 数据是对的,只要超过4M,比如4M+4字节,4M+8字节,那么数据就不对了,

STM32H723ZGT6  主频550M,FMC3分频,275M/3=91M,配置参数:
如图所示,
[C] 纯文本查看 复制代码
 hsdram1.Instance = FMC_SDRAM_DEVICE;
  /* hsdram1.Init */
  hsdram1.Init.SDBank = FMC_SDRAM_BANK1;
  hsdram1.Init.ColumnBitsNumber = FMC_SDRAM_COLUMN_BITS_NUM_9;
  hsdram1.Init.RowBitsNumber = FMC_SDRAM_ROW_BITS_NUM_13;
  hsdram1.Init.MemoryDataWidth = FMC_SDRAM_MEM_BUS_WIDTH_16;
  hsdram1.Init.InternalBankNumber = FMC_SDRAM_INTERN_BANKS_NUM_4;
  hsdram1.Init.CASLatency = FMC_SDRAM_CAS_LATENCY_3;
  hsdram1.Init.WriteProtection = FMC_SDRAM_WRITE_PROTECTION_DISABLE;
  hsdram1.Init.SDClockPeriod = FMC_SDRAM_CLOCK_PERIOD_3;
  hsdram1.Init.ReadBurst = FMC_SDRAM_RBURST_ENABLE;
  hsdram1.Init.ReadPipeDelay = FMC_SDRAM_RPIPE_DELAY_1;
  /* SdramTiming */
  SdramTiming.LoadToActiveDelay = 3;
  SdramTiming.ExitSelfRefreshDelay = 9;
  SdramTiming.SelfRefreshTime = 7;
  SdramTiming.RowCycleDelay = 7;
  SdramTiming.WriteRecoveryTime = 6;
  SdramTiming.RPDelay = 3;
  SdramTiming.RCDDelay = 3;

自动刷新:
[C] 纯文本查看 复制代码
#define REFRESH_COUNT                    ((uint32_t)2122)    /* SDRAM自刷新计数 */

  引脚:
[C] 纯文本查看 复制代码
 /** FMC GPIO Configuration
  PF0   ------> FMC_A0
  PF1   ------> FMC_A1
  PF2   ------> FMC_A2
  PF3   ------> FMC_A3
  PF4   ------> FMC_A4
  PF5   ------> FMC_A5
  PA4   ------> FMC_D8
  PA7   ------> FMC_SDNWE
  PC4   ------> FMC_SDNE0
  PC5   ------> FMC_SDCKE0
  PF11   ------> FMC_SDNRAS
  PF12   ------> FMC_A6
  PF13   ------> FMC_A7
  PF14   ------> FMC_A8
  PF15   ------> FMC_A9
  PG0   ------> FMC_A10
  PG1   ------> FMC_A11
  PE7   ------> FMC_D4
  PE8   ------> FMC_D5
  PE9   ------> FMC_D6
  PE10   ------> FMC_D7
  PE12   ------> FMC_D9
  PE13   ------> FMC_D10
  PE14   ------> FMC_D11
  PE15   ------> FMC_D12
  PD8   ------> FMC_D13
  PD9   ------> FMC_D14
  PD10   ------> FMC_D15
  PD14   ------> FMC_D0
  PD15   ------> FMC_D1
  PG2   ------> FMC_A12
  PG4   ------> FMC_BA0
  PG5   ------> FMC_BA1
  PG8   ------> FMC_SDCLK
  PC7   ------> FMC_NE1
  PD0   ------> FMC_D2
  PD1   ------> FMC_D3
  PD4   ------> FMC_NOE
  PD5   ------> FMC_NWE
  PG15   ------> FMC_SDNCAS
  PE0   ------> FMC_NBL0
  PE1   ------> FMC_NBL1
  */


已知,现有实际电路板有个引脚和上述描述对不上的地方就是
PC4 ------> FMC_SDNE0
实际电路板画错了,画到了某个普通IO上了,为了测试,我现在强制把这个普通CS脚拉低了:
HAL_GPIO_WritePin(SDRAM_CS_GPIO_Port,SDRAM_CS_Pin,GPIO_PIN_RESET);
请问我的问题在哪里?

QQ图片20240623172450.png
回复

使用道具 举报

4

主题

9

回帖

21

积分

新手上路

积分
21
 楼主| 发表于 2024-6-23 17:31:15 | 显示全部楼层
在补充一张4M+8字节的
QQ图片20240623173045.png
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115490
QQ
发表于 2024-6-24 08:42:22 | 显示全部楼层
注意H723驱动SDRAM的速度别超了,然后就是检查下焊接,焊接问题尤其重要,论坛很多坛友都是这个地方出错了

QQ图片20240624084131.png
回复

使用道具 举报

4

主题

9

回帖

21

积分

新手上路

积分
21
 楼主| 发表于 2024-6-27 01:06:42 | 显示全部楼层
我发现把hsdram1.Init.RowBitsNumber = FMC_SDRAM_ROW_BITS_NUM_13; 改成12  那么前面16M的可以测试过,只要这个是13数据就一定不对,
如果改成13,调试发现 写SdramBaseAddr+x数据=12345678时,SdramBaseAddr+4M+x的数据也会变成12345678   (其中X为偏移量哈)
如果改成12时,同样的测试,数据就不会跟随,当然改成12只能测试16M
6块板子都一样,排除了焊接问题
回复

使用道具 举报

4

主题

9

回帖

21

积分

新手上路

积分
21
 楼主| 发表于 2024-6-27 01:08:37 | 显示全部楼层
在补充一点,
已知,现有实际电路板有个引脚和上述描述对不上的地方就是
PC4 ------> FMC_SDNE0
实际电路板画错了,画到了某个普通IO上了,为了测试,我现在强制把这个普通CS脚拉低了:
HAL_GPIO_WritePin(SDRAM_CS_GPIO_Port,SDRAM_CS_Pin,GPIO_PIN_RESET);
请问我的问题在哪里?

这个已经改过来了,问题还是一样的,所以排除了这个引脚的问题,
我已经把FMC改成了200 ,并且是3分频哈:hsdram1.Init.SDClockPeriod = FMC_SDRAM_CLOCK_PERIOD_3;
仍然有上述这个问题。
回复

使用道具 举报

0

主题

18

回帖

18

积分

新手上路

积分
18
QQ
发表于 2024-6-27 08:04:07 | 显示全部楼层
CASLatency 和 ReadPipeDelay 这两个参数都改为 2 试一下呢
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115490
QQ
发表于 2024-6-27 09:05:59 | 显示全部楼层
snikeguo 发表于 2024-6-27 01:08
在补充一点,
已知,现有实际电路板有个引脚和上述描述对不上的地方就是
PC4 ------> FMC_SDNE0

还有CASLatency ,也就是上面坛友说的。

另外我觉得你的原理图应该再核对下。
回复

使用道具 举报

4

主题

9

回帖

21

积分

新手上路

积分
21
 楼主| 发表于 2024-6-28 16:49:02 来自手机 | 显示全部楼层
问题已经解决  A12没接
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115490
QQ
发表于 2024-6-29 08:21:39 | 显示全部楼层
snikeguo 发表于 2024-6-28 16:49
问题已经解决  A12没接

谢谢告知最终原因。

果然是硬件问题,论坛上SDRAM的问题,90%最终都落在了硬件上。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-4-29 06:05 , Processed in 0.596087 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表