硬汉嵌入式论坛

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

[技术分享] H7-TOOL 的bsp_qspi_w25q256.c中的内存映射配置有问题

[复制链接]

2

主题

34

回帖

40

积分

新手上路

积分
40
发表于 2020-11-29 23:14:13 | 显示全部楼层 |阅读模式
之前按照教程尝试QSPI flash中运行程序,程序直接进入HardFault_Handler,调试发现0x9000000都是AA。于是一步一步与V7的例子做对比,发现了这个uint8_t QSPI_MemoryMapped(void)配置有点不一样
H7-TOOL:





V7:
1606662751(1).jpg

最后用V7里的配置就可以成功运行了
1606662435(1).jpg
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107272
QQ
发表于 2020-11-29 23:46:52 | 显示全部楼层
V7那个W25Q256驱动可以直接用于H7-TOOL,仅需修改bsp_qspi_w25q256.c开头,做成如下条件编译即可自如切换。

修改后,V7所有如下的例子都可以用于H7-TOOL:

V7-029_QSPI读写例程,四线DMA方式,读每秒48MB(V1.2).
V7-032_QSP Flash的FatFS文件系统+QSPI Flash虚拟U盘(带文件系统,读每秒24.6MB)
V7-059_QSPI读写例程,查询方式
V7-060_QSPI Flash的MDK下载算法制作
V7-061_QSPI Flash的STM32CubeProg下载算法制作
V7-062_QSPI Flash运行程序(Bootloader)
V7-063_QSPI Flash运行程序(用户APP)
V7-064_内部Flash和QSPI Flash都运行程序的混合方式,无需单独制作BOOT和APP(强烈推荐)

当前H7-TOOL是用的QSPI DMA方式。

  1. /*
  2.     STM32-V7开发板接线

  3.     PG6/QUADSPI_BK1_NCS     AF10
  4.     PF10/QUADSPI_CLK        AF9
  5.     PF8/QUADSPI_BK1_IO0     AF10
  6.     PF9/QUADSPI_BK1_IO1     AF10
  7.     PF7/QUADSPI_BK1_IO2     AF9
  8.     PF6/QUADSPI_BK1_IO3     AF9

  9.     W25Q256JV有512块,每块有16个扇区,每个扇区Sector有16页,每页有256字节,共计32MB
  10.         
  11.     H7-TOOL开发板接线

  12.     PG6/QUADSPI_BK1_NCS     AF10
  13.     PB2/QUADSPI_CLK         AF9
  14.     PD11/QUADSPI_BK1_IO0    AF10
  15.     PD12/QUADSPI_BK1_IO1    AF10
  16.     PF7/QUADSPI_BK1_IO2     AF9
  17.     PD13/QUADSPI_BK1_IO3    AF9
  18. */

  19. /* QSPI引脚和时钟相关配置宏定义 */
  20. #if 0
  21. #define QSPI_CLK_ENABLE()               __HAL_RCC_QSPI_CLK_ENABLE()
  22. #define QSPI_CLK_DISABLE()              __HAL_RCC_QSPI_CLK_DISABLE()
  23. #define QSPI_CS_GPIO_CLK_ENABLE()       __HAL_RCC_GPIOG_CLK_ENABLE()
  24. #define QSPI_CLK_GPIO_CLK_ENABLE()      __HAL_RCC_GPIOB_CLK_ENABLE()
  25. #define QSPI_BK1_D0_GPIO_CLK_ENABLE()   __HAL_RCC_GPIOD_CLK_ENABLE()
  26. #define QSPI_BK1_D1_GPIO_CLK_ENABLE()   __HAL_RCC_GPIOD_CLK_ENABLE()
  27. #define QSPI_BK1_D2_GPIO_CLK_ENABLE()   __HAL_RCC_GPIOF_CLK_ENABLE()
  28. #define QSPI_BK1_D3_GPIO_CLK_ENABLE()   __HAL_RCC_GPIOD_CLK_ENABLE()

  29. #define QSPI_MDMA_CLK_ENABLE()          __HAL_RCC_MDMA_CLK_ENABLE()
  30. #define QSPI_FORCE_RESET()              __HAL_RCC_QSPI_FORCE_RESET()
  31. #define QSPI_RELEASE_RESET()            __HAL_RCC_QSPI_RELEASE_RESET()

  32. #define QSPI_CS_PIN                     GPIO_PIN_6
  33. #define QSPI_CS_GPIO_PORT               GPIOG
  34. #define QSPI_CS_GPIO_AF                 GPIO_AF10_QUADSPI

  35. #define QSPI_CLK_PIN                    GPIO_PIN_2
  36. #define QSPI_CLK_GPIO_PORT              GPIOB
  37. #define QSPI_CLK_GPIO_AF                GPIO_AF9_QUADSPI

  38. #define QSPI_BK1_D0_PIN                 GPIO_PIN_11
  39. #define QSPI_BK1_D0_GPIO_PORT           GPIOD
  40. #define QSPI_BK1_D0_GPIO_AF             GPIO_AF9_QUADSPI

  41. #define QSPI_BK1_D1_PIN                 GPIO_PIN_12
  42. #define QSPI_BK1_D1_GPIO_PORT           GPIOD
  43. #define QSPI_BK1_D1_GPIO_AF             GPIO_AF9_QUADSPI

  44. #define QSPI_BK1_D2_PIN                 GPIO_PIN_7
  45. #define QSPI_BK1_D2_GPIO_PORT           GPIOF
  46. #define QSPI_BK1_D2_GPIO_AF             GPIO_AF9_QUADSPI

  47. #define QSPI_BK1_D3_PIN                 GPIO_PIN_13
  48. #define QSPI_BK1_D3_GPIO_PORT           GPIOD
  49. #define QSPI_BK1_D3_GPIO_AF             GPIO_AF9_QUADSPI
  50. #else
  51. #define QSPI_CLK_ENABLE()               __HAL_RCC_QSPI_CLK_ENABLE()
  52. #define QSPI_CLK_DISABLE()              __HAL_RCC_QSPI_CLK_DISABLE()
  53. #define QSPI_CS_GPIO_CLK_ENABLE()       __HAL_RCC_GPIOG_CLK_ENABLE()
  54. #define QSPI_CLK_GPIO_CLK_ENABLE()      __HAL_RCC_GPIOF_CLK_ENABLE()
  55. #define QSPI_BK1_D0_GPIO_CLK_ENABLE()   __HAL_RCC_GPIOF_CLK_ENABLE()
  56. #define QSPI_BK1_D1_GPIO_CLK_ENABLE()   __HAL_RCC_GPIOF_CLK_ENABLE()
  57. #define QSPI_BK1_D2_GPIO_CLK_ENABLE()   __HAL_RCC_GPIOF_CLK_ENABLE()
  58. #define QSPI_BK1_D3_GPIO_CLK_ENABLE()   __HAL_RCC_GPIOF_CLK_ENABLE()

  59. #define QSPI_MDMA_CLK_ENABLE()          __HAL_RCC_MDMA_CLK_ENABLE()
  60. #define QSPI_FORCE_RESET()              __HAL_RCC_QSPI_FORCE_RESET()
  61. #define QSPI_RELEASE_RESET()            __HAL_RCC_QSPI_RELEASE_RESET()

  62. #define QSPI_CS_PIN                     GPIO_PIN_6
  63. #define QSPI_CS_GPIO_PORT               GPIOG
  64. #define QSPI_CS_GPIO_AF                 GPIO_AF10_QUADSPI

  65. #define QSPI_CLK_PIN                    GPIO_PIN_10
  66. #define QSPI_CLK_GPIO_PORT              GPIOF
  67. #define QSPI_CLK_GPIO_AF                GPIO_AF9_QUADSPI

  68. #define QSPI_BK1_D0_PIN                 GPIO_PIN_8
  69. #define QSPI_BK1_D0_GPIO_PORT           GPIOF
  70. #define QSPI_BK1_D0_GPIO_AF             GPIO_AF10_QUADSPI

  71. #define QSPI_BK1_D1_PIN                 GPIO_PIN_9
  72. #define QSPI_BK1_D1_GPIO_PORT           GPIOF
  73. #define QSPI_BK1_D1_GPIO_AF             GPIO_AF10_QUADSPI

  74. #define QSPI_BK1_D2_PIN                 GPIO_PIN_7
  75. #define QSPI_BK1_D2_GPIO_PORT           GPIOF
  76. #define QSPI_BK1_D2_GPIO_AF             GPIO_AF9_QUADSPI

  77. #define QSPI_BK1_D3_PIN                 GPIO_PIN_6
  78. #define QSPI_BK1_D3_GPIO_PORT           GPIOF
  79. #define QSPI_BK1_D3_GPIO_AF             GPIO_AF9_QUADSPI
  80. #endif
复制代码


回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-24 02:18 , Processed in 0.223625 second(s), 29 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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