欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3685|回復: 18
收起左側

關于ADC+DMA的理解

  [復制鏈接]
ID:966089 發表于 2023-3-5 21:34 | 顯示全部樓層 |閱讀模式
關于STM32單片機芯片 各位大佬,我對ADC的理解是所有的通道最終轉換結果只能放到一個轉換結果寄存器里,為了適應多通道ADC采樣,一種方法是開啟ADC中斷,因為每一個通道轉換結束都會觸發中斷,這樣的話我只需要在每次中斷里把本次通道轉換的結果取出來就行,這樣可以滿足工作要求,但是頻繁中斷會降低CPU的運行效率,所以另一種方法使用DMA,不使用ADC中斷,假設有3個規則通道,那么在通道1轉換結束,DMA將結果轉移到目標地址,然后依次循環到通道3結束,如果開啟了DMA傳輸完成中斷,DMA則進入中斷處理采樣數據。如果按照上述的理解,是不是說多通道里面ADC只需要DMA就好了,甚至數據處理也可以放到DMA中斷進行,那么ADC中斷是不是顯得沒有必要,ADC中斷的意義是不是沒有那么大?希望大佬們能解決我的疑惑,批評指正!
回復

使用道具 舉報

ID:71233 發表于 2023-3-6 08:53 | 顯示全部樓層
DMA不只是用于ADC,如果用戶認為其他模塊使用DMA,ADC仍然使用中斷(中斷優先級為后),那該怎么辦?ADC中斷應該不能刪除吧,我認為。
回復

使用道具 舉報

ID:384109 發表于 2023-3-6 09:23 | 顯示全部樓層
DMA沒那么神奇,DMA只是一個傳輸通道而已,很多情況下使用DMA和不使用DMA效果沒什么不同,DMA只是在一些特定的應用里使用才會體現效果
回復

使用道具 舉報

ID:123289 發表于 2023-3-6 11:24 | 顯示全部樓層
你對DMA的目的及實現的方案(與ADC無關),還需進一步了解,其后就明白了。
CPU中增加DMA功能是為了什么呢?
回復

使用道具 舉報

ID:966089 發表于 2023-3-6 11:30 | 顯示全部樓層
lmn2005 發表于 2023-3-6 08:53
DMA不只是用于ADC,如果用戶認為其他模塊使用DMA,ADC仍然使用中斷(中斷優先級為后),那該怎么辦?ADC中 ...

感謝您的回復!
回復

使用道具 舉報

ID:966089 發表于 2023-3-6 11:31 | 顯示全部樓層
人中狼 發表于 2023-3-6 09:23
DMA沒那么神奇,DMA只是一個傳輸通道而已,很多情況下使用DMA和不使用DMA效果沒什么不同,DMA只是在一些特 ...

感謝您的回復!
回復

使用道具 舉報

ID:401564 發表于 2023-3-6 13:03 | 顯示全部樓層
DMA和中斷是兩個不同的東西
DMA是不占用主程序的時間,你做你的,我做我的
中斷是可以打斷主程序的操作,有些事件是很重要的事件,它必需要有很高的等級,這個時候就要用到中斷了
回復

使用道具 舉報

ID:586261 發表于 2023-3-7 11:58 | 顯示全部樓層
ADC規則通道序列的某一通道轉換結束,轉換結果被寫入數據寄存器,DMA檢測到有新數據產生,就按照配置信息把數據傳送到設定存儲器,如果配置了DMA完成中斷,則產生中斷,CPU轉入DMA中斷處理程序。中斷處理程序應當是快進快出的。
回復

使用道具 舉報

ID:883242 發表于 2023-3-7 22:06 | 顯示全部樓層
DMA可以自動的把數據從ADC結果寄存器搬運到RAM里面,至于處理數據也能用DMA完成那是你想得太多了。
回復

使用道具 舉報

ID:525244 發表于 2023-3-8 13:12 來自觸屏版 | 顯示全部樓層
ADC中斷讀取,每讀取100次,15個通道。MCU一共進入1500次中斷。如果速度不快,或者是沒有用到其它高頻率的定時器,沒問題。如果有高頻次中斷,單片機就會頻繁進入各種中斷,導致單片機效率不高!如果用DMA,只需要設置DMA讀取ADC。所有通道都讀完了(前邊的1500次),并且算出平均值,DNA申請一次中斷,MCU只需要取出所有通道ADC的平均值,直接使用就行!就像兩個CPU,一個處理你的任務,一個幫助調度單片機硬件。
回復

使用道具 舉報

ID:469589 發表于 2023-3-8 13:43 | 顯示全部樓層
不對!
DMA傳輸的ADC,實際上換是需要ADC中斷處理的,即使DMA中斷是打開的,也不能在DMA中斷中處理結果,只能在ADC完成中斷中處理!!!
這個我做過試驗。好像DMA中斷沒有用,但實際也不能關閉,否則ADC也無法進行。
回復

使用道具 舉報

ID:94031 發表于 2023-3-8 14:37 | 顯示全部樓層
單片機要有DMA功能,里面要加很多電路,實現的難度與成本會增加,所以不是每種單片機都有DMA_ADC功能,所以不可能不要ADC中斷,另外實時性DMA_ADC也不如ADC中斷。
回復

使用道具 舉報

ID:644039 發表于 2023-3-8 15:48 | 顯示全部樓層
在dma通道有限的情況下,adc中斷就起到了作用
回復

使用道具 舉報

ID:401564 發表于 2023-3-8 21:52 | 顯示全部樓層
GlenXu 發表于 2023-3-8 13:43
不對!
DMA傳輸的ADC,實際上換是需要ADC中斷處理的,即使DMA中斷是打開的,也不能在DMA中斷中處理結果, ...

不需要!設定好緩沖地址,DMA的結果就會一直是最近幾次的結果
回復

使用道具 舉報

ID:1065084 發表于 2023-3-9 11:04 | 顯示全部樓層
DMA你還沒仔細理解透徹,他是相當于獨立于cpu外的一個傳輸數據的外設,你可以理解為他只能傳輸數據的獨立CPU,你設定好了他就自己傳輸數據。
它僅適合大量數據傳輸,數據量越大他效果越明顯,你一個字節從串口搬到內存,也不過十幾個時鐘周期,并不浪費時間,但是量一大就明顯了,頻繁的中斷入棧出棧消耗太多cpu時間,使用DMA主要就是節約這部分時間(中斷出入棧)。
假設外設自帶fifo,比如spi可以一次存1K的數據,你給屏幕寫數據,就一次性寫到spi里,大約消耗 2K個時鐘周期就夠了,這個硬件fifo就相當于不能編程的dma了,而現在你有了一個可以任意設置方向緩存大小的dma,是不是更完美了呢? 有的人說我喜歡硬件fifo,給我裝上!好的 四十個外設每人1Kfifo好 還是把這40k放到主內存里,外設用dma操控好?
少量的數據也能用dma,只是編程更復雜而已,也沒啥問題
回復

使用道具 舉報

ID:146878 發表于 2023-3-9 12:48 | 顯示全部樓層
如果需要多通道輪詢采樣,那DMA沒什么必要,要切換通道必須要CPU去做。
回復

使用道具 舉報

ID:668004 發表于 2023-3-14 18:44 | 顯示全部樓層
yuxuesuixing 發表于 2023-3-9 11:04
DMA你還沒仔細理解透徹,他是相當于獨立于cpu外的一個傳輸數據的外設,你可以理解為他只能傳輸數據的獨立CP ...

這位兄弟   大師級別
回復

使用道具 舉報

ID:966089 發表于 2023-3-16 09:55 | 顯示全部樓層
yuxuesuixing 發表于 2023-3-9 11:04
DMA你還沒仔細理解透徹,他是相當于獨立于cpu外的一個傳輸數據的外設,你可以理解為他只能傳輸數據的獨立CP ...

感謝您的回復
回復

使用道具 舉報

ID:966089 發表于 2023-3-16 09:58 | 顯示全部樓層
Hephaestus 發表于 2023-3-7 22:06
DMA可以自動的把數據從ADC結果寄存器搬運到RAM里面,至于處理數據也能用DMA完成那是你想得太多了。

老哥,我說的是在DMA中斷程序里讓CPU切入進行處理采樣數據,DMA傳輸中當然不能處理數據了,這個我知道,你看錯了。感謝您的回復!
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表