国产精品久久久久影院,成人午夜福利视频,国产精品久久久久高潮,国产精品 欧美 亚洲 制服,国产精品白浆无码流出

STM32F429芯片帶FIFO的DMA傳輸實(shí)現(xiàn)過(guò)程

發(fā)布者:自由思考最新更新時(shí)間:2024-09-14 來(lái)源: elecfans關(guān)鍵字:FIFO  DMA傳輸  實(shí)現(xiàn)過(guò)程 手機(jī)看文章 掃描二維碼
隨時(shí)隨地手機(jī)看文章

STM32系列芯片都內(nèi)置DMA外設(shè),其中很多系列的DMA配備了FIFO。這里以STM32F429芯片及開(kāi)發(fā)板為例,演示一下帶FIFO的DMA傳輸實(shí)現(xiàn)過(guò)程。


大致情況是這樣的,我用TIMER1通道1的比較事件觸發(fā)DMA,將內(nèi)存數(shù)據(jù)寫(xiě)進(jìn)UART5的數(shù)據(jù)發(fā)送寄存器DR,并將UART5的TX/RX腳物理短接,同時(shí)開(kāi)啟UART5的DMA接收模式,即DMA將UART5接收到的數(shù)據(jù)寫(xiě)到指定的接收內(nèi)存區(qū)。下面重點(diǎn)介紹UART5的DMA方式的接收過(guò)程。


首先使用STM32CubeMx完成基本配置。

下面是關(guān)于TIM1的相關(guān)配置,使用通道1的比較事件觸發(fā)DMA,將內(nèi)存數(shù)據(jù)寫(xiě)入U(xiǎn)ART的發(fā)送數(shù)據(jù)寄存器。為什么還要搞個(gè)定時(shí)器來(lái)觸發(fā),其中一個(gè)原因是為了后面好演示結(jié)果。

下面是關(guān)于UART5的基本配置,并開(kāi)啟其接收的DMA傳輸。此時(shí)配置還沒(méi)有使用FIFO.

添加用戶代碼。代碼基于STM32Cube庫(kù)而準(zhǔn)備,這里發(fā)送端發(fā)送17個(gè)字節(jié)數(shù)據(jù)出來(lái)。

我們不妨先看看基于上面不使用FIFO的配置,即使用DMA 直接傳輸時(shí)的運(yùn)行結(jié)果。

在演示基于FIFO的DMA應(yīng)用結(jié)果之前,不妨簡(jiǎn)單介紹下FIFO的結(jié)構(gòu)以及DMA傳輸過(guò)程中使用它有什么好處。

對(duì)于STM32F4來(lái)講,每個(gè)DMA stream都有4個(gè)字的FIFO可用。它用來(lái)暫存來(lái)自DMA源端的數(shù)據(jù),每當(dāng)FIFO里存放的數(shù)據(jù)達(dá)到設(shè)定的閾值后,數(shù)據(jù)就會(huì)被移走。閾值可以設(shè)置為從1個(gè)字到4個(gè)字的深度。

啟用DMA的FIFO可以最大程度地避免數(shù)據(jù)傳輸過(guò)程中的溢出問(wèn)題,可以減少DMA對(duì)內(nèi)存的訪問(wèn)次數(shù)從而減少總線訪問(wèn)競(jìng)爭(zhēng),通過(guò)BURST分組傳輸優(yōu)化傳輸帶寬以提升芯片性能。利用FIFO,通過(guò)對(duì)源端/目標(biāo)端的數(shù)據(jù)進(jìn)行打包或拆包以適應(yīng)不同數(shù)據(jù)寬度的訪問(wèn)需求.讓DMA的使用更為方便靈活.

這里以UART5的數(shù)據(jù)接收為例。當(dāng)啟用FIFO時(shí),目的端數(shù)據(jù)寬度可以從字節(jié)/半字/字格式自由設(shè)置。首先,當(dāng)UART5的DMA接收配置成下面這樣時(shí),即DMA single模式。

FIFO閾值設(shè)置為1/4滿,即1個(gè)字的深度。運(yùn)行上面代碼,我們可看到來(lái)自源端的4個(gè)Byte被封裝成1個(gè)word字。數(shù)據(jù)會(huì)按字方式逐一寫(xiě)入內(nèi)存?!緸榭葱Ч覍⒍〞r(shí)器的觸發(fā)放慢后做多次截圖】

不過(guò),按照上面方式將4個(gè)字節(jié)封裝成一個(gè)字的傳輸過(guò)程中如果發(fā)生被打斷的情況,此時(shí)就會(huì)遇到數(shù)據(jù)損壞的風(fēng)險(xiǎn)。因此就引入了DMA BURST傳輸,或稱DMA節(jié)拍傳輸。即幾個(gè)數(shù)據(jù)【4/8/16】被封裝成1組,或稱1個(gè)burst,或稱1節(jié)。在一節(jié)內(nèi)逐個(gè)進(jìn)行數(shù)據(jù)傳輸,每個(gè)數(shù)據(jù)的傳輸相當(dāng)于1拍。儼如音樂(lè)里的節(jié)拍,4拍1節(jié)、8拍1節(jié)之類的。對(duì)于每1節(jié)內(nèi)的數(shù)據(jù)傳輸,DMA對(duì)總線的占用不會(huì)被總線矩陣仲裁器解除或打斷,以保證每節(jié)數(shù)據(jù)的可靠完成。

我們還是以上面的應(yīng)用為例,調(diào)整配置并開(kāi)啟BURST模式后具體看看。

我對(duì)memory端,也就是這里的目的端啟用了BURST節(jié)拍傳輸。因?yàn)镕IFO深度為1個(gè)字,每次源端數(shù)據(jù)剛好達(dá)到FIFO閾值水平時(shí),通過(guò)1節(jié)4拍即可傳輸完畢,每拍對(duì)應(yīng)1個(gè)byte的傳輸?;贐USRT模式配置可以實(shí)現(xiàn)跟上面Single模式下同樣的效果,而且數(shù)據(jù)傳輸更有保障。通過(guò)下圖可以看出DMA按節(jié)進(jìn)行傳輸,每節(jié)傳輸4個(gè)數(shù)據(jù)。

針對(duì)上述應(yīng)用,我們還可以再次調(diào)整burst配置,比如下面的樣子:

此時(shí)FIFO閾值為2個(gè)字,源端Memory的數(shù)據(jù)訪問(wèn)寬度為半字,Burst大小為4。這樣的話,源端數(shù)據(jù)達(dá)到FIFO閾值時(shí),4個(gè)半字?jǐn)?shù)據(jù)組成1節(jié)分四拍傳輸完成,其中每拍傳輸半字?jǐn)?shù)據(jù)。我們同樣看看慢動(dòng)作后的結(jié)果。

順便提醒下,我們?cè)谧龌贔IFO的burst模式的DMA傳輸時(shí),BURST的大小乘以數(shù)據(jù)大小不得超過(guò)設(shè)置的FIFO閾值大小,否則會(huì)出錯(cuò)。比方以剛才上面的配置來(lái)看。

FIFO閾值為2個(gè)字,即8字節(jié)。數(shù)據(jù)寬度為半字,即2字節(jié),Burst大小為4。完全合規(guī)。


關(guān)鍵字:FIFO  DMA傳輸  實(shí)現(xiàn)過(guò)程 引用地址:STM32F429芯片帶FIFO的DMA傳輸實(shí)現(xiàn)過(guò)程

上一篇:STM32CUBEMX開(kāi)發(fā)GD32F303(8)----USART收發(fā)配置
下一篇:STM32WB如何一次性燒寫(xiě)FUS+STACK+APP?

推薦閱讀最新更新時(shí)間:2025-06-26 13:03

STM32 UART配置中斷DMA傳輸
在處理UART數(shù)據(jù)的時(shí)候,DMA是一種非常靈活、高效的方式。 ※補(bǔ)記:USART_DR 串口數(shù)據(jù)寄存器是一個(gè)雙寄存器,包含了TDR和RDR,對(duì)它讀操作,讀取的是RDR寄存器的值,對(duì)它的寫(xiě)操作,實(shí)際上是寫(xiě)到TDR寄存器;當(dāng)向該寄存器寫(xiě)數(shù)據(jù)的時(shí)候,串口就會(huì)自動(dòng)發(fā)送,當(dāng)收到收據(jù)的時(shí)候,也是存在該寄存器內(nèi)。 關(guān)于讀寫(xiě): __STATIC_INLINE uint8_t LL_USART_ReceiveData8(USART_TypeDef *USARTx);/* 讀取接收寄存器USARTx_DR中8位數(shù)據(jù),接收即所得。返回值最大為0xFF 若使能校驗(yàn)位,接收的最高位MSB將由硬件自動(dòng)進(jìn)行校驗(yàn)。 */ __STATIC_IN
[單片機(jī)]
STM32 UART配置中斷<font color='red'>DMA</font><font color='red'>傳輸</font>
STM32定時(shí)器觸發(fā)DMA數(shù)據(jù)傳輸失敗的原因如何解決
有人使用STM32的定時(shí)器事件觸發(fā)DMA,讓其將內(nèi)存數(shù)據(jù)傳輸?shù)酵ㄐ磐庠O(shè)的數(shù)據(jù)寄存器進(jìn)行發(fā)送,發(fā)現(xiàn)DMA根本就不動(dòng)作。 比方以基于STM32F411的芯片為例,通過(guò)TIM3更新事件觸發(fā)DMA請(qǐng)求,DMA從內(nèi)存將數(shù)據(jù)送到SPI1?的數(shù)據(jù)寄存器,從而完成數(shù)據(jù)發(fā)送。 他采用CubeMx進(jìn)行配置。基本配置如下: ? 相關(guān)用戶實(shí)現(xiàn)代碼如下: 從配置過(guò)程和代碼實(shí)現(xiàn)來(lái)看,似乎都沒(méi)有問(wèn)題。那DMA怎么就是不動(dòng)作呢? 問(wèn)題出在我們使用上面的函數(shù)做DMA傳輸所關(guān)聯(lián)源端和目標(biāo)端時(shí),出現(xiàn)了想當(dāng)然的情況。 我們利用TIMER事件來(lái)作為DMA請(qǐng)求源時(shí),而作為數(shù)據(jù)傳輸?shù)脑炊嘶蚰康亩?,都是我們用戶指定的。這時(shí)就一定要注意源端和目標(biāo)端是當(dāng)前DMA
[單片機(jī)]
STM32定時(shí)器觸發(fā)<font color='red'>DMA</font>數(shù)據(jù)<font color='red'>傳輸</font>失敗的原因如何解決
英特爾積極采取行動(dòng),以實(shí)現(xiàn)在整個(gè)運(yùn)營(yíng)過(guò)程實(shí)現(xiàn)溫室氣體凈零排放
今年4月,英特爾首席執(zhí)行官帕特?基辛格宣布,計(jì)劃進(jìn)一步減少英特爾直接和間接溫室氣體排放,并開(kāi)發(fā)更多的可持續(xù)技術(shù)解決方案。英特爾承諾到2040年實(shí)現(xiàn)全球業(yè)務(wù)的實(shí)現(xiàn)溫室氣體凈零排放,提高英特爾產(chǎn)品和平臺(tái)的能源效率并減少“碳足跡”,同時(shí)與客戶和行業(yè)伙伴合作打造解決方案,幫助社區(qū)緩解和適應(yīng)氣候變化帶來(lái)的影響。 盡管對(duì)某些行業(yè)而言,一個(gè)近20年的目標(biāo)似乎很遙遠(yuǎn)。但對(duì)科技行業(yè)而言,技術(shù)開(kāi)發(fā)周期通常長(zhǎng)達(dá)10年,這意味著2040年近在眼前。在Ann Kelleher和Keyvan Esfarjani博士的領(lǐng)導(dǎo)下,技術(shù)開(kāi)發(fā)和制造供應(yīng)鏈及運(yùn)營(yíng)機(jī)構(gòu)已率先開(kāi)展在英特爾業(yè)務(wù)中實(shí)現(xiàn)溫室氣體凈零排放的關(guān)鍵工作。 英特爾公司執(zhí)行副總裁、技術(shù)開(kāi)發(fā)總經(jīng)理An
[工業(yè)控制]
STM32F4 USART1 TX RX FIFO
USART1 TX RX FIFO /* ********************************************************************************************************* * * 模塊名稱 : 串口驅(qū)動(dòng)模塊 * 文件名稱 : bsp_uart.c * 版 本 : V1.0 * 說(shuō) 明 : 實(shí)現(xiàn)printf和scanf函數(shù)重定向到串口1,即支持printf信息到USART1 * 實(shí)現(xiàn)重定向,只需要添加2個(gè)函數(shù): * int fputc(int ch, FILE *f); * int fgetc(FILE
[單片機(jī)]
基于FPGA的MPEG-2復(fù)用器中FIFO的一種設(shè)計(jì)方案
????? 近幾年基于MPEC-2的DVB普通數(shù)字電視在美國(guó)、南美、亞洲、大洋洲和非洲通過(guò)衛(wèi)星進(jìn)行廣播。基于MPEG-2/DVB的多路節(jié)目復(fù)用器是數(shù)字電視傳輸系統(tǒng)的關(guān)鍵設(shè)備之一,因此,它的研發(fā)顯得尤為重要。 ???? 目前,復(fù)用器的設(shè)計(jì)方案主要基于DSP(數(shù)字信號(hào)處理器)的實(shí)現(xiàn)技術(shù),這種設(shè)計(jì)方法在理論上也能實(shí)現(xiàn)對(duì)傳送流的復(fù)用,考慮到實(shí)現(xiàn)復(fù)用器諸多高速、復(fù)雜的邏輯功能,同時(shí),F(xiàn)PGA(現(xiàn)場(chǎng)可編程門陣列)理論上可以無(wú)限次地重新配置,這樣在一定程度上為系統(tǒng)的升級(jí)或局部功能的改進(jìn)留下了余地。所以,從今后專用芯片的設(shè)計(jì)和開(kāi)發(fā)的角度來(lái)講,基于FPGA的設(shè)計(jì)無(wú)疑是最佳的選擇。本文提出了一套基于FPGA的復(fù)用器輸入部分的設(shè)計(jì)方案。 ???
[嵌入式]
基于TLK10002的 SERDES FIFO 溢出解決方案
分布式基站系統(tǒng)中,RRU 通常會(huì)通過(guò)光纖拉遠(yuǎn)實(shí)現(xiàn)與 BBU 的遠(yuǎn)程互聯(lián)。由于光纖自身的特性,傳輸過(guò)程中必然會(huì)引入抖動(dòng)和漂移;尤其是漂移,因其低頻特性,并且難于濾除,在SERDES 的 FIFO 深度不夠的情況下有可能會(huì)造成 FIFO 的溢出。   本文首先會(huì)對(duì)這個(gè)問(wèn)題進(jìn)行一般性地分析,在此基礎(chǔ)上我們將以德州儀器公司 10G SERDES 器件 TLK10002 為例,提出一個(gè)新的解決方案,即采用雙時(shí)鐘模式提供 SERDES系統(tǒng)時(shí)鐘,并且探討了這種模式的具體實(shí)現(xiàn)方式。同時(shí),為了驗(yàn)證雙時(shí)鐘方案的可行性,我們搭建了相應(yīng)的測(cè)試平臺(tái),并給出了相應(yīng)的測(cè)試結(jié)果。   1、光纖漂移引起的 SERDES FIFO 溢出問(wèn)題分析   1.1
[模擬電子]
基于TLK10002的 SERDES <font color='red'>FIFO</font> 溢出解決方案
一種因光纖漂移引起SERDES FIFO溢出的解決方案
摘要   分布式基站系統(tǒng)中,RRU 通常會(huì)通過(guò)光纖拉遠(yuǎn)實(shí)現(xiàn)與 BBU 的遠(yuǎn)程互聯(lián)。由于光纖自身的特性,傳輸過(guò)程中必然會(huì)引入抖動(dòng)和漂移;尤其是漂移,因其低頻特性,并且難于濾除,在SERDES 的 FIFO 深度不夠的情況下有可能會(huì)造成 FIFO 的溢出。   本文首先會(huì)對(duì)這個(gè)問(wèn)題進(jìn)行一般性地分析,在此基礎(chǔ)上我們將以德州儀器公司 10G SERDES 器件 TLK10002 為例,提出一個(gè)新的解決方案,即采用雙時(shí)鐘模式提供 SERDES系統(tǒng)時(shí)鐘,并且探討了這種模式的具體實(shí)現(xiàn)方式。同時(shí),為了驗(yàn)證雙時(shí)鐘方案的可行性,我們搭建了相應(yīng)的測(cè)試平臺(tái),并給出了相應(yīng)的測(cè)試結(jié)果。   1、 光纖漂移引起的 SERDES FIFO 溢出問(wèn)題分析
[模擬電子]
一種因光纖漂移引起SERDES <font color='red'>FIFO</font>溢出的解決方案
異步FIFO設(shè)計(jì)
??? 摘要: 本文介紹如何應(yīng)用美國(guó)QUICKLOGIC公司的QUICKRAM器件設(shè)計(jì)高速、高可靠異步FIFO(Asynchronous FIFO)。 ??? 關(guān)鍵詞: 異步FIFO ??? 異步FIFO廣泛地用于計(jì)算機(jī)網(wǎng)絡(luò)工業(yè)中進(jìn)行非同步數(shù)據(jù)傳送,這里的非同步指按一種速率發(fā)送而按另一速率接收。因此異步FIFO有兩個(gè)不同的時(shí)鐘,一個(gè)為讀同步時(shí)鐘,一個(gè)為寫(xiě)同步時(shí)鐘。 ??? 當(dāng)數(shù)據(jù)從一個(gè)時(shí)鐘驅(qū)動(dòng)的模塊進(jìn)入另一個(gè)時(shí)鐘驅(qū)動(dòng)的模塊時(shí),一個(gè)需仔細(xì)解決的問(wèn)題就出現(xiàn)了。例如當(dāng)寫(xiě)時(shí)鐘比讀時(shí)鐘快時(shí),未讀走數(shù)據(jù)有可能被新數(shù)據(jù)覆蓋,因而導(dǎo)致數(shù)據(jù)丟失。為了解決這個(gè)問(wèn)題,就必須增加一些控制信號(hào)和狀態(tài)信號(hào),控制信號(hào)如pusb、
[網(wǎng)絡(luò)通信]
小廣播
設(shè)計(jì)資源 培訓(xùn) 開(kāi)發(fā)板 精華推薦

最新單片機(jī)文章

 
EEWorld訂閱號(hào)

 
EEWorld服務(wù)號(hào)

 
汽車開(kāi)發(fā)圈

 
機(jī)器人開(kāi)發(fā)圈

電子工程世界版權(quán)所有 京ICP證060456號(hào) 京ICP備10001474號(hào)-1 電信業(yè)務(wù)審批[2006]字第258號(hào)函 京公網(wǎng)安備 11010802033920號(hào) Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved