flash代码_STM32CUBEIDE之SPI读写FLASH

步骤

步骤讲解与结果截图

步骤1:创建STM32CUBEIDE工程(根据自己的开发板,配置RCC,选择最低版本固件库)

e5dc69500c1369d679fae63b6dee4a22.png980819ec62fe6e05da19716001653662.png

2:查看FLASH与自己板子的接线图

d50ee9859b6d171c9e06143928a7c3e7.png)9300e28587e1b79494f99d34f850d9a6.png)2ea7b4a086870082d3e4161b00f25546.png

3:根据FLASH时序特点,这个芯片采用MSB先行,一般采用模式0(初始低电平,采集第一个边沿)与模式3(初始高电平,采集第二个边沿)的时钟,SPI采用的摩托罗拉的设计,所以我们将SPI配置如下

d71819938c5359e0af4c472390dbe12d.png

4:调整引脚

由于我们发现系统配置的SPI1的引脚与我们开发板的引脚标号PB3,PB4,PB5不一致,所以我们要对SPI1进行调整引脚c87a120029569184141bc3da51276822.png)2ab02c21fc0a1a0535663a93a510c2f1.png

5:配置NSS脚

由于NSS片选引脚需要我们用软件配置,所以我们将原理图上的PG6的NSS脚,配置为GPIO的输出模式,方便控制FLASH芯片的工作接入与否8c002f2e52a2d886fc7043377d3a81a5.png

6:由于FLASH的传输机制与EEPROM不同,读写数据前需要发送对应编码的指令,所以FLASH的指令众多,功能众多,所以要学会移植FLASH的驱动(移植!=抄,要读懂驱动代码,移植才比较快,否则你要移植很久,可能还是会失败),而且今后移植驱动也是家常便饭的事情

1:将厂商给我们的BSP驱动程序复制到我们的项目(需要提前把待移植的代码保存为GB2312编码,再移植到我们项目,并且把我们的项目编码也设置为GB2312,才不会出现移植的文件中文乱码的情况) 2:)为了验证我们是否移植成功,我们还需要将mian函数里面的测试代码给移植过来eb95a5d5f8f467e9a71bdce2f254e58d.png)ef2c8f1ce13331f4de77f3e5d574f2a5.png

7:串口使能

在移植过程中,我们发现需要用到上位机进行显示,所以我们将串口配置好,串口的配置很简单,只需要选择异步模式就ok8cb7d2de51e80944e9b39843f8e6c936.png

8:移植过程介绍

技巧:有时需要批量替换一个单词可以选中单词,右键点击Refactor重建,然后选择Rename 1)移植过程主要是移植533019a7d7b9e359c379f26b587cd645.png)注意:建议根据BSP支持包的SPI_INIT函数与SPI_MSP_INIT函数的参数配置我们的SPIa7e2ebdc45b7c022b3319ff59dc4c9b4.png)//注意:不能在SPI_MSP_INIT里面写_HAL_SPI_ENABLE(),虽然SPI初始化函数里面会调用SPI_MSP_INIT函数,但是并不是SPI_MSP_INIT函数结束,SPI_INIT也结束了,STM32CUBEMX默认会在SPI_MSP_INIT函数后面diable_spi,所以将_HAL_SPI_ENABLE写在SPI_MSP_INIT函数里面没用,需要写在用户main函数里面,这个小细节没注意到,发了1天才发现 7861748230babb69761aed5f2391a5a2.png)在对比我们的STM32CUBE自动生成的SPI的配置与板级支持包和HAL_SPI_MSPINIT的配置都一致时,我们就可以将BSP的SPI_INIT与HAL_SPI_MSPINIT都注释掉fc3e4fb91c3eb8a91b23f1268d2ffb9d.png 同时我们需要检查我们的引脚配置,如果SPI使用的一样的话,因为F4的SPI引脚标号都差不多,就不用修改BSP的SPI的引脚,只需要将NSS/CS片选脚修改为自己的端口 ,配置完初始化函数与GPIO引脚后,就能使用厂商提供给我们的HAL库了,这也是BSP的初衷,为了屏蔽不同硬件的底层的差别,便于驱动的移植

9:移植验证

36ddb3cb0c48d8c3ec55d5697ec334b4.png

10:阅读支持包驱动代码

移植完后,不要就不管了,一定要看FLASH厂商给的驱动流程

下面附上CSND博客地址:

https://blog.csdn.net/qq_42150119

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值