STM32和外部闪存(W25Q)连接问题

时间:2019-01-17 09:43:12

标签: stm32 spi stm32f0 swd

我想用STM32 micro(stm32F030F4)从外部闪存(Winbond W25Q16BV)读/写。但是正在运行的进程停止在“ HAL_SPI_Init()”函数上。

我检查了调试过程,并发现了HAL_SPI_STATE_BUSY。 但我不知道为什么?

我正在使用STM32CubeMX生成主项目,并使用Keil IDE进行编写和调试。

SPI_HandleTypeDef hspi1;


void SystemClock_Config(void);
static void MX_GPIO_Init(void);
static void MX_SPI1_Init(void);


uint8_t spiData[2];

int main(void)
{
  HAL_Init();
  SystemClock_Config();
  MX_GPIO_Init();
  MX_SPI1_Init();
  MX_FATFS_Init();


  SPI_HandleTypeDef my_hspi;
  HAL_SPI_Init(&my_hspi);

  HAL_FLASH_Unlock();


  HAL_GPIO_WritePin(GPIOA,GPIO_PIN_1,GPIO_PIN_SET); // CS to HIGH
  HAL_Delay(10);


  //Read data
  HAL_GPIO_WritePin(GPIOA,GPIO_PIN_1,GPIO_PIN_RESET); // CS to low

  spiData[0]=0x05;

  //transmit register address
  HAL_SPI_Transmit(&my_hspi,spiData,1,10);

 //read
  HAL_SPI_Receive(&my_hspi,&spiData[1],1,10);

  ...

这是我们的示意图: enter image description here

不幸的是,我找不到如何使用外部SPI库的良好示例/说明。对此问题的任何帮助都将受到高度赞赏。

2 个答案:

答案 0 :(得分:1)

我无法对此软件发表评论,但是根据您的评论,您希望启用对Flash的读写。

写保护(/ WP)引脚可用于防止写入状态寄存器。

/ WP引脚为低电平有效(GND)。 (禁止写入)

/ WP引脚为无效高电平(VCC)。 (写启用)

其设计仅允许读取数据。

如果要读取和写入数据,必须将/ WP连接到Vcc。

答案 1 :(得分:1)

您尚未为my_hspi结构设置任何参数,因此您的HAL驱动程序不知道他必须做什么。

查看该结构的定义。关于不同的struct元素的用途,有很多评论。对于初始化,my_hspi.init部分将是最有趣的。 另外,您还必须my_hspi.Instance到所需的SPI通道。

您可以使用免费的STM32 Cube Mx软件生成示例配置。