summaryrefslogtreecommitdiff
path: root/bsp
diff options
context:
space:
mode:
authorbrucechousz <[email protected]>2018-07-08 17:48:11 +0800
committerbrucechousz <[email protected]>2018-07-08 17:48:11 +0800
commitc55bb827c8d9f314bf304dbd124e92f22fe50b51 (patch)
tree103b5c736cd8ed1acd4c544323218cd7febcc2d9 /bsp
parent360d74e451efc35f7e4a72fc83f66c8ae4191da3 (diff)
[BSP][STM32F4xx-HAL]更新norflash驱动,增加对sfud的支持
Diffstat (limited to 'bsp')
-rw-r--r--bsp/stm32f4xx-HAL/Kconfig10
-rw-r--r--bsp/stm32f4xx-HAL/drivers/SConscript2
-rw-r--r--bsp/stm32f4xx-HAL/drivers/drv_spiflash.c31
3 files changed, 31 insertions, 12 deletions
diff --git a/bsp/stm32f4xx-HAL/Kconfig b/bsp/stm32f4xx-HAL/Kconfig
index f953d8f8ce..24a3c1d784 100644
--- a/bsp/stm32f4xx-HAL/Kconfig
+++ b/bsp/stm32f4xx-HAL/Kconfig
@@ -325,12 +325,12 @@ config RT_USING_SPI3
endif
-if RT_USING_W25QXX
-config RT_W25QXX_CS_PIN
- int "W25QXX CS Pin index"
+if RT_USING_W25QXX || RT_USING_SFUD
+config RT_FLASH_CS_PIN
+ int "SPI NOR Flash CS pin index"
default 0
-config RT_W25QXX_SPI_BUS_NAME
- string "W25QXX Spi bus name"
+config RT_FLASH_SPI_BUS_NAME
+ string "SPI NOR Flash Spi bus name"
default "spi1"
endif
diff --git a/bsp/stm32f4xx-HAL/drivers/SConscript b/bsp/stm32f4xx-HAL/drivers/SConscript
index d99bda18b1..9fc1d73715 100644
--- a/bsp/stm32f4xx-HAL/drivers/SConscript
+++ b/bsp/stm32f4xx-HAL/drivers/SConscript
@@ -19,7 +19,7 @@ if GetDepend(['RT_USING_SERIAL']):
if GetDepend(['RT_USING_SPI']):
src += ['drv_spi.c']
-if GetDepend(['RT_USING_W25QXX']):
+if GetDepend(['RT_USING_W25QXX']) or GetDepend(['RT_USING_SFUD']):
src += ['drv_spiflash.c']
if GetDepend(['RT_USING_WDT']):
diff --git a/bsp/stm32f4xx-HAL/drivers/drv_spiflash.c b/bsp/stm32f4xx-HAL/drivers/drv_spiflash.c
index 2d16ddab5a..cf30b949a6 100644
--- a/bsp/stm32f4xx-HAL/drivers/drv_spiflash.c
+++ b/bsp/stm32f4xx-HAL/drivers/drv_spiflash.c
@@ -12,13 +12,32 @@
* 2017-11-08 ZYH the first version
*/
#include <rtthread.h>
+#if defined(RT_USING_W25QXX) || defined(RT_USING_SFUD)
+ #include <drv_spi.h>
#ifdef RT_USING_W25QXX
-#include <drv_spi.h>
-#include "spi_flash_w25qxx.h"
-int rt_w25qxx_init(void)
+ #include "spi_flash_w25qxx.h"
+#elif defined(RT_USING_SFUD)
+ #include "string.h"
+ #include "spi_flash.h"
+ #include "spi_flash_sfud.h"
+ sfud_flash sfud_norflash0;
+ rt_spi_flash_device_t spi_device;
+#endif
+
+int rt_nor_flash_init(void)
{
- stm32_spi_bus_attach_device(RT_W25QXX_CS_PIN, RT_W25QXX_SPI_BUS_NAME, "w25qxx");
- return w25qxx_init("flash0", "w25qxx");
+ stm32_spi_bus_attach_device(RT_FLASH_CS_PIN, RT_FLASH_SPI_BUS_NAME, "norspi");
+#ifdef RT_USING_W25QXX
+ return w25qxx_init("flash0", "norspi");
+#elif defined(RT_USING_SFUD)
+ spi_device = rt_sfud_flash_probe("flash0", "norspi");
+ if (spi_device == RT_NULL)
+ {
+ return -RT_ERROR;
+ }
+ memcpy(&sfud_norflash0, spi_device->user_data, sizeof(sfud_flash));
+ return 0;
+#endif
}
-INIT_DEVICE_EXPORT(rt_w25qxx_init);
+INIT_DEVICE_EXPORT(rt_nor_flash_init);
#endif