STM32
直播中

qjqb

9年用户 1365经验值
擅长:5762
私信 关注
[问答]

H745调试外部norflash遇到的疑问求解

问题如下:
       1.使用STM32cube,配置生成的工程,在读写norflash时,在固定位置出现写入数据错误(大部分正确,小部分错误)。然而在直接使用STM32H743I-EVALExamplesFMCFMC_NOR的例子下到H745ii上读写正常。
       2.使用STM32H743I-EVALExamplesFMCFMC_NOR的例子关闭掉mpu的设置,同样会出现在固定位置出错(stm32cube配置生成的工程位置相同)。
       3.使用stm32cube,配置生成的工程,添加了mpu设置,代码运行后出现调试断开。

4:fmc配置:如下
/** Perform the NOR1 memory initialization sequence  */
  hnor1.Instance = FMC_NORSRAM_DEVICE;
  hnor1.Extended = FMC_NORSRAM_EXTENDED_DEVICE;
  /* hnor1.Init */
  hnor1.Init.NSBank = FMC_NORSRAM_BANK1;
  hnor1.Init.DataAddressMux = FMC_DATA_ADDRESS_MUX_DISABLE;
  hnor1.Init.MemoryType = FMC_MEMORY_TYPE_NOR;
  hnor1.Init.MemoryDataWidth = FMC_NORSRAM_MEM_BUS_WIDTH_16;
  hnor1.Init.BurstAccessMode = FMC_BURST_ACCESS_MODE_ENABLE;
  hnor1.Init.WaitSignalPolarity = FMC_WAIT_SIGNAL_POLARITY_LOW;
  hnor1.Init.WaitSignalActive = FMC_WAIT_TIMING_BEFORE_WS;
  hnor1.Init.WriteOperation = FMC_WRITE_OPERATION_ENABLE;
  hnor1.Init.WaitSignal = FMC_WAIT_SIGNAL_DISABLE;
  hnor1.Init.ExtendedMode = FMC_EXTENDED_MODE_DISABLE;
  hnor1.Init.AsynchronousWait = FMC_ASYNCHRONOUS_WAIT_ENABLE;
  hnor1.Init.WriteBurst = FMC_WRITE_BURST_DISABLE;
  hnor1.Init.ContinuousClock = FMC_CONTINUOUS_CLOCK_SYNC_ASYNC;
        
//  hnor1.Init.WriteFifo = FMC_WRITE_FIFO_ENABLE;
//  hnor1.Init.PageSize = FMC_PAGE_SIZE_NONE;
  /* Timing */
  Timing.AddressSetupTime = 9;
  Timing.AddressHoldTime = 1;
  Timing.DataSetupTime = 5;
  Timing.BusTurnAroundDuration = 4;
  Timing.CLKDivision = 4;
  Timing.DataLatency = 2;
  Timing.AccessMode = FMC_ACCESS_MODE_B;



回帖(1)

敷衍作笑谈

2024-4-11 16:50:02
1. 在使用STM32Cube配置生成的工程中读写norflash时出现写入数据错误的问题,可能是由于配置不正确或者代码逻辑有误导致的。建议按照以下步骤进行排查:
   - 检查Nor Flash的时序配置是否正确,包括时钟频率、读写延迟、读写宽度等参数。
   - 检查读取和写入数据的地址是否正确,确保操作的是正确的内存区域。
   - 检查数据的写入和读取逻辑是否正确,确保没有遗漏或者错误的操作。

2. 当关闭MPU设置后,同样出现在固定位置出错的情况,可能是由于MPU设置对内存访问权限的限制导致的。在关闭MPU设置之前,请确保你了解MPU设置的作用和影响,并且对于Nor Flash的访问没有特殊的限制。如果有必要,可以调整MPU设置来允许Nor Flash的正常访问。

3. 当使用STM32Cube配置生成的工程并添加了MPU设置后,代码运行后出现调试断开的情况,可能是由于MPU设置限制了调试器对内存的访问导致的。在添加MPU设置之前,请确保你了解MPU设置的作用和影响,并且对于调试器的访问没有特殊的限制。如果有必要,可以调整MPU设置来允许调试器的正常访问。

4. 从你提供的FMC配置来看,你应该是使用了FMC接口来连接Nor Flash。请确认你在代码中正确地进行了FMC接口的初始化,并在读取和写入Nor Flash数据之前对FMC进行正确的配置。同时,你也需要确保Nor Flash的相关引脚连接正确,并且按照正确的时序进行操作。

如果以上的解决方案不能解决你的问题,请提供更多详细的信息,例如代码片段、具体的错误现象等,以便更好地排查问题。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分