電子發(fā)燒友App

硬聲App

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

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

3天內(nèi)不再提示
創(chuàng)作
電子發(fā)燒友網(wǎng)>電子資料下載>工控技術(shù)>STM32串口DMA容易忽視的問題資料下載

STM32串口DMA容易忽視的問題資料下載

2021-04-16 | pdf | 154.13KB | 次下載 | 2積分

資料介紹

博主昨天晚上在STM32串口DMA的問題上糾結(jié)了好長時間,所以今天上午寫篇博客來談?wù)勎覍Υ贒MA發(fā)送的理解→_→今天主要討論三個問題:1、什么叫串口DMA 請求;2、串口簡要復(fù)習(xí);3、串口DMA發(fā)送流程。1、什么叫串口DMA 請求(博主用的是戰(zhàn)艦STM32開發(fā)板)說這個問題之前先簡單回顧DMA的基本特性。先導(dǎo)出原子哥的PPT內(nèi)容:DMA全稱Direct Memory Access,即直接存儲器訪問。DMA傳輸將數(shù)據(jù)從一個地址空間復(fù)制到另一個地址空間。當(dāng)CPU初始化這個傳輸動作,傳輸動作本身是由DMA控制器來實現(xiàn)和完成的。STM32有兩個DMA控制器(DMA2只存在于大容量產(chǎn)品中),DMA1有7個通道,DMA2有5個通道,每個通道專門用來管理來自于一個或者多個外設(shè)對存儲器的訪問請求。還有一個仲裁器來協(xié)調(diào)各個DMA請求的優(yōu)先權(quán)。作用:為CPU減負(fù)!下面上圖→_→DMA各通道從外設(shè)(TIMx、ADCx、SPIx、I2Cx、和USARTx)產(chǎn)生的DMA請求,通過邏輯或輸入到DMA控制器,這就意味著同時只能有一個請求有效(在同一時間,就只能使用其中的一個,其他通道也類似)。外設(shè)的DMA請求,可以通過設(shè)置相應(yīng)的外設(shè)寄存器中的控制位,被獨立的開啟或關(guān)閉??吹竭@里串口DMA請求的定義就出來了:先舉個例子:譬如我想用串口發(fā)送數(shù)據(jù)到PC機(jī),一般做法是CPU通過APB1/APB2總線往串口寫數(shù)據(jù),然后串口發(fā)送;或者是CPU通過總線從串口?。ㄗx)數(shù)據(jù);如果此時CPU處理的任務(wù)非常多,這就會耗費CPU的處理時間。而我們?nèi)绻肈MA來傳送數(shù)據(jù)那就很快了,DMA會通過自己的特定通道將數(shù)據(jù)從一個地址空間復(fù)制到另一個地址空間,而且不需要CPU的干預(yù)。所以串口DMA請求的定義是:串口要發(fā)送/接收數(shù)據(jù)會請求DMA來完成數(shù)據(jù)的寫和讀。(注意這句話只針對本文!)2、串口簡要復(fù)習(xí)(博主用的是戰(zhàn)艦庫函數(shù))本來想給讀者準(zhǔn)備個帖子,關(guān)于printf重定向和半主機(jī)模式的講解,但是鏈接發(fā)不了。只能讀者自己去搜索了。。。這里簡要復(fù)習(xí)一下戰(zhàn)艦STM32串口的知識點。舉個例子:我想用PC機(jī)往STM32串口發(fā)送個數(shù)據(jù),然后STM32接收到后將數(shù)據(jù)原樣返回給PC機(jī)(顯示在串口調(diào)試助手中)。下面來給大家屢下思路→_→首先我們會在串口初始化函數(shù)中配置串口接收中斷,當(dāng)你PC機(jī)往串口發(fā)送數(shù)據(jù)時,串口會產(chǎn)生接收中斷;并在中斷服務(wù)函數(shù)中,判斷接沒接收完,如果接收完畢就會把接收狀態(tài)寄存器的接收完成標(biāo)志位置1。到這兒是接收中斷的作用。。然后在主函數(shù)中,我們不斷檢測接收狀態(tài)寄存器的接收完成標(biāo)志,看接沒接收完。如果接收完了,就通過for循環(huán)將接收到的數(shù)據(jù),全部發(fā)給串口的USART_DR寄存器(當(dāng)向該寄存器寫數(shù)據(jù)時,串口就會自動發(fā)送)。于是我們通過PC機(jī)發(fā)給串口的數(shù)據(jù)就會被STM32通過串口發(fā)回來了,顯示在串口調(diào)試助手中。3、串口DMA發(fā)送流程(博主用的是戰(zhàn)艦STM32庫函數(shù))戰(zhàn)艦實驗:通過按鍵KEY0來控制DMA發(fā)送,每按一次KEY0,DMA就傳送一次數(shù)據(jù)到USART1,然后在TFTLCD模塊上顯示進(jìn)度信息。這個現(xiàn)在理解就不難了吧。。。來,博主給讀者屢一下思路→_→從主函數(shù)入手!首先我們在STM32的SRAM中開辟一段5200(這個數(shù)字越大DMA傳輸越慢,反之越快)字節(jié)的空間SendBuff[],作為我們的存儲器(內(nèi)存),存儲要往外設(shè)(USART1)發(fā)送的數(shù)據(jù)。然后我們在SendBuff[]中寫滿TEXT_TO_SEND[]里的內(nèi)容。這里戰(zhàn)艦往SendBuff[]里寫的算法非常巧妙,應(yīng)該學(xué)習(xí);(讀者有興趣可以自己上網(wǎng)上搜索戰(zhàn)艦STM32第26章實驗--DMA實驗)現(xiàn)在SendBuff[]中已經(jīng)存滿了要發(fā)送給串口的數(shù)據(jù)。這時我們還要檢測KEY0有沒有按下,如果按下了,就通過兩個函數(shù):1、使能串口發(fā)送(在STM32庫函數(shù)stm32f10x_usart.c中,配置USART_CR3中的DMA使能位DMAT);2、使能DMA1通道4,啟動傳輸(在dam.c中,最后也是調(diào)用了stm32f10x_dma.c中的DMA_Cmd();函數(shù)來使能通道)。加上之前(本文沒有)對DMA參數(shù)的初始化(初始化存儲器和外設(shè)基地址等),就可以啟動一次傳輸了。如果讀者對傳輸時間感興趣或有疑問,博主給大家點一下,非常簡單的計算。傳輸時間將跟波特率密切相關(guān)。比如波特率是9600,意思就是每秒鐘發(fā)送或接受的速率為9600bit/s,8bit=1Byte(字節(jié)),故當(dāng)波特率為9600時,串口的傳輸速率為1200字節(jié)每秒。上文我們申請的存儲器(內(nèi)存)空間是5200字節(jié),故串口要傳輸完這個大小的空間內(nèi)容內(nèi)容,預(yù)計需要5200/1200約4秒多。。。這個很簡單啊!講到這里,不知道讀者聽沒聽懂,反正我表述的不是很清楚→_→讀者可以調(diào)試代碼,觀察現(xiàn)象。作者:后起(mbbeetchina)
下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評論

查看更多

下載排行

本周

  1. 1TC358743XBG評估板參考手冊
  2. 1.36 MB  |  330次下載  |  免費
  3. 2開關(guān)電源基礎(chǔ)知識
  4. 5.73 MB  |  11次下載  |  免費
  5. 3100W短波放大電路圖
  6. 0.05 MB  |  4次下載  |  3 積分
  7. 4嵌入式linux-聊天程序設(shè)計
  8. 0.60 MB  |  3次下載  |  免費
  9. 5DIY動手組裝LED電子顯示屏
  10. 0.98 MB  |  3次下載  |  免費
  11. 6基于FPGA的C8051F單片機(jī)開發(fā)板設(shè)計
  12. 0.70 MB  |  2次下載  |  免費
  13. 751單片機(jī)PM2.5檢測系統(tǒng)程序
  14. 0.83 MB  |  2次下載  |  免費
  15. 8基于51單片機(jī)的RGB調(diào)色燈程序仿真
  16. 0.86 MB  |  2次下載  |  免費

本月

  1. 1OrCAD10.5下載OrCAD10.5中文版軟件
  2. 0.00 MB  |  234315次下載  |  免費
  3. 2555集成電路應(yīng)用800例(新編版)
  4. 0.00 MB  |  33566次下載  |  免費
  5. 3接口電路圖大全
  6. 未知  |  30323次下載  |  免費
  7. 4開關(guān)電源設(shè)計實例指南
  8. 未知  |  21549次下載  |  免費
  9. 5電氣工程師手冊免費下載(新編第二版pdf電子書)
  10. 0.00 MB  |  15349次下載  |  免費
  11. 6數(shù)字電路基礎(chǔ)pdf(下載)
  12. 未知  |  13750次下載  |  免費
  13. 7電子制作實例集錦 下載
  14. 未知  |  8113次下載  |  免費
  15. 8《LED驅(qū)動電路設(shè)計》 溫德爾著
  16. 0.00 MB  |  6656次下載  |  免費

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935054次下載  |  免費
  3. 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
  4. 78.1 MB  |  537797次下載  |  免費
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420027次下載  |  免費
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234315次下載  |  免費
  9. 5Altium DXP2002下載入口
  10. 未知  |  233046次下載  |  免費
  11. 6電路仿真軟件multisim 10.0免費下載
  12. 340992  |  191186次下載  |  免費
  13. 7十天學(xué)會AVR單片機(jī)與C語言視頻教程 下載
  14. 158M  |  183279次下載  |  免費
  15. 8proe5.0野火版下載(中文版免費下載)
  16. 未知  |  138040次下載  |  免費