硬汉嵌入式论坛

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

[有问必答] STM32F407 FSMC写数据时,FSMC_NWE(PD5) 输出一直高电平

[复制链接]

3

主题

17

回帖

26

积分

新手上路

积分
26
发表于 2022-5-3 11:47:25 | 显示全部楼层 |阅读模式
STM32F407 FSMC写数据时,FSMC_NWE(PD5) 输出一直高电平

static void MX_FSMC_Init(void)
{
  /* USER CODE BEGIN FSMC_Init 0 */

  /* USER CODE END FSMC_Init 0 */

  FSMC_NORSRAM_TimingTypeDef readWriteTiming = {0};
  FSMC_NORSRAM_TimingTypeDef writeTiming = {0};

  /* USER CODE BEGIN FSMC_Init 1 */

  /* USER CODE END FSMC_Init 1 */

  /** Perform the SRAM1 memory initialization sequence
  */
  hsram1.Instance = FSMC_NORSRAM_DEVICE;
  hsram1.Extended = FSMC_NORSRAM_EXTENDED_DEVICE;
  /* hsram1.Init */
  hsram1.Init.NSBank = FSMC_NORSRAM_BANK1;
  hsram1.Init.DataAddressMux = FSMC_DATA_ADDRESS_MUX_DISABLE;
  hsram1.Init.MemoryType = FSMC_MEMORY_TYPE_SRAM;
  hsram1.Init.MemoryDataWidth = FSMC_NORSRAM_MEM_BUS_WIDTH_8;
  hsram1.Init.BurstAccessMode = FSMC_BURST_ACCESS_MODE_DISABLE;
  hsram1.Init.WaitSignalPolarity = FSMC_WAIT_SIGNAL_POLARITY_LOW;
  hsram1.Init.WrapMode = FSMC_WRAP_MODE_DISABLE;
  hsram1.Init.WaitSignalActive = FSMC_WAIT_TIMING_BEFORE_WS;
  hsram1.Init.WriteOperation = FSMC_WRITE_OPERATION_ENABLE;
  hsram1.Init.WaitSignal = FSMC_WAIT_SIGNAL_DISABLE;
  hsram1.Init.ExtendedMode = FSMC_EXTENDED_MODE_ENABLE;
  hsram1.Init.AsynchronousWait = FSMC_ASYNCHRONOUS_WAIT_DISABLE;
  hsram1.Init.WriteBurst = FSMC_WRITE_BURST_DISABLE;
  hsram1.Init.PageSize = FSMC_PAGE_SIZE_NONE;
  
  /* Timing */
  readWriteTiming.AddressSetupTime = 15;
  readWriteTiming.AddressHoldTime = 15;
  readWriteTiming.DataSetupTime = 255;
  readWriteTiming.BusTurnAroundDuration = 15;
  readWriteTiming.CLKDivision = 16;
  readWriteTiming.DataLatency = 17;
  readWriteTiming.AccessMode = FSMC_ACCESS_MODE_A;
  /* ExtTiming */

  writeTiming.AddressSetupTime = 15;
  writeTiming.AddressHoldTime = 15;
  writeTiming.DataSetupTime = 255;
  writeTiming.BusTurnAroundDuration = 15;
  writeTiming.CLKDivision = 16;
  writeTiming.DataLatency = 17;
  writeTiming.AccessMode = FSMC_ACCESS_MODE_A;
  
  if (HAL_SRAM_Init(&hsram1, &readWriteTiming, &writeTiming) != HAL_OK)
  {
    Error_Handler( );
  }

  /* USER CODE BEGIN FSMC_Init 2 */

  /* USER CODE END FSMC_Init 2 */
}
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107128
QQ
发表于 2022-5-5 08:41:12 | 显示全部楼层
有没有简单换算下,你这个时间是多长,计算不方便就示波器测试下。

readWriteTiming.AddressSetupTime = 15;
  readWriteTiming.AddressHoldTime = 15;
  readWriteTiming.DataSetupTime = 255;
  readWriteTiming.BusTurnAroundDuration = 15;
  readWriteTiming.CLKDivision = 16;
  readWriteTiming.DataLatency = 17;
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-19 13:05 , Processed in 0.146374 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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