STM32H743+CubeMX-QSPI+DMA读取外部FLASH(W25Q128JVSQ)
文章目錄
- 一、前言
- 二、硬件電路
- 三、CubeMX
- 3.1、Parameter Setting
- 3.2、GPIO Settings
- 3.3、MDMA Settings(重點)
- 3.4、CubeMX生成項目代碼
- 四、例程
- 4.1、添加代碼到工程
- 4.2、main.c
- 4.3、DEBUG
相關筆記:
STM32H743+CubeMX-QSPI讀寫外部FLASH(W25Q128FV)
一、前言
實際項目上,禁止使用串行方式讀寫外部FLASH,必須使用DMA(并行)方式讀寫外部FLASH。讀寫外部FLASH屬于數據的搬運,這種簡單又枯燥的工作屬于DMA,CPU必須集中全力干其他有意義的事情。如果使用CPU去搬運大量又連續的數據的話,會有一定程度地影響CPU對外設的響應速度。
例程bsp代碼下載地址:
鏈接:https://pan.baidu.com/s/1ClLHTuJk0T3WA_zMpr9t3Q 提取碼:y78s
二、硬件電路
三、CubeMX
3.1、Parameter Setting
3.2、GPIO Settings
3.3、MDMA Settings(重點)
MDMA的設置如下,按照圖片設置就好。想了解MDMA的細節,需要去官方下載《STM32H7x3編程參考手冊》- 第14章 MDMA控制器。
Cube生成的MDMA的代碼如下:
3.4、CubeMX生成項目代碼
四、例程
移植例程代碼時,需要先確認現有的工程是否已經具備“重定向printf"的功能,因為bsp.h與bsp.c需要使用到printf。bsp_qspi_w25q128.h與bsp_qspi_w25q128.c又需要調用bsp.h。
云盤里有4個bsp文件,分別是:
4.1、添加代碼到工程
4.2、main.c
首先,在main.c 包含頭文件 bsp_qspi_w25q128.h。
程序的流程如下:
第一步:通過函數QSPI_W25Qx_ReadID_DMA讀取外部FLASH的ID號碼,保存在變量test_Flash_ID里。(后面通過DEBUG模式看看變量test_Flash_ID里存了什么。)
第二步:擦除外部FLASH的第一個扇區的數據。(擦除后,里面變成全是0xFF。)
第三步:讀取外部FLASH的第一個扇區的8個數據,放到數組test_Read_Buf里。(看看在第一個扇區的位置前面8個數據是不是都是0xFF。)
第四步:往外部FLASH的第一個扇區寫入數組test_buf里的8個數據。(用于后續確認是不是真的把數據寫進去了。)
第五步:再讀取外部FLASH的第一個扇區的8個數據,繼續放到數組test_Read_Buf里。(看看往外部FLASH里寫數組是否真的成功了。)
實際上,程序的目的就兩個:
4.3、DEBUG
經過查看單片機內存,變量test_Flash_ID = 0xef4018。表示成功讀取外部FLASH的ID。
數組test_buf 成功寫入FLASH,再從FLASH里讀取出來,放入數組test_Read_Buf里。經過監控單片機內存看到數組test_Read_Buf 等于 數組test_buf。
QSPI+DMA讀取外部FLASH成功!
總結
以上是生活随笔為你收集整理的STM32H743+CubeMX-QSPI+DMA读取外部FLASH(W25Q128JVSQ)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: html5jqueryl轮播图,基于JQ
- 下一篇: python 携程_python 携程爬