如何用 SPI HAL库读写W25Q128?

TopSemic嵌入式
关注

Step 3, 在 DriversBSPComponentsw25qxx-master上点右键,选择Add Existing Files to Group "DriversBSPComponentsw25qxx-master"...,找到 Drivers/BSP/components/w25qxx-master/w25qxx.c 点击Add,然后可以看到w25qxx.c已经添加进项目中:

Step 4, 在 Options for Target 里添加路径,这里使用的是工程所在路径的相对路径,也可以使用绝对路径,但如果工程拷贝到别的地方的时候,此包含路径就需要跟随更改。Add include path  ../../../../../../Drivers/BSP/components/w25qxx-master

Step 5, 驱动头文件 w25qxx.h 中原来包含的的 spi.h, 因为我们使用的 Cube 库,头文件需要做如下替换://#include "spi.h"#include "stm32f0xx_hal.h"Step 6, main.h 里根据实际情况配置引脚,把驱动头文件 #include "w25qxx.h" 包含进来。片选信号 CS 可以由任意一个 GPIO 控制,在函数HAL_SPI_MspInit(SPI_HandleTypeDef *hspi)里把CS引脚配置为GPIO输出就行了,实际的拉低拉高是驱动代码实现的。

Step 7, 在 main.c 里定义了 SpiHandle 并指向 SPI1, 我们在 w25qxx.c里也要用到这个 Handle,所以通过 extern 来引用一下。

Step 8, 初始化 SPI1,然后调用 w25qxx 驱动的初始化代码 W25qxx_Init( ); 然后就可以用擦除,读写等函数了。

在代码的修改过程中,我们可以再次体会 Cube 库的这种分层结构带来的好处,特别是如何与第三方驱动代码融合。各个模块就像积木一样,我们只需要把它们搭建起来就可以快速的实现我们想要的功能。下面是读出数据时实际抓取的波形:

参考资料:PM0215  STM32F0xxx Cortex-M0 programming manualUM1785 Description of STM32F0 HAL and low-layer driversWinbond W25Q128 DatasheetSTM32F030 Datasheet

STM32F030 Reference Manual

声明: 本文由入驻OFweek维科号的作者撰写,观点仅代表作者本人,不代表OFweek立场。如有侵权或其他问题,请联系举报。
侵权投诉

下载OFweek,一手掌握高科技全行业资讯

还不是OFweek会员,马上注册
打开app,查看更多精彩资讯 >
  • 长按识别二维码
  • 进入OFweek阅读全文
长按图片进行保存