電子發(fā)燒友App

硬聲App

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

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

3天內(nèi)不再提示
創(chuàng)作
電子發(fā)燒友網(wǎng)>電子資料下載>嵌入式開發(fā)>STM3 DMA相關(guān)概念及原理介紹資料下載

STM3 DMA相關(guān)概念及原理介紹資料下載

2021-04-27 | pdf | 1.4MB | 次下載 | 2積分

資料介紹

第一次接觸DMA是在學(xué)校學(xué)習(xí)ARM9裸板程序的時(shí)候,想起來都時(shí)隔快2年了。現(xiàn)在來看看STM32平臺(tái)的DMA,一樣,在標(biāo)準(zhǔn)外設(shè)庫的支持下,STM32的DMA編程十分簡(jiǎn)單,但是既是學(xué)習(xí),那還是花點(diǎn)時(shí)間看看DMA的相關(guān)概念及原理的了解下。 1. DMA簡(jiǎn)介 DMA是Direct Memory Access的簡(jiǎn)稱,是直接存儲(chǔ)器訪問的意思。DMA是STM32單片機(jī)的外設(shè)之一,主要功能是用來搬移數(shù)據(jù)的。通過DMA搬移數(shù)據(jù)不需要CPU直接參與控制,也不需要中斷處理方式那樣保留現(xiàn)場(chǎng)和恢復(fù)現(xiàn)場(chǎng)。在傳輸數(shù)據(jù)的時(shí)候,CPU可以干其他事情。 無使用DMA的數(shù)據(jù)傳輸: 使用DMA后的數(shù)據(jù)傳輸: DMA數(shù)據(jù)傳輸支持從外設(shè)到存儲(chǔ)器、存儲(chǔ)器到外設(shè)、存儲(chǔ)器到存儲(chǔ)器(這里所講的存儲(chǔ)器可以是SRAM,也可以是FLASH)。DMA控制器包含了DMA1控制器和DMA2控制器,分別由7和5個(gè)通道作為數(shù)據(jù)傳輸。每個(gè)通道專門用來管理來自一個(gè)或者多個(gè)外設(shè)對(duì)存儲(chǔ)器訪問的請(qǐng)求,還有一個(gè)仲裁器用于協(xié)調(diào)各個(gè)外設(shè)對(duì)DMA傳輸請(qǐng)求的優(yōu)先權(quán)。注意,DMA2只存在于大容量或互聯(lián)型的STM32單片機(jī)中。 2. DMA功能框圖 2.1 STM32外設(shè)對(duì)DMA的請(qǐng)求及通道 請(qǐng)求及通道對(duì)應(yīng)圖中的標(biāo)號(hào)1和標(biāo)號(hào)2:STM32外設(shè)想要通過DMA來傳輸數(shù)據(jù),需先給DMA控制器發(fā)送DMA請(qǐng)求,控制器在收到外設(shè)的DMA請(qǐng)求之后會(huì)給外設(shè)一個(gè)應(yīng)答信號(hào),外設(shè)應(yīng)答且DMA控制器收到外設(shè)的應(yīng)答后,DMA啟動(dòng)傳輸,直至傳輸完畢。 為什么需要發(fā)出請(qǐng)求,應(yīng)答和接收應(yīng)答這幾個(gè)繁瑣的步驟?由圖中藍(lán)色框框可以看出,DMA傳輸和CPU是共用系統(tǒng)總線的,要啟動(dòng)DMA傳輸?shù)那疤崾窍到y(tǒng)總線是空閑的,換句話說是CPU沒有占用系統(tǒng)總線,所以啟動(dòng)DMA傳輸前需要以上幾個(gè)應(yīng)答機(jī)制,其最底層是DMA控制器和CPU正為系統(tǒng)總線作出協(xié)調(diào)。DMA1有7個(gè)通道,DMA2有5個(gè)通道,不同的外設(shè)請(qǐng)求要通過對(duì)應(yīng)的DMA通道發(fā)給DMA控制器。將不同的外設(shè)請(qǐng)求傳輸至對(duì)應(yīng)的通道,這個(gè)是我們?cè)谲浖幊躺显O(shè)置的。 DMA1開放的通道及對(duì)應(yīng)請(qǐng)求: DMA2開放的通道及對(duì)應(yīng)請(qǐng)求: 雖然每個(gè)通道可以接收多個(gè)外設(shè)的請(qǐng)求,但是同一時(shí)間內(nèi)只能接收一個(gè)。 2.2 仲裁器 仲裁器對(duì)應(yīng)圖中的標(biāo)號(hào)3:當(dāng)DMA控制器的多個(gè)通道發(fā)生DMA請(qǐng)求時(shí),就需要仲裁器管理響應(yīng)處理的順序。仲裁器通過軟件和硬件來管理DMA請(qǐng)求:軟件指的是我們寫的代碼,在DMA_CCRx(x指通道號(hào))寄存器中設(shè)置,有4個(gè)等級(jí),非常高(DMA_Priority_VeryHigh)、高(DMA_Priority_High)、中(DMA_Priority_Medium)和低(DMA_Priority_Low)。硬件則是指若有兩個(gè)或以上的DMA通道請(qǐng)求設(shè)置的優(yōu)先級(jí)一樣,則它們的響應(yīng)順序取決于通道編號(hào),編號(hào)低者優(yōu)先級(jí)高,在有DMA2的STM32中,DMA1控制器擁的響應(yīng)優(yōu)先級(jí)高于DMA2。 2.3 配置DMA控制器 配置DMA控制器,無非就是下圖這幾個(gè)寄存器: 前面說到,DMA數(shù)據(jù)傳輸機(jī)制并不需要CPU的參與,但是DMA控制器要正常工作,數(shù)據(jù)要正確傳輸,需有三個(gè)必要條件:源地址、目的地址和數(shù)據(jù)大小,對(duì)于數(shù)據(jù)分批傳輸?shù)那闆r,數(shù)據(jù)大小這個(gè)條件還包含每次傳輸?shù)拇笮〖皢挝弧? (1)源地址和目的地址 DMA的傳輸數(shù)據(jù)的方向有三個(gè):從外設(shè)到存儲(chǔ)器、從存儲(chǔ)器到外設(shè)、從存儲(chǔ)器到存儲(chǔ)器。DMA_CCR的BIT[4]DIR就是用于配置數(shù)據(jù)傳輸方向的: 取值為0表從外設(shè)到存儲(chǔ)器,取值為1表從存儲(chǔ)器到外設(shè)。外設(shè)地址在DMA_CPAR寄存器配置,存儲(chǔ)器地址在DMA_CMAR寄存器配置。 (2)傳輸數(shù)據(jù)的大小及單位 以串口向電腦發(fā)送數(shù)據(jù)為例(存儲(chǔ)器->外設(shè)方向),開發(fā)板軟件可以一次性給電腦發(fā)送大量數(shù)據(jù),具體多少在DMA_CNDTR配置: DMA_CNDTR低16位有效,一次最多只能傳輸65535個(gè)數(shù)據(jù)。 數(shù)據(jù)要正確傳輸,源、目標(biāo)存儲(chǔ)的數(shù)據(jù)寬度必須一致。串口數(shù)據(jù)寄存器是8位的,也就是外設(shè)數(shù)據(jù)寬度設(shè)置寄存器DMA_CCRx的BIT[9:8]PSIZE取值為0: 存儲(chǔ)器的數(shù)據(jù)寬度設(shè)置寄存器DMA_CCRx的BIT[11:10]MSIZE取值也為0: DMA傳輸數(shù)據(jù),還需要設(shè)置源地址上的數(shù)據(jù)發(fā)送指針和目的地址數(shù)據(jù)存放指針的增量模式。開發(fā)板串口向電腦發(fā)送數(shù)據(jù),假設(shè)要發(fā)送的數(shù)據(jù)很多,那么存儲(chǔ)器(源地址)上數(shù)據(jù)發(fā)送指針每次發(fā)送完畢需要加1,而串口數(shù)據(jù)寄存器則不需要,因?yàn)樵摷拇嫫髦挥幸粋€(gè),數(shù)據(jù)寄存器上的數(shù)據(jù)傳送到電腦后被清空了(就算不清空,數(shù)據(jù)直接覆蓋也沒關(guān)系)。外設(shè)的地址指針增量模式由DMA_CCRx的PINC配置,存儲(chǔ)器的地址指針則由MINC配置。 (3)傳輸結(jié)束 DMA中斷狀態(tài)寄存器DMA_ISR可以設(shè)置每個(gè)DMA通道傳輸過半、傳輸完成和傳輸錯(cuò)誤示產(chǎn)生對(duì)應(yīng)標(biāo)志, 在DMA_CCRx位1、2、3可以設(shè)置發(fā)生傳輸過半、傳輸完成和傳輸錯(cuò)誤時(shí)產(chǎn)生中斷: 另外補(bǔ)充一點(diǎn),位0用于使能DMA傳輸 傳輸完成分兩種模式:一次傳輸和循環(huán)傳輸,一次傳輸指?jìng)鬏斠淮魏缶屯V梗賯鬏斝枰P(guān)閉DMA使能后重新配置后才能繼續(xù)傳輸。循環(huán)傳輸則是一次傳輸完成后又恢復(fù)第一次傳輸時(shí)的配置循環(huán)傳輸,如此循環(huán)。設(shè)置位在DMA_CCRx寄存器的CIRC。 3. DMA功能模塊描述結(jié)構(gòu)體 標(biāo)準(zhǔn)庫的一貫風(fēng)格,在stm32f10x_dma.h文件中定于可DMA_InitTypeDef初始化結(jié)構(gòu)體,DMA_Init()函數(shù)定義在stm32f10x_dma.c中。 (1)DMA_PeripheralBaseAddr:外設(shè)地址,若是存儲(chǔ)器到存儲(chǔ)器模式,此成員設(shè)置為其中一個(gè)存儲(chǔ)器的地址,否則設(shè)置為外設(shè)的地址。 (2)DMA_MemoryBaseAddr:存儲(chǔ)器地址,一般設(shè)置為程序中存放數(shù)據(jù)的容器(數(shù)組)的首地址。
下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評(píng)論

查看更多

下載排行

本周

  1. 1TC358743XBG評(píng)估板參考手冊(cè)
  2. 1.36 MB  |  330次下載  |  免費(fèi)
  3. 2開關(guān)電源基礎(chǔ)知識(shí)
  4. 5.73 MB  |  6次下載  |  免費(fèi)
  5. 3100W短波放大電路圖
  6. 0.05 MB  |  4次下載  |  3 積分
  7. 4嵌入式linux-聊天程序設(shè)計(jì)
  8. 0.60 MB  |  3次下載  |  免費(fèi)
  9. 5基于FPGA的光纖通信系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
  10. 0.61 MB  |  2次下載  |  免費(fèi)
  11. 6基于FPGA的C8051F單片機(jī)開發(fā)板設(shè)計(jì)
  12. 0.70 MB  |  2次下載  |  免費(fèi)
  13. 751單片機(jī)窗簾控制器仿真程序
  14. 1.93 MB  |  2次下載  |  免費(fèi)
  15. 8基于51單片機(jī)的RGB調(diào)色燈程序仿真
  16. 0.86 MB  |  2次下載  |  免費(fèi)

本月

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

總榜

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