文章目录
一、前言
学习记录,已建好工程。FAL、SFUD、硬件SPI、W25Q128、EasyFlash。
二、步骤
一)配置Cube MX
双击 “Cube Mx Settings”(或“cubemx”->“cubemx.ioc”)打开Cube Mx,配置硬件SPI,选择hal库,点击生成。
二)配置RT-thread Settings
双击 “RT-Thread Settings”打开配置页面,添加软件包和组件。
1、添加组件FAL
使能组件“FAL”,并使能“使用SFUD驱动”,更改“设置使用FAL的设备名称”为“W25Q128”。
2、添加组件SPI
在组件“设备驱动程序”里使能“SPI驱动”,并使用“SFUD”,设置总线最大速度(自行更改)。
设置好后,图形配置界面会点亮这两个驱动。
3、EasyFlash
添加软件包“EasyFlash”,并配置。调试日志在测试完成后可关闭。
三)配置工程
1、排除构建
打开工程中“cubemx”文件夹,除“cubemx.ioc”外,其余全部排除构建。
2、复制生成的SPI相关函数
在软件左上角的“导航器”中选择项目,并将“cubemx”文件夹中“spi.c”文件的“MX_SPI1_Init”、“HAL_SPI_MspInit”、“HAL_SPI_MspDeInit”函数复制到“drivers”文件夹中“board.c”文件末尾。
3、配置board.h文件
将SPI外设在“board.h"文件中打开宏定义。
4、配置stm32f1xx_hal_conf.h
在生成程序时,提示将“stm32f1xx_hal_conf.h”备份,并在“drivers”文件夹新建了“stm32f1xx_hal_conf_bak.h”文件,但是众多文件中调用的还是改名前的文件,所以会报错,这里选择将新建文件改为原来的名字(不知是否应这样处理)。
打开此文件,打开使能SPI模块宏。
5、添加fal_cfg.h
将“rt_thrread”->“components”->“fal”->“samples”->“porting”->“fal_cfg.h”文件移动到“drivers”->“include”文件夹中。
并在此文件中对设备名称、类型、空间分配函数进行更改。
#define NOR_FLASH_DEV_NAME "W25Q128" //设备名称,必须与fal设置一致
/* ===================== Flash device Configuration ========================= */
extern const struct fal_flash_dev stm32f2_onchip_flash;
extern struct fal_flash_dev nor_flash0;
/* flash device table */
//#define FAL_FLASH_DEV_TABLE \
//{ \
// &stm32f2_onchip_flash, \
// &nor_flash0, \
//}
#define FAL_FLASH_DEV_TABLE \
{
\
&nor_flash0, \
}
/* ====================== Partition Configuration ========================== */
#ifdef FAL_PART_HAS_TABLE_CFG
/* partition table */
//#define FAL_PART_TABLE \
//{ \
// {FAL_PART_MAGIC_WORD, "bl", "stm32_onchip", 0, 64*1024, 0}, \
// {FAL_PART_MAGIC_WORD, "app", "stm32_onchip", 64*1024, 704*1024, 0}, \
// {FAL_PART_MAGIC_WORD, "easyflash", NOR_FLASH_DEV_NAME, 0, 1024*1024, 0}, \
// {FAL_PART_MAGIC_WORD, "download", NOR_FLASH_DEV_NAME, 1024*1024, 1024*1024, 0}, \
//}
#define FAL_PART_TABLE \
{
\
{
FAL_PART_MAGIC_WORD, "easyflash", NOR_FLASH_DEV_NAME, 0, 1024*1024, 0}, \
{
FAL_PART_MAGIC_WORD, "download", NOR_FLASH_DEV_NAME, 1024*1024, 1024*1024, 0}, \
{
FAL_PART_MAGIC_WORD, "datafile", NOR_FLASH_DEV_NAME, 2*1024*1024, 8*1024*1024, 0}, \
}
#endif /* FAL_PART_HAS_TABLE_CFG */
6、添加fal_flash_sfud_port.c
将“rt_thrread”->“components”->“fal”->“samples”->“port