摘要:目錄工作原理硬件架構硬件架構通道的作用寄存器出現的目的出現的目的工作原理全拼直接內存存取,在傳統的存取數據時會先將數據放到緩存寄存器中然后在寫入到指定位置存取數據流程圖經歷了三個步驟,先將內存中指定位置
目錄
DMA全拼Direct Memory Access(直接內存存?。趥鹘y的CPU存取數據時會先將數據放到緩存寄存器中然后在寫入到指定位置
CPU存取數據流程圖:
CPU經歷了三個步驟,先將內存中指定位置上的數據取到數據緩存器中,然后在將數據緩存器中的內容寫入到內存中,總共用了三步來完成內存兩天不同地址上的數據寫入
而使用DMA之后就會變得非常簡單,DMA不會放入暫存器,而是直接寫入寫入內存,你只需要設置好源地址,目標地址,傳輸量,那么DMA就會開始傳輸數據,但DMA會占用你設備的總線,也就是這個過程中你無法使用總線,需要進行一個控制權轉移,這樣雖然傳輸變快了但是傳輸期間CPU基本上做不了別的事情,但是有些架構已經為DMA提供了一套自己的總線,在DMA傳輸過程中CPU依然可以控制外設,這個控制權轉移不是一直DMA有效的,為了保證CPU也能正常通過系統總線去控制外設,一般會給DMA一定時間然后控制權在切回CPU,然后CPU處理一段時間在切回DMA直到DMA結束才會停止控制權轉移。
以下取自STM32芯片手冊中對DMA的框架描述
?
以下是兩個DMA控制器的結構圖,可以清晰的看到每個通道用于做什么的
?DMA1
DMA2
通道是一個小型的IO控制器,每個通道對應控制不同的外設、Memory,可以通過MCU數據手冊里查看你的DMA里的每個通道對應控制的外設。
從上圖給出的通道結構圖中可以看到每個通道IO都支持Uart、SPI、I2C外設功能,值得注意的是這里外設是有編號的,可以在上圖通道中看到,不同的外設由不同的通道程序來控制,如你使用I2C2外設,則需要找到支持I2C2的通道并使用它,其中也可以看到SW trigger (MEM2MEM BIT)這個意思代表支持Memory到Memory之間的通訊,如內部的Sram到Sram,也可以看到上圖中有HW request 4 意味著這個通道支持中斷通知,意思是當這個通道開始工作時會設置對應寄存器里的值,然后產生中斷,我們可以在對應的中斷標志寄存器里讀到哪個通道產生了中斷,以及做了什么事情
如果是對外設進行控制的話記得,如果是內部的Memory到Memory之間傳輸數據的話可以隨便選擇一個通道,因為從上圖的結構可以看出每個通道IO都支持內部Memory
通道可以理解成一個小型的程序,它是一個簡單的IO控制程序,只能處理對應外設之間的數據傳輸,工作之前需要配置DMA里使用哪個通道,可以選擇多個通道,也可以選擇一個通道,這些通道是支持同時工作的。
?可以看到可以通過上面的通道來配置Uart、SPI、I2C的一些功能,同時看到Internal/Request是內部帶有中斷功能的,具體如何配置還需要看寄存器功能
寄存器介紹
① 中斷類
寄存器名 | 作用 |
---|---|
DMA_ISR | 中斷狀態寄存器 |
DMA_IFCR | DMA中斷標志位清除寄存器 |
② 控制傳輸類
寄存器名 | 作用 |
---|---|
DMA_CCRx | DMA通道x配置寄存器 |
DMA_CNDTRx | DMA通道x數據數量寄存器 |
DMA_CPARx | DMA通道x外設地址寄存器 |
DMA_CMARx | DMA通道x內存地址寄存器 |
需要注意上面的寄存器針對DMA1與DMA2都有對應的一組,它們倆不使用一組寄存器控制
可以簡單把DMA理解成CPU的一個傳輸小幫手,CPU通過告訴DMA該傳輸哪些數據,然后由DMA去完成傳輸工作
DMA是一個獨立的控制器,內部有小型芯片來控制的,也有自己的一套架構,一般集成在MCU內部與CPU緊密貼合
DMA的出現就是為了解決CPU在處理大量數據傳輸時的時間耗費成本,在傳輸大數據時CPU會先放到暫存器中這樣的速度會影響效率,速度較慢,同時CPU如果一直忙于傳輸數據就不能去做別的事情了,所以DMA的誕生解決了這個問題,需要值得注意的是在使用DMA之前要看下架構,DMA是否與CPU使用同一總線,若同一總線的情況下是會影響CPU工作效率而非傳輸效率
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/119147.html
摘要:當輸入的時候,設備先將輸入的信息放到控制器中的數據寄存器中,等到攢到一定數量或者輸入完成后,一次性將數據拿走,提高了的運行效率。設別狀態識別控制器會識別設備的工作狀態,將工作狀態保存到狀態寄存器中,供查用。 ...
摘要:異步通信與同步通信異步通信異步通信是指通信的發送與接收設備使用各自的時鐘控制數據的發送和接收過程。同步通信同步通信時要建立發送方時鐘對接收方時鐘的直接控制,使雙方達到完全同步。配置串口設置為異步通信基礎參數波特率為。 ...
摘要:為了可靠工作,在總線狀態切換時需要做適當延時,再進行數據收發。 一、實現效果 ????????基于ucosii實時操作系統的RS485通信,采用USART + DMA進行收發, ?二、開發環境 開發工具:KEIL V5開發板: STM32f107RC采用方式:USART + DMA使用系統:...
摘要:計算機組成原理是大學中的專業必修課,也是程序員需要掌握的專業知識。所以說計算機組成原理是非常重要的一門課程,本文總結了五十個組原中的重要概念,供大家學習。通道程序通道程序由通道指令組成,他完成某種外圍設備與主存傳送信息的操作。 計算機組成原理是大學中的專業必修課,也是程序員需要掌握的專業...
閱讀 1271·2021-09-23 11:51
閱讀 1391·2021-09-04 16:45
閱讀 632·2019-08-30 15:54
閱讀 2083·2019-08-30 15:52
閱讀 1602·2019-08-30 11:17
閱讀 3105·2019-08-29 13:59
閱讀 2020·2019-08-28 18:09
閱讀 387·2019-08-26 12:15