[導(dǎo)讀]來源:https://blog.csdn.net/qq_205536131前言前面講解過什么是DMA?STM32如何配置DMA?,今天和大家分享DMA實(shí)現(xiàn)串口數(shù)據(jù)的收發(fā)。直接存儲器訪問(DirectMemoryAccess),簡稱DMA。DMA是CPU一個用于數(shù)據(jù)從一個地址空間到...
來源:https://blog.csdn.net/qq_205536131 前言
前面講解過什么是DMA? STM32如何配置DMA?,今天和大家分享DMA實(shí)現(xiàn)串口數(shù)據(jù)的收發(fā)。直接存儲器訪問(Direct Memory Access),簡稱DMA。DMA是CPU一個用于數(shù)據(jù)從一個地址空間到另一地址空間“搬運(yùn)”(拷貝)的組件,數(shù)據(jù)拷貝過程不需CPU干預(yù),數(shù)據(jù)拷貝結(jié)束則通知CPU處理。因此,大量數(shù)據(jù)拷貝時,使用DMA可以釋放CPU資源。DMA數(shù)據(jù)拷貝過程,典型的有:- 內(nèi)存—>內(nèi)存,內(nèi)存間拷貝
- 外設(shè)—>內(nèi)存,如uart、spi、i2c等總線接收數(shù)據(jù)過程
- 內(nèi)存—>外設(shè),如uart、spi、i2c等總線發(fā)送數(shù)據(jù)過程
2 串口有必要使用DMA嗎
串口(uart)是一種低速的串行異步通信,適用于低速通信場景,通常使用的波特率小于或等于115200bps。對于小于或者等于115200bps波特率的,而且數(shù)據(jù)量不大的通信場景,一般沒必要使用DMA,或者說使用DMA并未能充分發(fā)揮出DMA的作用。對于數(shù)量大,或者波特率提高時,必須使用DMA以釋放CPU資源,因?yàn)楦卟ㄌ芈士赡軒磉@樣的問題:- 對于發(fā)送,使用循環(huán)發(fā)送,可能阻塞線程,需要消耗大量CPU資源“搬運(yùn)”數(shù)據(jù),浪費(fèi)CPU
- 對于發(fā)送,使用中斷發(fā)送,不會阻塞線程,但需浪費(fèi)大量中斷資源,CPU頻繁響應(yīng)中斷;以115200bps波特率,1s傳輸11520字節(jié),大約69us需響應(yīng)一次中斷,如波特率再提高,將消耗更多CPU資源
- 對于接收,如仍采用傳統(tǒng)的中斷模式接收,同樣會因?yàn)轭l繁中斷導(dǎo)致消耗大量CPU資源
因此,高波特率場景下,串口非常有必要使用DMA。3 實(shí)現(xiàn)方式
關(guān)于STM32串口使用DMA,不乏一些開發(fā)板例程及網(wǎng)絡(luò)上一些博主的使用教程。使用步驟、流程、配置基本大同小異,正確性也沒什么毛病,但都是一些基本的Demo例子,作為學(xué)習(xí)過程沒問題;實(shí)際項(xiàng)目使用缺乏嚴(yán)謹(jǐn)性,數(shù)據(jù)量大時可能導(dǎo)致數(shù)據(jù)異常。測試平臺:- STM32F030C8T6
- UART1/UART2
- DMA1 Channel2—Channel5
- ST標(biāo)準(zhǔn)庫
- 主頻48MHz(外部12MHz晶振)
5 串口DMA接收
5.1 基本流程
5.2 相關(guān)配置
關(guān)鍵步驟【1】初始化串口【2】使能串口DMA接收模式,使能串口空閑中斷【3】配置DMA參數(shù),使能DMA通道buf半滿(傳輸一半數(shù)據(jù))中斷、buf溢滿(傳輸數(shù)據(jù)完成)中斷為什么需要使用DMA 通道buf半滿中斷?很多串口DMA模式接收的教程、例子,基本是使用了“空間中斷” “DMA傳輸完成中斷”來接收數(shù)據(jù)。實(shí)質(zhì)上這是存在風(fēng)險的,當(dāng)DMA傳輸數(shù)據(jù)完成,CPU介入開始拷貝DMA通道buf數(shù)據(jù),如果此時串口繼續(xù)有數(shù)據(jù)進(jìn)來,DMA繼續(xù)搬運(yùn)數(shù)據(jù)到buf,就有可能將數(shù)據(jù)覆蓋,因?yàn)镈MA數(shù)據(jù)搬運(yùn)是不受CPU控制的,即使你關(guān)閉了CPU中斷。嚴(yán)謹(jǐn)?shù)淖龇ㄐ枰鲭pbuf,CPU和DMA各自一塊內(nèi)存交替訪問,即是"乒乓緩存” ,處理流程步驟應(yīng)該是這樣:【1】第一步,DMA先將數(shù)據(jù)搬運(yùn)到buf1,搬運(yùn)完成通知CPU來拷貝buf1數(shù)據(jù) 【2】第二步,DMA將數(shù)據(jù)搬運(yùn)到buf2,與CPU拷貝buf1數(shù)據(jù)不會沖突 【3】第三步,buf2數(shù)據(jù)搬運(yùn)完成,通知CPU來拷貝buf2數(shù)據(jù) 【4】執(zhí)行完第三步,DMA返回執(zhí)行第一步,一直循環(huán)STM32F0系列DMA不支持雙緩存(以具體型號為準(zhǔn))機(jī)制,但提供了一個buf"半滿中斷"
,即是數(shù)據(jù)搬運(yùn)到buf大小的一半時,可以產(chǎn)生一個中斷信號?;谶@個機(jī)制,我們可以實(shí)現(xiàn)雙緩存功能,只需將buf空間開辟大一點(diǎn)即可。【1】第一步,DMA將數(shù)據(jù)搬運(yùn)完成buf的前一半時,產(chǎn)生“半滿中斷”,CPU來拷貝buf前半部分?jǐn)?shù)據(jù) 【2】第二步,DMA繼續(xù)將數(shù)據(jù)搬運(yùn)到buf的后半部分,與CPU拷貝buf前半部數(shù)據(jù)不會沖突 【3】第三步,buf后半部分?jǐn)?shù)據(jù)搬運(yùn)完成,觸發(fā)“溢滿中斷”,CPU來拷貝buf后半部分?jǐn)?shù)據(jù) 【4】執(zhí)行完第三步,DMA返回執(zhí)行第一步,一直循環(huán)UART2 DMA模式接收配置代碼如下,與其他外設(shè)使用DMA的配置基本一致,留意關(guān)鍵配置:- 串口接收,DMA通道工作模式設(shè)為連續(xù)模式
- 使能DMA通道接收buf半滿中斷、溢滿(傳輸完成)中斷
- 啟動DMA通道前清空相關(guān)狀態(tài)標(biāo)識,防止首次傳輸錯亂數(shù)據(jù)
void?bsp_uart2_dmarx_config(uint8_t?*mem_addr,?uint32_t?mem_size)
{
???DMA_InitTypeDef?DMA_InitStructure;
?
?DMA_DeInit(DMA1_Channel5);?
?DMA_Cmd(DMA1_Channel5,?DISABLE);
?DMA_InitStructure.DMA_PeripheralBaseAddr??=?(uint32_t)
本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
《帶得走的智能制造》暑期課程圓滿落幕 北京2025年7月25日 /美通社/ -- 近日,由國際獨(dú)立第三方檢測、檢驗(yàn)和認(rèn)證機(jī)構(gòu)德國萊茵TÜV大中華區(qū)(以下簡稱"TÜV萊茵")與北京...
關(guān)鍵字:
智能制造
BSP
DMA
信息安全
在實(shí)時控制系統(tǒng)、高速通信協(xié)議處理及高精度數(shù)據(jù)采集等對時間敏感的應(yīng)用場景中,中斷響應(yīng)延遲的優(yōu)化直接決定了系統(tǒng)的可靠性與性能上限。STM32系列微控制器憑借其靈活的嵌套向量中斷控制器(NVIC)、多通道直接內(nèi)存訪問(DMA)...
關(guān)鍵字:
STM32
DMA
在嵌入式系統(tǒng)、網(wǎng)絡(luò)通信等對數(shù)據(jù)傳輸效率要求極高的場景中,零拷貝技術(shù)能夠顯著減少數(shù)據(jù)在內(nèi)存中的拷貝次數(shù),降低CPU負(fù)載,提高系統(tǒng)性能。DMA(直接內(nèi)存訪問)環(huán)形緩沖區(qū)與內(nèi)存池相結(jié)合的雙重優(yōu)化策略,為實(shí)現(xiàn)高效的零拷貝數(shù)據(jù)傳輸...
關(guān)鍵字:
零拷貝
DMA
嵌入式系統(tǒng)
STM32單片機(jī)憑借其高性能、低功耗、豐富的外設(shè)資源等優(yōu)勢,在工業(yè)控制、消費(fèi)電子、汽車電子等領(lǐng)域得到了廣泛應(yīng)用。在嵌入式系統(tǒng)開發(fā)中,高效的數(shù)據(jù)處理和傳輸至關(guān)重要。中斷技術(shù)和DMA技術(shù)作為STM32單片機(jī)中重要的數(shù)據(jù)處理和...
關(guān)鍵字:
STM32
DMA
在嵌入式系統(tǒng)中,隨著數(shù)據(jù)量的不斷增加和實(shí)時性要求的提高,傳統(tǒng)的CPU直接控制數(shù)據(jù)傳輸?shù)姆绞街饾u暴露出效率低下的問題。為了應(yīng)對這一挑戰(zhàn),直接內(nèi)存訪問(Direct Memory Access,DMA)技術(shù)應(yīng)運(yùn)而生,成為實(shí)現(xiàn)...
關(guān)鍵字:
DMA
嵌入式系統(tǒng)
高速數(shù)據(jù)傳輸
廣州2025年1月21日 /美通社/ -- 在數(shù)字營銷領(lǐng)域快速發(fā)展的今天,每一場行業(yè)盛會都預(yù)示著新的轉(zhuǎn)折與機(jī)遇。2025年1月10日,由DMAA數(shù)字營銷獎主辦,廣州4A聯(lián)合主辦,廣州市廣告行業(yè)協(xié)會指導(dǎo)的第八屆DMAA國際...
關(guān)鍵字:
DMA
AI
AI技術(shù)
創(chuàng)始人
在現(xiàn)代計(jì)算機(jī)系統(tǒng)中,直接內(nèi)存訪問(DMA)技術(shù)被廣泛應(yīng)用于高速數(shù)據(jù)傳輸,其核心理念在于讓數(shù)據(jù)傳輸不再依賴CPU的參與,從而釋放CPU資源以處理其他任務(wù)。然而,在DMA操作完成后,系統(tǒng)需要一種機(jī)制來檢測DMA傳輸是否已完成...
關(guān)鍵字:
DMA
CPU
輪詢檢測
之前有個同事因?yàn)橛么诓樵兎绞桨l(fā)送數(shù)據(jù),被我說了一頓,明明有DMA資源,竟然放著不用,對于魚鷹這種性能強(qiáng)迫癥來說,肯定無法忍受,所以當(dāng)時就和他說,有時間你把它改一下。誰知道過了好幾個月他才有時間弄這個,然后還是出了問題,...
關(guān)鍵字:
DMA
串口
UART(Universal Asynchronous Receiver/Transmitter,通用異步收發(fā)器)是一種常用的串行通信協(xié)議,廣泛應(yīng)用于單片機(jī)或各種嵌入式設(shè)備之間的通信。
關(guān)鍵字:
UART
DMA
轉(zhuǎn)移數(shù)據(jù)(尤其是轉(zhuǎn)移大量數(shù)據(jù))是可以不需要CPU參與。比如希望外設(shè)A的數(shù)據(jù)拷貝到外設(shè)B,
關(guān)鍵字:
CPU
DMA
數(shù)據(jù)通路
北京2023年8月31日 /美通社/ -- 8月30日,由中共河曲縣委、河曲縣人民政府主辦,中共河曲縣委宣傳部、河曲縣文化和旅游局、保利樂享文娛科技(北京)有限公司承辦的"河清盛世,曲著華章"2023...
關(guān)鍵字:
3D建模
BSP
DMA
MAPPING
北京2023年8月9日 /美通社/ -- 浪潮云海經(jīng)過13年的發(fā)展,到今天形成了以服務(wù)器虛擬化、超融合、InCloudOS 為代表的云海產(chǎn)品家族,憑借領(lǐng)先的產(chǎn)品技術(shù)能力和豐富的行業(yè)實(shí)踐,滿足不同行業(yè)、場景下客戶的上云需求...
關(guān)鍵字:
DMA
虛擬化
軟硬件
CPU
北京2023年2月20日 /美通社/ -- 在經(jīng)濟(jì)領(lǐng)域有著重要影響力的CFS財(cái)經(jīng)峰會2023第十二屆活動定于今年7月舉行,活動主題為"激活高質(zhì)量發(fā)展澎湃活力"。 今年的財(cái)經(jīng)峰會將以線下為主,線上結(jié)合...
關(guān)鍵字:
數(shù)字化
智能制造
數(shù)字經(jīng)濟(jì)
DMA
Mixpanel現(xiàn)已在GoogleCloudMarketplace上提供。Mixpanel功能強(qiáng)大、易于使用的產(chǎn)品分析解決方案可向產(chǎn)品團(tuán)隊(duì)展示對于其產(chǎn)品有效和無效的舉措,讓團(tuán)隊(duì)更便捷地訪問數(shù)據(jù),并幫助他們優(yōu)先考慮其路線圖...
關(guān)鍵字:
PANEL
MIX
GOOGLE
DMA
高盛集團(tuán)(Goldman Sachs Group)周二證實(shí)了一項(xiàng)全面重組計(jì)劃,這是該公司歷史上最大的改革舉措之一。高盛將把其交易和投行業(yè)務(wù)合并為一個部門,使該行從四個部門縮減至三個部門,縮減進(jìn)軍零售銀行業(yè)務(wù)的努力,專注于...
關(guān)鍵字:
DMA
GROUP
GO
AN
SWM32S單片機(jī)有1個SDIO接口,支持多媒體卡(MMC)、SD 存儲卡、SDIO 卡等設(shè)備,可以使用軟件方法或者 DMA 方法(SDIO 模塊內(nèi)部 DMA,與芯片 DMA 模塊無關(guān))進(jìn)行數(shù)據(jù)傳輸。
關(guān)鍵字:
SWM32S單片機(jī)
SDIO
DMA
標(biāo)普500指數(shù)今年迄今為止下跌22.7%,但高盛(Goldman Sachs)策略師認(rèn)為估值依然太高。摩根士丹利旗下的Morgan Stanley Wealth Management稱,面對高通脹環(huán)境下的利率大幅上升,股...
關(guān)鍵字:
DMA
MANAGEMENT
ST
高盛集團(tuán)(Goldman Sachs Group)計(jì)劃將其最大的業(yè)務(wù)合并為三個部門,進(jìn)行該華爾街公司歷史上最大的一次業(yè)務(wù)重組。高盛將把其旗艦投行業(yè)務(wù)和交易業(yè)務(wù)合并為一個部門,同時將資產(chǎn)管理和財(cái)富管理業(yè)務(wù)合并為另一個部門。...
關(guān)鍵字:
APPLE
DMA
GENERAL
GREEN
北京2022年8月8日 /美通社/ -- 8月8日,由百事公司大中華區(qū)(簡稱"百事公司") 聯(lián)合物美集團(tuán)、多點(diǎn)Dmall以及中國鄉(xiāng)村發(fā)展基金會共同發(fā)起的"物美興農(nóng)·多點(diǎn)樂事&q...
關(guān)鍵字:
MIDDOT
數(shù)字化
COO
DMA
武漢2022年7月27日 /美通社/ -- 7月25日,日立電梯聯(lián)合越秀商投,在武漢越秀財(cái)富中心開展 "Landmark云端智同行"活動?;顒由?,日立電梯工程師為用戶現(xiàn)場講解電梯原理,并在寫字樓內(nèi)布置...
關(guān)鍵字:
DMA
LAN
MARK
日立