資料介紹
博主昨天晚上在STM32串口DMA的問(wèn)題上糾結(jié)了好長(zhǎng)時(shí)間,所以今天上午寫篇博客來(lái)談?wù)勎覍?duì)串口DMA發(fā)送的理解→_→今天主要討論三個(gè)問(wèn)題:1、什么叫串口DMA 請(qǐng)求;2、串口簡(jiǎn)要復(fù)習(xí);3、串口DMA發(fā)送流程。1、什么叫串口DMA 請(qǐng)求(博主用的是戰(zhàn)艦STM32開(kāi)發(fā)板)說(shuō)這個(gè)問(wèn)題之前先簡(jiǎn)單回顧DMA的基本特性。先導(dǎo)出原子哥的PPT內(nèi)容:DMA全稱Direct Memory Access,即直接存儲(chǔ)器訪問(wèn)。DMA傳輸將數(shù)據(jù)從一個(gè)地址空間復(fù)制到另一個(gè)地址空間。當(dāng)CPU初始化這個(gè)傳輸動(dòng)作,傳輸動(dòng)作本身是由DMA控制器來(lái)實(shí)現(xiàn)和完成的。STM32有兩個(gè)DMA控制器(DMA2只存在于大容量產(chǎn)品中),DMA1有7個(gè)通道,DMA2有5個(gè)通道,每個(gè)通道專門用來(lái)管理來(lái)自于一個(gè)或者多個(gè)外設(shè)對(duì)存儲(chǔ)器的訪問(wèn)請(qǐng)求。還有一個(gè)仲裁器來(lái)協(xié)調(diào)各個(gè)DMA請(qǐng)求的優(yōu)先權(quán)。作用:為CPU減負(fù)!下面上圖→_→DMA各通道從外設(shè)(TIMx、ADCx、SPIx、I2Cx、和USARTx)產(chǎn)生的DMA請(qǐng)求,通過(guò)邏輯或輸入到DMA控制器,這就意味著同時(shí)只能有一個(gè)請(qǐng)求有效(在同一時(shí)間,就只能使用其中的一個(gè),其他通道也類似)。外設(shè)的DMA請(qǐng)求,可以通過(guò)設(shè)置相應(yīng)的外設(shè)寄存器中的控制位,被獨(dú)立的開(kāi)啟或關(guān)閉??吹竭@里串口DMA請(qǐng)求的定義就出來(lái)了:先舉個(gè)例子:譬如我想用串口發(fā)送數(shù)據(jù)到PC機(jī),一般做法是CPU通過(guò)APB1/APB2總線往串口寫數(shù)據(jù),然后串口發(fā)送;或者是CPU通過(guò)總線從串口?。ㄗx)數(shù)據(jù);如果此時(shí)CPU處理的任務(wù)非常多,這就會(huì)耗費(fèi)CPU的處理時(shí)間。而我們?nèi)绻肈MA來(lái)傳送數(shù)據(jù)那就很快了,DMA會(huì)通過(guò)自己的特定通道將數(shù)據(jù)從一個(gè)地址空間復(fù)制到另一個(gè)地址空間,而且不需要CPU的干預(yù)。所以串口DMA請(qǐng)求的定義是:串口要發(fā)送/接收數(shù)據(jù)會(huì)請(qǐng)求DMA來(lái)完成數(shù)據(jù)的寫和讀。(注意這句話只針對(duì)本文?。?、串口簡(jiǎn)要復(fù)習(xí)(博主用的是戰(zhàn)艦庫(kù)函數(shù))本來(lái)想給讀者準(zhǔn)備個(gè)帖子,關(guān)于printf重定向和半主機(jī)模式的講解,但是鏈接發(fā)不了。只能讀者自己去搜索了。。。這里簡(jiǎn)要復(fù)習(xí)一下戰(zhàn)艦STM32串口的知識(shí)點(diǎn)。舉個(gè)例子:我想用PC機(jī)往STM32串口發(fā)送個(gè)數(shù)據(jù),然后STM32接收到后將數(shù)據(jù)原樣返回給PC機(jī)(顯示在串口調(diào)試助手中)。下面來(lái)給大家屢下思路→_→首先我們會(huì)在串口初始化函數(shù)中配置串口接收中斷,當(dāng)你PC機(jī)往串口發(fā)送數(shù)據(jù)時(shí),串口會(huì)產(chǎn)生接收中斷;并在中斷服務(wù)函數(shù)中,判斷接沒(méi)接收完,如果接收完畢就會(huì)把接收狀態(tài)寄存器的接收完成標(biāo)志位置1。到這兒是接收中斷的作用。。然后在主函數(shù)中,我們不斷檢測(cè)接收狀態(tài)寄存器的接收完成標(biāo)志,看接沒(méi)接收完。如果接收完了,就通過(guò)for循環(huán)將接收到的數(shù)據(jù),全部發(fā)給串口的USART_DR寄存器(當(dāng)向該寄存器寫數(shù)據(jù)時(shí),串口就會(huì)自動(dòng)發(fā)送)。于是我們通過(guò)PC機(jī)發(fā)給串口的數(shù)據(jù)就會(huì)被STM32通過(guò)串口發(fā)回來(lái)了,顯示在串口調(diào)試助手中。3、串口DMA發(fā)送流程(博主用的是戰(zhàn)艦STM32庫(kù)函數(shù))戰(zhàn)艦實(shí)驗(yàn):通過(guò)按鍵KEY0來(lái)控制DMA發(fā)送,每按一次KEY0,DMA就傳送一次數(shù)據(jù)到USART1,然后在TFTLCD模塊上顯示進(jìn)度信息。這個(gè)現(xiàn)在理解就不難了吧。。。來(lái),博主給讀者屢一下思路→_→從主函數(shù)入手!首先我們?cè)赟TM32的SRAM中開(kāi)辟一段5200(這個(gè)數(shù)字越大DMA傳輸越慢,反之越快)字節(jié)的空間SendBuff[],作為我們的存儲(chǔ)器(內(nèi)存),存儲(chǔ)要往外設(shè)(USART1)發(fā)送的數(shù)據(jù)。然后我們?cè)赟endBuff[]中寫滿TEXT_TO_SEND[]里的內(nèi)容。這里戰(zhàn)艦往SendBuff[]里寫的算法非常巧妙,應(yīng)該學(xué)習(xí);(讀者有興趣可以自己上網(wǎng)上搜索戰(zhàn)艦STM32第26章實(shí)驗(yàn)--DMA實(shí)驗(yàn))現(xiàn)在SendBuff[]中已經(jīng)存滿了要發(fā)送給串口的數(shù)據(jù)。這時(shí)我們還要檢測(cè)KEY0有沒(méi)有按下,如果按下了,就通過(guò)兩個(gè)函數(shù):1、使能串口發(fā)送(在STM32庫(kù)函數(shù)stm32f10x_usart.c中,配置USART_CR3中的DMA使能位DMAT);2、使能DMA1通道4,啟動(dòng)傳輸(在dam.c中,最后也是調(diào)用了stm32f10x_dma.c中的DMA_Cmd();函數(shù)來(lái)使能通道)。加上之前(本文沒(méi)有)對(duì)DMA參數(shù)的初始化(初始化存儲(chǔ)器和外設(shè)基地址等),就可以啟動(dòng)一次傳輸了。如果讀者對(duì)傳輸時(shí)間感興趣或有疑問(wèn),博主給大家點(diǎn)一下,非常簡(jiǎn)單的計(jì)算。傳輸時(shí)間將跟波特率密切相關(guān)。比如波特率是9600,意思就是每秒鐘發(fā)送或接受的速率為9600bit/s,8bit=1Byte(字節(jié)),故當(dāng)波特率為9600時(shí),串口的傳輸速率為1200字節(jié)每秒。上文我們申請(qǐng)的存儲(chǔ)器(內(nèi)存)空間是5200字節(jié),故串口要傳輸完這個(gè)大小的空間內(nèi)容內(nèi)容,預(yù)計(jì)需要5200/1200約4秒多。。。這個(gè)很簡(jiǎn)單?。≈v到這里,不知道讀者聽(tīng)沒(méi)聽(tīng)懂,反正我表述的不是很清楚→_→讀者可以調(diào)試代碼,觀察現(xiàn)象。作者:后起(mbbeetchina)
下載該資料的人也在下載
下載該資料的人還在閱讀
更多 >
- STM32F105RBT6串口程序 7次下載
- STM32串口1通訊實(shí)驗(yàn)程序下載 83次下載
- stm32串口DMA數(shù)據(jù)接收不完整問(wèn)題說(shuō)明
- stm32串口
- STM32F407串口空閑中斷+DMA
- stm32串口代碼詳解
- STM32串口下載程序
- STM32串口DMA發(fā)送數(shù)據(jù)
- STM32串口下載程序
- 串口的循環(huán)隊(duì)列是什么?(以STM32串口為例)資料下載
- 通信接口背景知識(shí)與STM32串口原理資料下載
- STM32串口下載軟件應(yīng)用程序免費(fèi)下載 7次下載
- STM32串口下載軟件FLYMCU免費(fèi)下載 33次下載
- ISP下載器MCUISP用于STM32串口下載程序的應(yīng)用程序免費(fèi)下載 23次下載
- stm32串口調(diào)試軟件 6次下載
- ZDP1440串口屏應(yīng)用開(kāi)發(fā)如何使用虛擬串口調(diào)試 1407次閱讀
- STM32串口發(fā)送數(shù)據(jù)和接收數(shù)據(jù)方式總結(jié) 6573次閱讀
- 關(guān)于STM32串口使用DMA的教程 2816次閱讀
- STM32串口DMA接收與發(fā)送 1w次閱讀
- stm32串口奇偶校驗(yàn) 1w次閱讀
- 天嵌科技TTL轉(zhuǎn)RS232串口-串口模塊簡(jiǎn)介 3461次閱讀
- 沁恒股份PCI總線四串口芯片: CH355概述 2222次閱讀
- 如何在STM32串口通信程序中使用printf發(fā)送數(shù)據(jù) 8025次閱讀
- 基于STM32單片機(jī)的串口使用解析 5158次閱讀
- STM32串口通信數(shù)據(jù)亂碼的相關(guān)問(wèn)題 1.1w次閱讀
- 基于STM32的串口DMA發(fā)送 2.1w次閱讀
- stm32串口通信用printf發(fā)送數(shù)據(jù)配置 4273次閱讀
- STM32串口DMA問(wèn)題詳解 8290次閱讀
- dm500串口刷機(jī)軟件img文件下載_教程完整版詳解 8360次閱讀
- 一種232串口轉(zhuǎn)紅外通訊的電路設(shè)計(jì) 6077次閱讀
下載排行
本周
- 1TC358743XBG評(píng)估板參考手冊(cè)
- 1.36 MB | 330次下載 | 免費(fèi)
- 2開(kāi)關(guān)電源基礎(chǔ)知識(shí)
- 5.73 MB | 11次下載 | 免費(fèi)
- 3100W短波放大電路圖
- 0.05 MB | 4次下載 | 3 積分
- 4嵌入式linux-聊天程序設(shè)計(jì)
- 0.60 MB | 3次下載 | 免費(fèi)
- 5DIY動(dòng)手組裝LED電子顯示屏
- 0.98 MB | 3次下載 | 免費(fèi)
- 6基于FPGA的C8051F單片機(jī)開(kāi)發(fā)板設(shè)計(jì)
- 0.70 MB | 2次下載 | 免費(fèi)
- 751單片機(jī)PM2.5檢測(cè)系統(tǒng)程序
- 0.83 MB | 2次下載 | 免費(fèi)
- 8基于51單片機(jī)的RGB調(diào)色燈程序仿真
- 0.86 MB | 2次下載 | 免費(fèi)
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 2555集成電路應(yīng)用800例(新編版)
- 0.00 MB | 33566次下載 | 免費(fèi)
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費(fèi)
- 4開(kāi)關(guān)電源設(shè)計(jì)實(shí)例指南
- 未知 | 21549次下載 | 免費(fèi)
- 5電氣工程師手冊(cè)免費(fèi)下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費(fèi)
- 6數(shù)字電路基礎(chǔ)pdf(下載)
- 未知 | 13750次下載 | 免費(fèi)
- 7電子制作實(shí)例集錦 下載
- 未知 | 8113次下載 | 免費(fèi)
- 8《LED驅(qū)動(dòng)電路設(shè)計(jì)》 溫德?tīng)栔?/a>
- 0.00 MB | 6656次下載 | 免費(fèi)
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費(fèi)
- 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
- 78.1 MB | 537797次下載 | 免費(fèi)
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420027次下載 | 免費(fèi)
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費(fèi)
- 6電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191186次下載 | 免費(fèi)
- 7十天學(xué)會(huì)AVR單片機(jī)與C語(yǔ)言視頻教程 下載
- 158M | 183279次下載 | 免費(fèi)
- 8proe5.0野火版下載(中文版免費(fèi)下載)
- 未知 | 138040次下載 | 免費(fèi)
評(píng)論
查看更多