硬汉嵌入式论坛

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

[FMC] FMC写一次数据出来两次时序

[复制链接]

3

主题

66

回帖

75

积分

初级会员

积分
75
发表于 2020-9-3 09:54:42 | 显示全部楼层 |阅读模式
1. FMC配置(CubeMX生成的)
  1. void MX_FMC_Init(void)
  2. {
  3.   FMC_NORSRAM_TimingTypeDef Timing = {0};
  4.   FMC_NORSRAM_TimingTypeDef ExtTiming = {0};

  5.   /** Perform the SRAM1 memory initialization sequence
  6.   */
  7.   hsram1.Instance = FMC_NORSRAM_DEVICE;
  8.   hsram1.Extended = FMC_NORSRAM_EXTENDED_DEVICE;
  9.   /* hsram1.Init */
  10.   hsram1.Init.NSBank = FMC_NORSRAM_BANK1;
  11.   hsram1.Init.DataAddressMux = FMC_DATA_ADDRESS_MUX_DISABLE;
  12.   hsram1.Init.MemoryType = FMC_MEMORY_TYPE_SRAM;
  13.   hsram1.Init.MemoryDataWidth = FMC_NORSRAM_MEM_BUS_WIDTH_16;
  14.   hsram1.Init.BurstAccessMode = FMC_BURST_ACCESS_MODE_DISABLE;
  15.   hsram1.Init.WaitSignalPolarity = FMC_WAIT_SIGNAL_POLARITY_LOW;
  16.   hsram1.Init.WaitSignalActive = FMC_WAIT_TIMING_BEFORE_WS;
  17.   hsram1.Init.WriteOperation = FMC_WRITE_OPERATION_ENABLE;
  18.   hsram1.Init.WaitSignal = FMC_WAIT_SIGNAL_DISABLE;
  19.   hsram1.Init.ExtendedMode = FMC_EXTENDED_MODE_ENABLE;
  20.   hsram1.Init.AsynchronousWait = FMC_ASYNCHRONOUS_WAIT_DISABLE;
  21.   hsram1.Init.WriteBurst = FMC_WRITE_BURST_DISABLE;
  22.   hsram1.Init.ContinuousClock = FMC_CONTINUOUS_CLOCK_SYNC_ONLY;
  23.   hsram1.Init.WriteFifo = FMC_WRITE_FIFO_DISABLE;
  24.   hsram1.Init.PageSize = FMC_PAGE_SIZE_NONE;
  25.   /* Timing */
  26.   Timing.AddressSetupTime = 15;
  27.   Timing.AddressHoldTime = 15;
  28.   Timing.DataSetupTime = 80;
  29.   Timing.BusTurnAroundDuration = 1;
  30.   Timing.CLKDivision = 16;
  31.   Timing.DataLatency = 17;
  32.   Timing.AccessMode = FMC_ACCESS_MODE_A;
  33.   /* ExtTiming */
  34.   ExtTiming.AddressSetupTime = 15;
  35.   ExtTiming.AddressHoldTime = 15;
  36.   ExtTiming.DataSetupTime = 15;
  37.   ExtTiming.BusTurnAroundDuration = 1;
  38.   ExtTiming.CLKDivision = 16;
  39.   ExtTiming.DataLatency = 17;
  40.   ExtTiming.AccessMode = FMC_ACCESS_MODE_A;

  41.   if (HAL_SRAM_Init(&hsram1, &Timing, &ExtTiming) != HAL_OK)
  42.   {
  43.     Error_Handler( );
  44.   }

  45. }

  46. static uint32_t FMC_Initialized = 0;

  47. static void HAL_FMC_MspInit(void){
  48.   /* USER CODE BEGIN FMC_MspInit 0 */

  49.   /* USER CODE END FMC_MspInit 0 */
  50.   GPIO_InitTypeDef GPIO_InitStruct = {0};
  51.   if (FMC_Initialized) {
  52.     return;
  53.   }
  54.   FMC_Initialized = 1;

  55.   /* Peripheral clock enable */
  56.   __HAL_RCC_FMC_CLK_ENABLE();

  57.   /** FMC GPIO Configuration
  58.   PD5   ------> FMC_NWE
  59.   PD4   ------> FMC_NOE
  60.   PE3   ------> FMC_A19
  61.   PD0   ------> FMC_D2
  62.   PD1   ------> FMC_D3
  63.   PC7   ------> FMC_NE1
  64.   PE10   ------> FMC_D7
  65.   PE9   ------> FMC_D6
  66.   PE11   ------> FMC_D8
  67.   PD15   ------> FMC_D1
  68.   PD14   ------> FMC_D0
  69.   PE12   ------> FMC_D9
  70.   PE15   ------> FMC_D12
  71.   PE8   ------> FMC_D5
  72.   PE13   ------> FMC_D10
  73.   PD10   ------> FMC_D15
  74.   PD9   ------> FMC_D14
  75.   PE7   ------> FMC_D4
  76.   PE14   ------> FMC_D11
  77.   PD8   ------> FMC_D13
  78.   */
  79.   /* GPIO_InitStruct */
  80.   GPIO_InitStruct.Pin = GPIO_PIN_5|GPIO_PIN_4|GPIO_PIN_0|GPIO_PIN_1
  81.                           |GPIO_PIN_15|GPIO_PIN_14|GPIO_PIN_10|GPIO_PIN_9
  82.                           |GPIO_PIN_8;
  83.   GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
  84.   GPIO_InitStruct.Pull = GPIO_NOPULL;
  85.   GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
  86.   GPIO_InitStruct.Alternate = GPIO_AF12_FMC;

  87.   HAL_GPIO_Init(GPIOD, &GPIO_InitStruct);

  88.   /* GPIO_InitStruct */
  89.   GPIO_InitStruct.Pin = GPIO_PIN_3|GPIO_PIN_10|GPIO_PIN_9|GPIO_PIN_11
  90.                           |GPIO_PIN_12|GPIO_PIN_15|GPIO_PIN_8|GPIO_PIN_13
  91.                           |GPIO_PIN_7|GPIO_PIN_14;
  92.   GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
  93.   GPIO_InitStruct.Pull = GPIO_NOPULL;
  94.   GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
  95.   GPIO_InitStruct.Alternate = GPIO_AF12_FMC;

  96.   HAL_GPIO_Init(GPIOE, &GPIO_InitStruct);

  97.   /* GPIO_InitStruct */
  98.   GPIO_InitStruct.Pin = GPIO_PIN_7;
  99.   GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
  100.   GPIO_InitStruct.Pull = GPIO_NOPULL;
  101.   GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
  102.   GPIO_InitStruct.Alternate = GPIO_AF9_FMC;

  103.   HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);

  104.   /* USER CODE BEGIN FMC_MspInit 1 */

  105.   /* USER CODE END FMC_MspInit 1 */
  106. }
复制代码


2. 设置两个断点运行
11111.png

3. 捕获的时序

33333.png

可以看出, 一共2次写操作, 出来4次时序, cache没有使能, 求助大家哪里配置错了


回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106997
QQ
发表于 2020-9-3 10:15:22 | 显示全部楼层
配置FMC的这部分地址空间的MPU为Strongly order即可
参考V7的FMC高速扩展32路IO

http://www.armbbs.cn/forum.php?mod=viewthread&tid=86446&extra=page%3D1

QQ截图20200903101836.png


回复

使用道具 举报

3

主题

66

回帖

75

积分

初级会员

积分
75
 楼主| 发表于 2020-9-3 10:32:24 | 显示全部楼层
eric2013 发表于 2020-9-3 10:15
配置FMC的这部分地址空间的MPU为Strongly order即可
参考V7的FMC高速扩展32路IO

非常感谢, 解决了, 大佬有二维码不, 想发包烟给你, 困惑了3天3夜了
回复

使用道具 举报

5

主题

519

回帖

534

积分

金牌会员

积分
534
发表于 2020-9-3 10:54:47 | 显示全部楼层
kingdjh 发表于 2020-9-3 10:32
非常感谢, 解决了, 大佬有二维码不, 想发包烟给你, 困惑了3天3夜了

可以微信打赏。硬汉发周报。呵呵。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106997
QQ
发表于 2020-9-3 10:56:06 | 显示全部楼层
kingdjh 发表于 2020-9-3 10:32
非常感谢, 解决了, 大佬有二维码不, 想发包烟给你, 困惑了3天3夜了

不用,能帮上忙就好。
回复

使用道具 举报

3

主题

66

回帖

75

积分

初级会员

积分
75
 楼主| 发表于 2020-9-3 12:29:36 | 显示全部楼层
hqgboy 发表于 2020-9-3 10:54
可以微信打赏。硬汉发周报。呵呵。

谢谢指点明路
回复

使用道具 举报

6

主题

4

回帖

22

积分

新手上路

积分
22
发表于 2020-9-8 17:09:07 | 显示全部楼层
eric2013 发表于 2020-9-3 10:15
配置FMC的这部分地址空间的MPU为Strongly order即可
参考V7的FMC高速扩展32路IO

请问这个解决方法是纯靠测试试出来的,还是在手册哪边有提到,或者详细要求的?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106997
QQ
发表于 2020-9-9 01:49:48 | 显示全部楼层
19467356 发表于 2020-9-8 17:09
请问这个解决方法是纯靠测试试出来的,还是在手册哪边有提到,或者详细要求的?

当前搞这个的时候可坑惨了,花了很长时间才锁定这个问题。

自己一点点测试出来的。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-14 05:42 , Processed in 0.242125 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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