<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > stm32 雙adc 采集問題 dma數(shù)據(jù)有一個(gè)沒有 adc2為0

          stm32 雙adc 采集問題 dma數(shù)據(jù)有一個(gè)沒有 adc2為0

          作者: 時(shí)間:2016-11-10 來源:網(wǎng)絡(luò) 收藏
          配置那些就不說了,我這里是同步規(guī)則采樣,共4通道:

          本文引用地址:http://www.ex-cimer.com/article/201611/317107.htm
          [cpp]view plaincopy
          1. /*RegularChannelÉèÖòɼ¯Ë³ÐòºÍʱ¼ä.ÉèÖóÉË«adcºó,dmaÓÃ32bit´«Êä,µÍ16bitÊÇadc1ͨµÀ,¸ß16bitÊÇadc2ͨµÀ*/
          2. ADC_RegularChannelConfig(ADC1,CH0_ADL1,1,ADC_SampleTime_13Cycles5);//0
          3. ADC_RegularChannelConfig(ADC1,CH1_ADL2,2,ADC_SampleTime_13Cycles5);//2
          4. ADC_RegularChannelConfig(ADC1,CH8_ADR1,3,ADC_SampleTime_13Cycles5);//4
          5. ADC_RegularChannelConfig(ADC1,CH9_ADR2,4,ADC_SampleTime_13Cycles5);//6
          6. /*RegularChannel*/
          7. ADC_RegularChannelConfig(ADC2,CH9_ADR2,1,ADC_SampleTime_13Cycles5);//1
          8. ADC_RegularChannelConfig(ADC2,CH8_ADR1,2,ADC_SampleTime_13Cycles5);//3
          9. ADC_RegularChannelConfig(ADC2,CH1_ADL2,3,ADC_SampleTime_13Cycles5);//5
          10. ADC_RegularChannelConfig(ADC2,CH0_ADL1,4,ADC_SampleTime_13Cycles5);//7


          使用的是ac連續(xù)采樣,dma連續(xù)搬運(yùn)模式。注意點(diǎn)如下:

          1、數(shù)組要定義為u32的,例如u32 buf[4],不要定義為u16 buf[8],經(jīng)過測試,如果使用 u16 buf[8] 最后一個(gè)16bit buf[7]會為0,不知道為什么。

          2、adc2有2種方式可以啟動,一種是:

          ADC_ExternalTrigConvCmd(ADC2,ENABLE); /*adc2¹æÔòͨµÀÍⲿ´¥· */

          另一種是:

          ADC_SoftwareStartConvCmd(ADC2,ENABLE);

          這2種方法會帶來一個(gè)不同的結(jié)果,細(xì)分析如下:

          如上所述轉(zhuǎn)換序列,正常情況是buf32[0] & 0xFFFF與(buf32[3]>>0xFFFF)是同一組數(shù)據(jù),拿buf16[8]來說就是buf16[0]、buf[7]是一組數(shù)據(jù),可是改變adc2的觸發(fā)方式有什么區(qū)別呢?

          ================使用buf16[8] +ADC_SoftwareStartConvCmd(ADC2,ENABLE);方式===============

          此組合可以得到正確的數(shù)組對應(yīng)方式,即dma搬來的數(shù)據(jù)與我們預(yù)期的是對應(yīng)的。但是buf16[7]=0

          ================使用buf16[8] +ADC_ExternalTrigConvCmd(ADC2,ENABLE);方式===============

          此組合不可以得到正確的數(shù)組對應(yīng)方式,即dma搬來的數(shù)據(jù)與我們預(yù)期的是不對應(yīng)的。而且buf16[7]=0

          ================使用buf32[4] +ADC_SoftwareStartConvCmd(ADC2,ENABLE);方式===============

          此組合不可以得到正確的數(shù)組對應(yīng)方式,即dma搬來的數(shù)據(jù)與我們預(yù)期的是不對應(yīng)的。

          ================使用buf32[4] +ADC_ExternalTrigConvCmd(ADC2,ENABLE);方式===============

          此組合可以得到正確的數(shù)組對應(yīng)方式,即dma搬來的數(shù)據(jù)與我們預(yù)期的是對應(yīng)的。


          好,這就是我的調(diào)試心得,大家避免注意下就好了。

          這里有一個(gè)單ADC同步規(guī)則+同步注入的例子:http://www.csdn123.com/html/itweb/20130801/33722_33714_33696.htm。

          貌似單個(gè)ADC好用,兩個(gè)的同步注入有問題????

          ===========繼續(xù)補(bǔ)充20160419================

          之前的注入通道數(shù)據(jù)有問題,把他的采樣率該慢點(diǎn)就可以了,視自己情況而定,慢慢調(diào)試吧!



          評論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();