硬汉嵌入式论坛

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

STM32F429 fmc 时钟168M 但是翻转波形很慢

[复制链接]

3

主题

19

回帖

28

积分

新手上路

积分
28
发表于 2025-1-8 23:54:26 | 显示全部楼层 |阅读模式




hsdram1.Instance = FMC_SDRAM_DEVICE;
  /* hsdram1.Init */
  hsdram1.Init.SDBank = FMC_SDRAM_BANK1;
  hsdram1.Init.ColumnBitsNumber = FMC_SDRAM_COLUMN_BITS_NUM_8;
  hsdram1.Init.RowBitsNumber = FMC_SDRAM_ROW_BITS_NUM_13;
  hsdram1.Init.MemoryDataWidth = FMC_SDRAM_MEM_BUS_WIDTH_32;
  hsdram1.Init.InternalBankNumber = FMC_SDRAM_INTERN_BANKS_NUM_4;
  hsdram1.Init.CASLatency = FMC_SDRAM_CAS_LATENCY_1;
  hsdram1.Init.WriteProtection = FMC_SDRAM_WRITE_PROTECTION_ENABLE;
  hsdram1.Init.SDClockPeriod = FMC_SDRAM_CLOCK_PERIOD_2;
  hsdram1.Init.ReadBurst = FMC_SDRAM_RBURST_ENABLE;
  hsdram1.Init.ReadPipeDelay = FMC_SDRAM_RPIPE_DELAY_1;
  /* SdramTiming */
  SdramTiming.LoadToActiveDelay = 1;
  SdramTiming.ExitSelfRefreshDelay = 1;
  SdramTiming.SelfRefreshTime = 1;
  SdramTiming.RowCycleDelay = 1;
  SdramTiming.WriteRecoveryTime = 1;
  SdramTiming.RPDelay = 1;
  SdramTiming.RCDDelay = 1;

  if (HAL_SDRAM_Init(&hsdram1, &SdramTiming) != HAL_OK)
  {
    Error_Handler( );
  }




#define SRAM_BASE_ADDRESS  0x60000000

// 写SRAM
void SRAM_Write(uint32_t address, uint32_t data) {
        //FMC_Bank1->BTCR[0] |= (1<<20);
    *(volatile uint16_t*)(SRAM_BASE_ADDRESS + (address<<1)) = data;
    //FMC_Bank1->BTCR[0] &= ~(1<<20);
}





SRAM_Write(0x00AA, 0x0055);
SRAM_Write(0x0055, 0x0055);
SRAM_Write(0x00AA, 0x0055);
SRAM_Write(0x0055, 0x0055);



地址线翻转很慢啊

回复

使用道具 举报

3

主题

19

回帖

28

积分

新手上路

积分
28
 楼主| 发表于 2025-1-8 23:55:09 | 显示全部楼层
123.png
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115653
QQ
发表于 2025-1-9 07:02:45 | 显示全部楼层
测试SDRAM的时钟线看看正常不
回复

使用道具 举报

3

主题

19

回帖

28

积分

新手上路

积分
28
 楼主| 发表于 2025-1-9 09:17:14 | 显示全部楼层
eric2013 发表于 2025-1-9 07:02
测试SDRAM的时钟线看看正常不

clk 没信号...
我外部没接sdram,就想看看波形
回复

使用道具 举报

3

主题

19

回帖

28

积分

新手上路

积分
28
 楼主| 发表于 2025-1-9 09:25:03 | 显示全部楼层
eric2013 发表于 2025-1-9 07:02
测试SDRAM的时钟线看看正常不

还请问下FMC SDRAM 的地址不是0xC0000000 ,调用 *(volatile uint16_t*)(0xC0000000+ address) 就是硬件错误中断。调用*(volatile uint16_t*)(0x60000000+ address)  可以发出波形,翻转很慢也没有clk信号
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115653
QQ
发表于 2025-1-10 07:39:09 | 显示全部楼层
fan123 发表于 2025-1-9 09:25
还请问下FMC SDRAM 的地址不是0xC0000000 ,调用 *(volatile uint16_t*)(0xC0000000+ address) 就是硬件错 ...

1、SDRAM这个可能得接实际硬件测试了。
2、异步FMC配置,就是没有CLK型号的,同步FMC配置才有时钟信号
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-10 04:27 , Processed in 0.310505 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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