精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

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

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

3天內不再提示

關于STM32定時器觸發SPI逐字收發之應用示例

黃工的嵌入式技術圈 ? 來源:黃工的嵌入式技術圈 ? 作者:黃工的嵌入式技術 ? 2020-01-14 16:35 ? 次閱讀

我們在做SPI應用時,有時希望通過定時器來定時地觸發SPI的收發,并利用DMA完成數據的傳輸。這里,以STM32L476芯片為例來做個演示,以供參考。

本示例的大致過程是這樣的:

片內SPI1做Master,SPI2做Slave,均工作在全雙工模式。

這里使用片內定時器TIM3,通過它的更新事件觸發DMA請求,通過DMA將數據給到SPI1的數據寄存器并發送出去,同時也開啟SPI1接收事件的DMA傳輸。總之,SPI2的收、發事件都啟用DMA完成。

TIM3的更新事件周期控制兩個SPI的收發節奏,即定時器每產生一次更新事件,SPI1/SPI2這兩個主從通信模塊就進行一個數據的收發。我們可以通過調整定時器的計時周期來調整數據收發的快慢。

好,先基于STM32CubeMx進行初始化配置。

1. 對TIM3做基本配置。選擇時鐘源,先大致估算個定時器計時周期,調試時我們可以自行靈活調整。

開啟基于TIM3更新事件的DMA配置。傳輸方向是從Memory 到 外設SPI1,即將內存數據傳輸到SPI1的數據寄存器進行數據發送,這里選用循環模式,以便測試。

2. 對SPI1/SPI2進行基本配置。細節請參看下面三幅截圖。

3、DMA的配置情況。

在TIM3和SPI1/SPI2外設配置中,開啟了相關事件的DMA請求,匯總如下圖。

4、準備用戶代碼。

當完成基于STM32CubeMx的初始化配置并生產初始化代碼后,我們準備相應的用戶代碼。這里準備了4個內存數組,分別用于存放SPI1/SPI2的收發數據。

在定時器的觸發下,Master SPI1逐字的向Slave SPI2發送“Hello! I AM STM32!”,Slave SPI2也逐字的向Master回應“HI,MASTER,ME TOO!”,這樣循環操作。下面兩幅截圖是本示例中使用到的用戶代碼,是基于STM32Cube固件庫而編寫的。應該說簡單明了,無須過多解釋。

5、結果驗證。

下面的截圖是兩個不同時刻SPI通信時的信號波形圖。其中,紫色的是時鐘信號,綠色、黃色是數據信號。兩個數據信號間的時間間隔由定時器的更新周期決定。

下面的截圖是在調試狀態下的通過觀察窗口得到的SPI1/SPI2分別從對方收到的數據,即SPI2收到的數據是“HELLO,I AM STM32!”,SPI1收到的數據則是“HI,MASTER,ME TOO!”

整體上講,上述應用的實現不難,可能稍微有點綜合性。

要實現上述應用,首先要求我們對DMA傳輸的原理有清晰的了解,觸發事件,傳輸源、傳輸目標幾個概念及關系要弄清楚。

另外,即使我們基于STM32固件庫開發,不一定能找到完整的現存例程,我們可能需要基于現有驅動代碼自行組織用戶程序。

還有,在上面示例代碼中,我沒有開啟DMA的中斷事件,我們在具體應用中可以根據情況來決定是否啟用DMA中斷,比方開啟傳輸完成中斷等。

最后順便提醒下,這里我們基于定時器事件的DMA請求而自行指定DMA的源端和目的端,?一定要保證是該觸發事件所請求的DMA可以到達的地方。建議編程設計前最好查看下相關芯片數據手冊里的芯片模塊及總線框架圖,不然的話,有時你可能遇到你指定的DMA根本就不正常運作的情況。

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

    關注

    2266

    文章

    10871

    瀏覽量

    354806
  • SPI
    SPI
    +關注

    關注

    17

    文章

    1701

    瀏覽量

    91326
  • 定時器
    +關注

    關注

    23

    文章

    3237

    瀏覽量

    114467
收藏 人收藏

    評論

    相關推薦

    定時器相關的寄存有哪些類型

    在微控制編程中,定時器是一種非常常見的功能模塊,用于實現各種定時和計數功能。定時器的工作原理是通過內部的計數來跟蹤時間的流逝,當計數
    的頭像 發表于 07-12 10:25 ?773次閱讀

    關于定時器觸發ADC連續采樣dma傳輸的疑問求解?

    。 我想問兩個問題: 第一:我上述的采樣思路是否存在錯誤,因為我這幾天寫該程序的時候,從會有各種bug導致ESP32-S2重啟(多數為開門狗超時) 第二:stm32具有定時器觸發連續采樣的功能,我更想
    發表于 06-14 07:25

    CW32使用DMA單通道、定時器觸發ADC實現了多路AD采集

    本測試樣例基于CW32F030C8T6MCU,使用DMA單通道、定時器觸發ADC實現了12路AD采集。
    的頭像 發表于 05-24 09:29 ?792次閱讀
    CW32使用DMA單通道、<b class='flag-5'>定時器</b><b class='flag-5'>觸發</b>ADC實現了多路AD采集

    stm32定時器的如何外部啟動?

    我想利用stm32定時器精確定時一個信號從發生到結束的時間,想讓定時器通過外部觸發開啟,一般有什么方法。
    發表于 05-10 06:40

    請問如何使用定時器的更新事件觸發DMA讀取6字節SPI數據?

    想用定時器的更新事件觸發DMA讀取SPI數據,現在有個問題是一次更新事件只能觸發一次DMA傳輸,我想要定時器
    發表于 03-29 06:16

    如果STM32定時器外接了正交編碼,該剩余通道是否能做PWM輸出呢?

    其實,對于STM32芯片,編碼輸入信號就是定時器的計數時鐘源之一。定時器外接了編碼輸入,若還有剩余通道的話,剩余通道依然可以實現輸入捕獲或輸出比較功能。
    的頭像 發表于 03-21 09:06 ?1426次閱讀
    如果<b class='flag-5'>STM32</b><b class='flag-5'>定時器</b>外接了正交編碼<b class='flag-5'>器</b>,該剩余通道是否能做PWM輸出呢?

    STM32L0使用定時器上升沿觸發ADC采樣時,采樣頻率如何確定?

    我想問一下,在使用定時器上升沿觸發ADC采樣時,采樣頻率如何確定,是定時器頻率就等于ADC采樣頻率嗎?用的是STM32L0
    發表于 03-20 06:37

    使用555定時器的可調雙定時器電路

    定時器 IC 555 是最通用和最常用的 IC 之一,因為它的應用范圍更廣,如 PWM放大器、延遲定時器、開關電路、占空比選擇、時鐘脈沖發生等。這也可用于各種應用,如精確
    的頭像 發表于 02-25 15:16 ?2013次閱讀
    使用555<b class='flag-5'>定時器</b>的可調雙<b class='flag-5'>定時器</b>電路

    使用555定時器的報警電路圖

    555定時器是一種集成電路芯片,常被用于定時器、脈沖產生和振蕩電路。555可被作為電路中的延時器件、觸發器或起振元件。
    的頭像 發表于 02-02 11:14 ?5150次閱讀
    使用555<b class='flag-5'>定時器</b>的報警<b class='flag-5'>器</b>電路圖

    定時器原理能控制馬達嗎為什么

    定時控制。 定時器的工作原理是基于內部的振蕩電路,通過穩定的時鐘信號來觸發或計時特定的事件。常見的定時器電路有555定時器和微控制
    的頭像 發表于 01-23 15:21 ?612次閱讀

    555定時器的基本功能 555定時器的工作原理及其應用

    定時器有三種基本工作模式,分別是單穩態、自由運放和雙穩態。它可以在多種電子電路中實現功能的實現。下面將詳細介紹它們的功能特點。 單穩態模式:在單穩態模式下,555定時器可以實現一個穩態觸發器。當外部
    的頭像 發表于 01-18 11:12 ?1.4w次閱讀

    AWTK 開源串口屏開發(6) - 定時器的用法

    中,可以給每個控件(包括窗口)創建一個定時器定時器到點后觸發v-on:timer事件。在AWTK串口屏中,提供了6個定時器相關函數:start_timer啟動定
    的頭像 發表于 01-13 08:24 ?540次閱讀
    AWTK 開源串口屏開發(6) - <b class='flag-5'>定時器</b>的用法

    定時器會阻塞線程嗎 定時器指令有哪幾種

    定時器會阻塞線程嗎 定時器指令有哪幾種? 定時器一般不會阻塞線程,但具體是否會阻塞取決于所使用的定時器實現方式和使用方式。 定時器指令可以分
    的頭像 發表于 12-19 14:03 ?892次閱讀

    STM32定時器時間計算方法

    詳細介紹STM32定時器時間計算方法。 STM32定時器基本結構 STM32定時器通常包含一
    的頭像 發表于 12-19 11:31 ?1.1w次閱讀

    stm32一個定時器能同時控制兩個燈以不同頻率閃爍嗎?

    STM32定時器功能強大,**STM32定時器可以同時控制兩個燈以不同頻率閃爍** 。
    的頭像 發表于 12-13 10:43 ?2002次閱讀