一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

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

3天內(nèi)不再提示

基于STM32L476芯片來做個演示

茶話MCU ? 來源:ST MCU 信息交流 ? 2019-11-20 14:57 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

我們在做SPI應(yīng)用時,有時希望通過定時器定時地觸發(fā)SPI的收發(fā),并利用DMA完成數(shù)據(jù)的傳輸。這里,我基于STM32L476芯片來做個演示,以供參考【為什么選用32L476,其實沒啥特別原因,只是順手找了塊Nucleo板】。

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

片內(nèi)SPI1做Master,SPI2做Slave,均工作在全雙工模式。

這里使用片內(nèi)定時器TIM3,借助它的更新事件觸發(fā)DMA請求,通過DMA將數(shù)據(jù)給到SPI1的數(shù)據(jù)寄存器并發(fā)送出去,同時也開啟SPI1接收事件的DMA傳輸。SPI2的收、發(fā)事件都啟用DMA傳輸來實現(xiàn)數(shù)據(jù)收發(fā)操作。

TIM3的更新時間控制兩個SPI的收發(fā)節(jié)奏,即定時器每產(chǎn)生一次更新事件,SPI1/SPI2這兩個主從通信模塊就進行一個數(shù)據(jù)的收發(fā)。我們可以通過調(diào)整定時器的計時周期來調(diào)整數(shù)據(jù)收發(fā)的快慢節(jié)奏。

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

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

開啟基于TIM3更新事件的DMA配置。傳輸方向是從Memory到外設(shè)SPI1,即將內(nèi)存數(shù)據(jù)傳輸?shù)絊PI1的數(shù)據(jù)寄存器進行數(shù)據(jù)發(fā)送,這里選用循環(huán)模式。

2、對SPI1/SPI2進行基本配置。細節(jié)請參看下面三幅截圖。

3、DMA的配置情況。

在TIM3和SPI1/SPI2外設(shè)配置中,開啟了相關(guān)事件的DMA請求,匯總?cè)缦聢D。

4、準(zhǔn)備用戶代碼。

當(dāng)完成基于STM32CubeMx的初始化配置并生產(chǎn)初始化代碼后,我們準(zhǔn)備相應(yīng)的用戶代碼。

這里準(zhǔn)備了4個內(nèi)存數(shù)組,分別存放SPI1/SPI2的收發(fā)數(shù)據(jù)。

在定時器的觸發(fā)下,主SPI1逐字的向從SPI2發(fā)送“Hello! I AM STM32!”,從SPI2也逐字的向主SPI1回應(yīng)“HI,MASTER,ME TOO!”,就這樣循環(huán)操作。

下面兩幅圖是本示例中使用到的用戶代碼截圖,是基于STM32Cube固件庫而編寫的。應(yīng)該說簡單明了,無須多做解釋。

5、結(jié)果驗證。

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

下面的截圖是在調(diào)試狀態(tài)下的通過觀察窗口得到的SPI1/SPI2分別從對方收到的內(nèi)容。

最后小結(jié)下。整體上講上述應(yīng)用的實現(xiàn)不難,稍微有點綜合性。

要實現(xiàn)上述應(yīng)用,首先要求我們對DMA傳輸?shù)脑碛星逦牧私?,觸發(fā)事件,傳輸源、傳輸目標(biāo)幾個概念及關(guān)系要弄清楚。另外,即使我們基于STM32固件庫開發(fā),不一定能找到完完整整的現(xiàn)存代碼,我們可能需要基于現(xiàn)有驅(qū)動代碼自行組織用戶程序。還有,在上面示例代碼中,我沒有開啟DMA的中斷事件,我們在具體應(yīng)用中可以根據(jù)情況來決定是否啟用DMA中斷,比方開啟傳輸完成中斷等。順便提醒下,這里我們基于定時器事件自行指定DMA的源端和目的端,?一定要保證是該觸發(fā)事件所請求的DMA可以到達的地方,編程設(shè)計前最好查看下相關(guān)芯片數(shù)據(jù)手冊里的芯片模塊及總線框架圖。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 芯片
    +關(guān)注

    關(guān)注

    460

    文章

    52520

    瀏覽量

    440965
  • STM32
    +關(guān)注

    關(guān)注

    2293

    文章

    11032

    瀏覽量

    364984
  • 定時器
    +關(guān)注

    關(guān)注

    23

    文章

    3298

    瀏覽量

    118949

原文標(biāo)題:STM32定時器觸發(fā)SPI逐字收發(fā)之應(yīng)用示例

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

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    STM32F3系列、STM32F4系列、STM32L4系列和STM32L4+系列Cortex-M4編程手冊

    電子發(fā)燒友網(wǎng)站提供《STM32F3系列、STM32F4系列、STM32L4系列和STM32L4+系列Cortex-M4編程手冊.pdf》資料免費下載
    發(fā)表于 06-06 17:06 ?5次下載

    基于STM32 人群定位、調(diào)速智能風(fēng)扇設(shè)計(程序、設(shè)計報告、視頻演示

    基于STM32 人群定位、調(diào)速智能風(fēng)扇設(shè)計(程序、設(shè)計報告、視頻演示),有需要的同學(xué)推薦下載!
    發(fā)表于 05-28 21:34

    基于stm32 nucleo_L476的智能燈(操作說明+源碼)

    基于stm32 nucleo_L476的智能燈(操作說明+源碼)推薦下載!
    發(fā)表于 05-28 21:29

    基于STM32 人群定位、調(diào)速智能風(fēng)扇設(shè)計(程序、設(shè)計報告、視頻演示

    基于STM32 人群定位、調(diào)速智能風(fēng)扇設(shè)計(程序、設(shè)計報告、視頻演示)項目下載! 純分享帖,需要者可點擊附件免費獲取完整資料~~~【免責(zé)聲明】本文系網(wǎng)絡(luò)轉(zhuǎn)載,版權(quán)歸原作者所有。本文所用視頻、圖片、文字如涉及作品版權(quán)問題,請第一時間告知,刪除內(nèi)容!
    發(fā)表于 05-23 20:35

    STM32L476 Flash擦除失敗的原因?

    開發(fā)板MCU型號:STM32L476RG 同樣的固件在開發(fā)板中flash讀寫擦除操作都沒問題,但在產(chǎn)品中擦除函數(shù)返回成功,但flash中的數(shù)據(jù)其實并沒有擦除。 這兩款MCU在Flash的操作上是否有什么不同?
    發(fā)表于 04-23 08:26

    配置STM32H7S3L8芯片時出現(xiàn)沒有下載芯片包的報錯,怎么解決?

    我在配置STM32H7S3L8芯片時出現(xiàn)報錯,大致意思是講我沒有下載芯片包,但是實際我已經(jīng)下載,我在公司使用了電腦卻沒有這個問題,我的筆記本出現(xiàn)了這個報錯,我將附上筆記本配置圖片以及IDE的問題圖片,重點我已經(jīng)重裝
    發(fā)表于 03-13 08:02

    如何關(guān)閉STM32MP1 Developer Package開機默認的gtk演示程序?

    如題,如何關(guān)閉STM32MP1 Developer Package開機默認的gtk演示程序
    發(fā)表于 03-13 06:03

    STM32L476VGT6是否可以通過FMC直接驅(qū)動340X240的彩屏?

    STM32L476VGT6是否可以通過FMC直接驅(qū)動340X240的彩屏
    發(fā)表于 03-11 08:02

    使用STM32L476RCT6 HAL_FLASHEx_Erase()函數(shù),擦除失敗的原因?

    MCU型號: STM32L476RCT6 大家有用過 HAL_FLASHEx_Erase() 這個函數(shù)嗎? 我根據(jù)官方例程寫的代碼,讀寫都能成功,但是擦除失敗。調(diào)用擦除函數(shù)
    發(fā)表于 03-10 06:14

    STM32L476VGT6 100P的可以直接用stm32u575vg 100P的替換到板子上嗎?

    STM32L476VGT6 100P的可以直接用stm32u575vg 100P的替換到板子上嗎?為啥燒錄程序時無法連接?
    發(fā)表于 03-07 08:10

    STM32L476RG數(shù)據(jù)手冊

    電子發(fā)燒友網(wǎng)站提供《STM32L476RG數(shù)據(jù)手冊.pdf》資料免費下載
    發(fā)表于 03-04 15:30 ?1次下載

    請問怎樣才能讀到ADS127L11芯片所宣稱的800KSPS的速度?

    . 改用DMA讀取, 有好多亂碼,不可行.請問怎樣才能讀到ADS127L11芯片所宣稱的800KSPS的速度?
    發(fā)表于 11-22 07:52

    stm32低功耗設(shè)計技巧

    多個系列和型號可供選擇,其中一些專門設(shè)計用于低功耗應(yīng)用。 例如,STM32L系列芯片采用超低泄漏工藝,具有領(lǐng)先的處理性能和代碼密度,以及多個動態(tài)可選電壓范圍,可在能耗上提供顯著增益。 優(yōu)化電源管理 : 使用多個獨立的電源接口(如VDDA、VDDUSB、VDD
    的頭像 發(fā)表于 11-19 15:52 ?1631次閱讀

    STM32項目實戰(zhàn):基于STM32U5的火災(zāi)報警系統(tǒng)(LVGL),附項目教程/源碼

    小編分享一個《火災(zāi)報警系統(tǒng)》的項目案例,硬件平臺是STM32U5開發(fā)板+資源擴展板+顯示觸摸屏+仿真器,項目的演示界面如下圖所示。火災(zāi)報警系統(tǒng)項目,需要一個蜂鳴
    的頭像 發(fā)表于 11-13 14:18 ?1878次閱讀
    <b class='flag-5'>STM32</b>項目實戰(zhàn):基于<b class='flag-5'>STM32</b>U5的火災(zāi)報警系統(tǒng)(LVGL),附項目教程/源碼

    用drv595evm做個閉環(huán)反饋電路,out-fb是否已經(jīng)做好集成在芯片中?

    我想用drv595evm做個閉環(huán)反饋電路,不知道out-fb是否已經(jīng)做好集成在芯片中?
    發(fā)表于 09-13 08:16