cubemx spi 中断_STM32CubeMX系列教程11:串行外设接口SPI(二)

本文介绍了如何使用STM32CubeMX配置SPI全双工主模式,并通过中断实现与W25QXX闪存的通信。详细讲解了SPI配置、W25QXX驱动函数,包括读ID、读写数据和扇区擦除操作,并提供了测试程序。
摘要由CSDN通过智能技术生成

1.新建工程

本章程序在串口printf工程的基础上修改,复制串口printf的工程,修改文件夹名。击STM32F746I.ioc打开STM32cubeMX的工程文件重新配置。SPI1选择全双工主模式,不开启NSS。配置PA7为SPI_MOSI,PA6为SPI_MISO,PA5为SPI_SCK,PA4配置为GPIO输出模式,作为片选信号。

SPI配置中设置数据长度为8bit,MSB先输出分频为64分频,则波特率为1.6875 MBits/s。其他为默认设置。

Motorla格式,CPOL设置为Low,CPHA设置为第一个边沿。不开启CRC检验,NSS为软件控制。

在GPIO管脚配置中设置PA4的用户标签为SPI1_CS。

生成报告以及代码,编译程序。在spi.c文件中可以看到ADC初始化函数。在stm32f7xx_hal_spi.h头文件中可以看到spi的操作函数。分别对应轮询,中断和DMA三种控制方式。

下面为W25QXX的驱动文件。下载加压并添加进工程中。

在工程目录下新建文件夹BSP,把刚才下载的文件复制进去。

在工程框中,选择工程名按鼠标右键添加组,修改组名称为Drivers/BSP,选择刚才BSP文件夹的路径,添加W25QXX.c文件。

点击图标打开工程选项设置,选择C/C++栏,在Include Paths中添加头文件路径..\BSP。

重新编译工程,看是否有错误。

2.W25Qxx驱动函数介绍

在W25QXX.c文件中有很多操作函数,这个只接收几个简单的函数。

/**

* @brief Read Manufacture/Device ID.

* @param return value address

* @retval None

*/

void BSP_W25Qx_Read_ID(uint8_t *ID)

{

uint8_t cmd[4] = {READ_ID_CMD,0x00,0x00,0x00};

W25Qx_Enable();

/* Send the read ID command */

HAL_SPI_Transmit(&hspi1, cmd, 4, W25Qx_TIMEOUT_VALUE);

/* Reception of the data */

HAL_SPI_Receive(&hspi1,ID, 2, W25Qx_TIMEOUT_VALUE);

W25Qx_Disable();

}

以上为读W25Qxx读ID函数,函数开始先定义一个数组cmd保存读ID命令,其中READ_ID_CMD为读ID命令90H,在W25QXX.h头文件中通过宏定义。数组后三个值为地址000000H。

W25Qx_Enable(),W25Qx_Disable()分别为使能和失能SPI设备,即拉低和拉高/CS电平。在W25QXX.h头文件中可以找到如下宏定义。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值