rt thread 外挂SPI flash步骤

 第5版硬件出炉,外挂了W25Q64在stm32 的SPI1上,引脚如下。

CS->PA15

SCK->PB3

MISO->PB4

MOSI->PB5

注意以上引脚也有SPI3,应该区别不大。

1.生成SPI引脚初始化。这里有个坑,不要初始化CS脚。

按照官方说明,在board.c的最后面添加SPI这些IO的初始化过程,有说从CubeMX里拷的,其实自己玩过HAL库的也不用那么麻烦,只是GPIO初始化而已,自己写一个,随便找个地方初始化也可以的。

注意,函数的hspi在里面我在生成的时候初始化CS了,后来又注掉了。我是把这个函数放在board.c的最前面了,可以用,也有说可以放在drv_spi.c里面,应该都一样。


void HAL_SPI_MspInit(SPI_HandleTypeDef* hspi)
{
  GPIO_InitTypeDef GPIO_InitStruct = {0};
  if(hspi->Instance==SPI1)
  {
  /* USER CODE BEGIN SPI1_MspInit 0 */

  /* USER CODE END SPI1_MspInit 0 */
    /* Peripheral clock enable */
    __HAL_RCC_SPI1_CLK_ENABLE();

    __HAL_RCC_GPIOA_CLK_ENABLE();
    __HAL_RCC_GPIOB_CLK_ENABLE();
    /**SPI1 GPIO Configuration
    PA15     ------> SPI1_NSS
    PB3     ------> SPI1_SCK
    PB4     ------> SPI1_MISO
    PB5     ------> SPI1_MOSI
    */
    /*
    GPIO_InitStruct.Pin = GPIO_PIN_15;
    GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
    GPIO_InitStruct.Pull = GPIO_NOPULL;
    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
    GPIO_InitStruct.Alternate = GPIO_AF5_SPI1;
    HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
*/
    GPIO_InitStruct.Pin = GPIO_PIN_3|GPIO_PIN_4|GPIO_PIN_5;
    GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
    GPIO_InitStruct.Pull = GPIO_NOPULL;
    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
    GPIO_InitStruct.Alternate = GPIO_AF5_SPI1;
    HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);

  /* USER CODE BEGIN SPI1_MspInit 1 */

  /* USER CODE END SPI1_MspInit 1 */
  }

}

2.加宏定义。

设置里面打开SPI驱动,SFUD驱动。

board.h打开#define BSP_USING_SPI1。这里打开的上面也有写打开SPI的步骤。

stm32f4xx_hal_config.h 打开#define HAL_SPI_MODULE_ENABLED

3.main函数初始化

前面

#include "drv_spi.h"

#include "spi_flash_sfud.h"

下面函数里面:

 rt_hw_spi_device_attach("spi1","spi10",GPIOA,GPIO_PIN_15);   
 if(rt_sfud_flash_probe("w25q64","spi10"))
    {
       rt_kprintf("rt sfud flash success");
    }
    else {
       rt_kprintf("rt sfud flash error");
    }

SPI1是你把这flash挂到哪个SPI总线上了。

spi10是你准备叫这个挂载的设备的名字,这里的含义是spi1的第0个设备。片选CS脚是GPIOA,Pin 15。

下一句是sfud设备的名字是w25q64,在spi10设备上,挂好了就打印 success,其实他挂载好了会在后台打很多很多东西。

其他坑:

undefined reference to rt_hw_spi_device_attach

看我上一篇笔记:

https://blog.csdn.net/qq_35593582/article/details/119064608?spm=1001.2014.3001.5501

我在这个过程中总共遇到2次这个坑,解决方法相同。

下一步:

挂到EasyFlash上用,等我慢慢看看如何配置。

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值