在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

基于STM32H7 EXTI+SPI+DMA雙緩沖應用演示

茶話MCU ? 來源:茶話MCU ? 2023-08-21 09:12 ? 次閱讀

最近有STM32用戶咨詢---如何基于STM32H7系列芯片用EXTI0中斷同步觸發SPI DMA并實現DMA雙緩沖功能。當然,在論壇上也有發布類似咨詢帖。其實,老早之前我算是未雨綢繆地在本公眾號分享了有關使用DMAMUX模塊通過EXTI同步觸發其它DMA請求的文章和關于DMA雙緩沖應用原理介紹與參考實現代碼。

STM32 MCU家族中里很多系列內置DMAMUX模塊,該模塊可以基于某些特定事件,比如某些EXTI事件、定時器觸發輸出、DMA完成事件來生成DMA請求;有了它,DMA請求與DMA通道的關聯可以實時編程,不再事先硬件鎖定DMA請求與DMA響應通道的連接邏輯。我這里不對DMAMUX做詳細介紹,有需要的請閱讀STM32系列手冊的相關章節或他人的相關解讀。

今天重點就咨詢者的問題,基于AMR MDK開發環境、STM32H743Nucleo 開放板做一下實驗演示,供有需要的同仁參考。

現在要實現的大致功能是,EXTI0中斷作為SPI DMA發送的同步事件,SPI DMA接收采用雙緩沖模式,即接收用到2個獨立的緩沖區。我在測試時將SPI的發送、接收腳短接,自發自收并工作在Master全雙工模式?!具@里用到的DMA為通用DMA,既非MDMA也非BDMA。下面兩幅圖是SPI收、發實現的功能框架,具體使用SPI1?!?/p>

f2492480-3e8c-11ee-ac96-dac502259ad0.png

f26a5aec-3e8c-11ee-ac96-dac502259ad0.png

我使用到PE0管腳【只要是某個GPIO端口的0號腳即可】,開啟其外部中斷功能。下面都是使用STM32CubeMx圖形化配置工具進行配置。

f282afa2-3e8c-11ee-ac96-dac502259ad0.png

f2aae530-3e8c-11ee-ac96-dac502259ad0.png

f2e22aa4-3e8c-11ee-ac96-dac502259ad0.png

使用EXTI0作為SPI DMA發送功能的同步事件。即SPI的DMA發送須得到EXTI0事件的觸發方可啟動。每產生1個EXTI0事件就給SPI 申請24個 DMA發送請求,并讓SPI DMA發送工作在循環模式。

f2fc18a6-3e8c-11ee-ac96-dac502259ad0.png

同時開啟SPI的DMA接收功能,并使用DMA雙緩沖模式進行接收。

f3238a30-3e8c-11ee-ac96-dac502259ad0.png

使用CubeMx配置完成后,建立工程?;?a target="_blank">ARM MDK的基本存儲配置截圖如下:

f34bf830-3e8c-11ee-ac96-dac502259ad0.png

說明下,這里我沒有開啟D-Cache,也沒有使用DMA FIFO。實際應用中自行開啟并做適當配置及處理。關于EXTI0的產生,我剛開始是使用跳線短接地驗證的,但這樣操作很不方便,我后來改為軟件方式觸發EXTI0中斷。最后測試時,我每2秒產生一個EXTI0中斷,進而觸發SPI通信

每產生1次EXTI0中斷,則SPI使用DMA方式發送24個字節數據。SPI的DMA接收采用雙環沖模式,每次每個緩沖區只接收8個字節數據,然后切換緩沖區?!緦嶋H上我將2個接收緩沖區開辟的空間為10個字節】

f38e735e-3e8c-11ee-ac96-dac502259ad0.png

我基于STM32HAL庫組織的代碼,核心用戶參考代碼如下:

f3a83ec4-3e8c-11ee-ac96-dac502259ad0.png

下面函數代碼截圖是用來更新SPI發送緩沖區內容的,測試中每2秒更新一次。

f3c771a4-3e8c-11ee-ac96-dac502259ad0.png

下面是經過調試后的某一刻的演示結果截圖:

f3e88a88-3e8c-11ee-ac96-dac502259ad0.png

另外,下方還有視頻演示效果,有興趣的可以看看。建議點擊全屏按鈕f435017e-3e8c-11ee-ac96-dac502259ad0.png查看,否則效果可能不太好。整體效果就是定時產生EXTI0中斷,觸發SPI的DMA方式發送,SPI基于DMA雙緩沖模式進行接收,可以看到2個接收緩沖區內容因周期性接收切換操作而變更。

關于咨詢者的功能實現的介紹及演示就到這里。最后特意給些相關提醒,這些提醒跟上面演示同等重要。

1、注意開啟D-Cache時的數據一致性問題;

2、注意通用DMA訪問域的限制問題

3、注意DMAFIFO開啟與不開啟時的差別;

4、注意初始化代碼往往是有順序要求的;

說實在的,本咨詢話題涉及的內容及知識點可能有點多,在此不能一一詳述。本人分享此應用演示的主要目的,是希望給關注本應用話題的人一些實現參考。能實現,可以實現,給遇到相應困難的同仁以信心。

今天的話題就聊到這里,就此打住。下次再聊~!

審核編輯:湯梓紅
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • mcu
    mcu
    +關注

    關注

    146

    文章

    17319

    瀏覽量

    352649
  • SPI
    SPI
    +關注

    關注

    17

    文章

    1721

    瀏覽量

    92126
  • 定時器
    +關注

    關注

    23

    文章

    3255

    瀏覽量

    115371
  • dma
    dma
    +關注

    關注

    3

    文章

    566

    瀏覽量

    100958
  • stm32h7
    +關注

    關注

    0

    文章

    37

    瀏覽量

    1753

原文標題:STM32H7 EXTI + SPI +DMA 雙緩沖應用演示

文章出處:【微信號:stmcu832,微信公眾號:茶話MCU】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    如何用STM32H7EXTI0同步觸發SPI DMA緩沖

    請教:有沒有朋友用STM32H7EXTI0同步觸發SPI DMA緩沖的,指教一下
    發表于 03-14 08:22

    STM32H7技術詳解

    STM32H7 系統架構 ? 單核及STM32H7系統框圖 ? AXI 總線及互聯 ? ART 加速器 ? STM32H7 存儲器 結構 ? S
    發表于 09-07 06:01

    STM32H7演示:意法半導體

    意法半導體-STM32H7演示
    的頭像 發表于 07-02 11:13 ?6554次閱讀

    基于STM32介紹DMA緩沖模式

    目前STM32家族中有些系列支持DMA緩沖模式,比如STM32F2/STM32F4/
    的頭像 發表于 02-02 16:47 ?2.4w次閱讀
    基于<b class='flag-5'>STM32</b>介紹<b class='flag-5'>DMA</b>的<b class='flag-5'>雙</b><b class='flag-5'>緩沖</b>模式

    STM32H7正式投入生產 樣品現已上市

    STM32H7正式投入生產,樣品現已上市
    的頭像 發表于 03-01 12:04 ?3814次閱讀
    <b class='flag-5'>雙</b>核<b class='flag-5'>STM32H7</b>正式投入生產 樣品現已上市

    STM32H7教程】第19章 STM32H7的GPIO應用之按鍵FIFO

    STM32H7教程】第19章 STM32H7的GPIO應用之按鍵FIFO
    發表于 11-23 18:21 ?9次下載
    【<b class='flag-5'>STM32H7</b>教程】第19章 <b class='flag-5'>STM32H7</b>的GPIO應用之按鍵FIFO

    STM32H7學習之路繼續(stm32H7系列3) GPIO

    STM32H7學習之路繼續(stm32H7系列3) GPIO
    發表于 11-30 12:36 ?20次下載
    <b class='flag-5'>STM32H7</b>學習之路繼續(<b class='flag-5'>stm32H7</b>系列3)  GPIO

    STM32H7教程】第21章 STM32H7的NVIC中斷分組和配置(重要)

    STM32H7教程】第21章 STM32H7的NVIC中斷分組和配置(重要)
    發表于 12-04 14:36 ?13次下載
    【<b class='flag-5'>STM32H7</b>教程】第21章 <b class='flag-5'>STM32H7</b>的NVIC中斷分組和配置(重要)

    "STM32H7學習繼續(STM32H7系列5)第十七章比較實用,以后寫程序的時候會用到"

    "STM32H7學習繼續(STM32H7系列5)第十七章比較實用,以后寫程序的時候會用到"
    發表于 12-05 11:21 ?9次下載
    "<b class='flag-5'>STM32H7</b>學習繼續(<b class='flag-5'>STM32H7</b>系列5)第十七章比較實用,以后寫程序的時候會用到"

    STM32H7教程】第8章 STM32H7的終極調試組件Event Recorder

    STM32H7教程】第8章 STM32H7的終極調試組件Event Recorder
    發表于 12-05 20:06 ?7次下載
    【<b class='flag-5'>STM32H7</b>教程】第8章 <b class='flag-5'>STM32H7</b>的終極調試組件Event Recorder

    STM32H7教程】第14章 STM32H7的電源,復位和時鐘系統

    STM32H7教程】第14章 STM32H7的電源,復位和時鐘系統
    發表于 12-09 11:21 ?36次下載
    【<b class='flag-5'>STM32H7</b>教程】第14章 <b class='flag-5'>STM32H7</b>的電源,復位和時鐘系統

    核型號的微控制器STM32H7

      此外,STM32H7核版本包括一個開關模式電源 (SMPS),與使用更傳統 LDO 的微控制器相比,可顯著提高 MCU 的電源效率。
    的頭像 發表于 05-15 17:19 ?1.1w次閱讀

    AN5361_開始使用基于STM32CubeIDESTM32H7微控制器的項目

    AN5361_開始使用基于STM32CubeIDESTM32H7微控制器的項目
    發表于 11-21 08:11 ?3次下載
    AN5361_開始使用基于<b class='flag-5'>STM32</b>CubeIDE<b class='flag-5'>雙</b>核<b class='flag-5'>STM32H7</b>微控制器的項目

    AN5361_STM32CubeIDE中基于STM32H7微控制器的項目入門

    AN5361_STM32CubeIDE中基于STM32H7微控制器的項目入門
    發表于 11-21 08:11 ?0次下載
    AN5361_<b class='flag-5'>STM32</b>CubeIDE中基于<b class='flag-5'>雙</b>核<b class='flag-5'>STM32H7</b>微控制器的項目入門

    STM32H7技術詳解

    電子發燒友網站提供《STM32H7技術詳解.pdf》資料免費下載
    發表于 08-01 14:49 ?5次下載
    <b class='flag-5'>STM32H7</b>技術詳解
    主站蜘蛛池模板: 中文字幕佐山爱一区二区免费 | 国产亚洲精品免费 | 欧美一级免费观看 | 婷婷综合亚洲 | yiren22亚洲综合高清一区 | 成人精品第一区二区三区 | 欧美成人在线网站 | 亚洲高清国产拍精品影院 | 国产男人午夜视频在线观看 | 欧美午夜一区 | 狠狠色综合久久久久尤物 | 男人天堂网在线观看 | 亚洲免费小视频 | 国产成人精品高清在线 | 在线黄色免费 | 成人免费淫片95视频观看网站 | 色爱区综合五月激情 | 免费高清成人啪啪网站 | 亚洲黄色录像 | 寄宿日记免费看 | 日本妞xxxxxxxxx69| 全日本爽视频在线 | 91夜夜人人揉人人捏人人添 | 四虎网址大全 | 亚洲国产成人久久精品图片 | 日韩第五页 | 爱逼色 | 久久青草91免费观看 | 天堂网| 天天鲁天天爽精品视频 | 一级看片免费视频囗交 | 久久综合成人网 | 国产精品久久精品福利网站 | 狠狠色丁香久久综合网 | chinese国产videoxx实拍 | 四虎永久在线观看视频精品 | 国产免费一区二区三区最新 | 青青热久久国产久精品秒播 | 亚洲欧洲精品成人久久曰影片 | 日韩美毛片 | 国产成人小视频 |