作者:羊村長
QQ:707703387
硬件平臺:STM32F4-DISCORVERY
軟件平臺:KEIL MDK5.10
DMA知識點:直接內(nèi)存訪問(DMA)是用來以提供外設(shè)和內(nèi)存、內(nèi)存和內(nèi)存之間的高速數(shù)據(jù)傳輸?shù)摹?shù)據(jù)可以在沒有任何CPU干預下通過的DMA進行傳輸。這使得CPU資源更傾重與其他操作。DMA控制器基于一個復雜的總線矩陣架構(gòu),結(jié)合了功能強大的雙AHB主總線架構(gòu)與獨立的FIFO,以優(yōu)化系統(tǒng)帶寬。兩個DMA控制器共有16個數(shù)據(jù)流(stream),每個數(shù)據(jù)流可以編程與規(guī)定的通道中的一個搭配。
一些ADC的細節(jié)特性在STM32F4的原廠參考手冊中沒有說明,只是很簡短的列了一下。
這我是查看ST前幾天剛發(fā)布的接口庫才最后弄明白的,現(xiàn)在分享給大家:
1、STM32F4有3個獨立的ADC單元,性能強勁,可以獨立使用,也可以聯(lián)合使用它們。聯(lián)合使用在參考手冊中叫Interleave模式,最大的目的是加倍提升采樣速度。
2、采樣速度大幅提高以后,就需要使用DMA來配合提取采樣結(jié)果,從而發(fā)揮STM32F4ADC模塊的最大效能。
3、ADC模塊使用DMA有4種模式可選,默認模式和模式1沒有什么特別之處,最有意思的是模式2和模式3:
4、模式2可以選擇多達3個ADC模塊工作于Interleave模式,ADC速度從單一模塊的2.4Msps暴漲為7.2Msps,而且還是12-bit的分辨率!唯一的要求是每完成2次轉(zhuǎn)換,允許DMA一次性取走2個采樣值。
5、模式3跟模式2類同,但要求ADC模塊的采樣率為8-bit或6-bit,由于轉(zhuǎn)換時間要比12-bit時短,所以速度更快,適用于速度要求更快,但精度要求較低的場合。
比如用2個ADC模塊很容易就可以做到6Msps的速率,而且2次的結(jié)果可以存為halfword,經(jīng)由DMA取走,耗用內(nèi)存也比模式2來的少。剩下的那一個ADC模塊也不用閑著,可以工作于其他設(shè)定(比如:高精度)的模式。
This example describes how to use the ADC3 andDMA to transfer continuously
converted data from ADC3 tomemory.
The ADC3 is configured to convert continuouslychannel12.
Each time an end of conversion occurs the DMAtransfers, in circular mode, the
converted data from ADC3 DRregister to the ADC3ConvertedValue variable.
To get the maximum ADC performance (2.4 MSPS, at2.4V to 3.6V supply range),
the ADC clock must be set to36MHz. As ADC clock is equal to APB2/2, thenAPB2
value will be 72MHz which leadto maximum AHB (System clock) at144MHz.
Since the sampling time is setto 3 cycles and the conversion time to 12bit data
is 12 cycles, so the totalconversion time is (12+3)/36= 0.41us(2.4Msps).

|