美文网首页STM32
STM32硬件基础--QaudSPI总线读写片外FLASH(三)

STM32硬件基础--QaudSPI总线读写片外FLASH(三)

作者: 海东青电子 | 来源:发表于2019-11-07 21:57 被阅读0次

    【海东青电子原创文章,转载请注明出处:https://www.jianshu.com/p/3d8b6f2c95a3

    N25Q是NOR FLASH,每次写入数据之前,需要先进行擦除。而且,在发送写数据指令之前,需要先“使能写”(见上一篇:STM32硬件基础--QaudSPI总线读写片外FLASH(二))。执行写之后,还需要查询FLASH的状态寄存器,看看是否写入完毕。

    完整的示例代码的下载地址:https://github.com/haidongqing/qspi-writeflash

    第一步是擦除:

    图一

    擦除之前,也需要先使能写。发出擦除指令后,要查询此指令是否完成,函数 QSPI_AutoPollingMemReady() 查询FLASH是否进入就绪状态:

    图二

    .Match、.Mask 的值为什么是0x00和0x01呢?来看看N25Q的数据手册中关于状态寄存器的说明:

    图三

    需要查询寄存器的bit0是否为0,所以屏蔽字是0x01,目标值是0x00。

    第二步:写入。

    图四

    待写入的数据(字节类型)保存在 aTxBuffer 中,长度为 BUFFERSIZE,赋值给了 .NbDate 。执行写入后,调用函数 QSPI_AutoPollingMemReady() 查询FLASH是否写入完毕。

    以上只是最简单的写FLASH示例,实际使用时,最重要的是要处理跨扇区写的问题,即 当BUFFERSIZE大于FLASH的扇区size时,写第二个扇区时,要重新设置 sCommand.Address(递增;之后的其他扇区照此类推),可参考ST官方的例程 -- “QSPI_ReadWrite_IT” :

    图五

    (完)

    相关文章

      网友评论

        本文标题:STM32硬件基础--QaudSPI总线读写片外FLASH(三)

        本文链接:https://www.haomeiwen.com/subject/ppzvbctx.html