RM新时代网站-首页

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

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示

STM32的ADC1采集多條通道 可以不使用DMA功能嗎?

黃工的嵌入式技術圈 ? 來源:黃工的嵌入式技術圈 ? 2020-03-14 14:46 ? 次閱讀

類似的問題

為什么我采集5條通道的電壓,而采集到的值卻都是第一條的呢?

我什么時候需要使用DMA功能?

關于ADC的一些知識

STM32ADC是一種12位逐次逼近型的模擬數(shù)字轉(zhuǎn)換器。它有多達18條通道,可測量16個外部和2個內(nèi)部信號源。

各通道的A/D轉(zhuǎn)換可以單次、連續(xù)、掃描或間斷模式執(zhí)行。 ADC的結果可以左對齊或右對齊方式存儲在16位數(shù)據(jù)寄存器ADC_DR中。

其實就是說,一個ADC,可檢測18條通道,我們外接的只有16條。而結果只保存在一個寄存器ADC_DR中。

要使用ADC1采集多條通道,那么就需要對采集的通道進行分組排序。STM32的ADC可以把轉(zhuǎn)換組織成兩組:規(guī)則組和注入組。

假如我們采集的通道按照如下順序完成轉(zhuǎn)換:通道3、通道8、通道2,則需要軟件對其配置:

ADC_RegularChannelConfig(ADC1,ADC_Channel_3,1, ADC_SampleTime_55Cycles5);

ADC_RegularChannelConfig(ADC1,ADC_Channel_8,2, ADC_SampleTime_55Cycles5);

ADC_RegularChannelConfig(ADC1,ADC_Channel_2,3, ADC_SampleTime_55Cycles5);

使用DMA方式

從上面的描述中知道,ADC轉(zhuǎn)換的結果只能保存在ADC_DR中。因為規(guī)則通道轉(zhuǎn)換的值儲存在一個僅有的數(shù)據(jù)寄存器中,所以當轉(zhuǎn)換多個規(guī)則通道時需要使用DMA,這可以避免丟失已經(jīng)存儲在ADC_DR寄存器中的數(shù)據(jù)。

只有在規(guī)則通道的轉(zhuǎn)換結束時才產(chǎn)生DMA請求,并將轉(zhuǎn)換的數(shù)據(jù)從ADC_DR寄存器傳輸?shù)接脩糁付ǖ哪康牡刂贰?/p>

也就是說,如不使用DMA,我們采用規(guī)則轉(zhuǎn)換,中間有些存儲在ADC_DR寄存器中的數(shù)據(jù)可能被(下一條通道采集的數(shù)據(jù))覆蓋掉。這就是有人說的“采集到的數(shù)據(jù)不對應其通道的值”的原因。

同理,需要這種規(guī)則轉(zhuǎn)換多條通道,就需要使用DMA功能才能完成。

不使用DMA方式

看了上面使用DMA的情況,相信都應該明白:如果使用規(guī)則轉(zhuǎn)換,就最好使用DMA功能。

不使用DMA方式,就需要使用非常奇葩的處理方式:單通道單次轉(zhuǎn)換方式,需要切換通道,不然就會像上面說的,采集不到對應通道的數(shù)據(jù)。

STM32的ADC功能非常強大,感興趣的朋友可深入理解一下。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • STM32
    +關注

    關注

    2270

    文章

    10895

    瀏覽量

    355729
  • dma
    dma
    +關注

    關注

    3

    文章

    560

    瀏覽量

    100544
  • ADC1
    +關注

    關注

    0

    文章

    3

    瀏覽量

    8323
收藏 人收藏

    評論

    相關推薦

    STM32F103VCT6 ADCDMA的速度為什么不一致?

    最近調(diào)試STM32F103VCT6,發(fā)現(xiàn)一個很奇怪的問題。現(xiàn)在采用ADC1ADC3,同時采集兩路波形,采集速率都配到了1.5時鐘,大約1.
    發(fā)表于 05-16 07:12

    STM32F334 ADC1ADC2同步采樣,有時會出現(xiàn)采ADC1ADC2所有的通道采集數(shù)據(jù)都一樣的情況為什么?

    STM32F334 ADC1ADC2同步采樣,有時會出現(xiàn)采ADC1ADC2所有的通道
    發(fā)表于 05-15 08:15

    STM32F103如何讓ADC1每個通道轉(zhuǎn)換64次后換下一個通道在轉(zhuǎn)換64次?

    (64次)通過DMA傳輸?shù)綌?shù)組。 然后轉(zhuǎn)到ADC1的第二個通道在采樣一個周期的交流電壓信號(64次)通過DMA傳輸?shù)綌?shù)組。 往后以此類推。 不知哪位大神能幫忙給個思路,這個問題我困
    發(fā)表于 05-06 08:43

    STM8L151 ADC采用DMA通道連續(xù)采集遇到通道數(shù)據(jù)滾動怎么解決?

    STM8L151 ADC 采用DMA8通道連續(xù)采集,通過ST_LINK仿真發(fā)現(xiàn):通道數(shù)據(jù)滾動問題,比如第一
    發(fā)表于 04-30 08:22

    stm32 adc1和串口2同時使用DMA出錯的原因?

    stm32f103r8t6adc1使用dma方式采集數(shù)據(jù)串口2使用dma方式收發(fā)串口發(fā)送沒有問題,串口接收只要adc1使用
    發(fā)表于 04-22 08:08

    調(diào)試STM32adc通道DMA傳輸時,DMA傳輸后就出現(xiàn)值變了的原因?

    這次在調(diào)試STM32adc通道DMA傳輸時出現(xiàn)了一個很大的問題。 直接去讀取ADC的DR是沒問題的,但是過來
    發(fā)表于 04-22 06:03

    stm32 ADC定時喚醒采集數(shù)據(jù),工作一段時間adc值不變了是為什么?

    */ ADC_InitStructure.ADC_NbrOfChannel = 2;/*設定要轉(zhuǎn)換的 AD 通道數(shù)目*/ ADC_Init(ADC1,
    發(fā)表于 04-11 07:22

    請問STM32G4的ADC1,ADC2,ADC3,ADC4可以同時工作在獨立模式嗎?

    咨詢下各位: STM32G4的ADC1,ADC2,ADC3,ADC4可以同時工作在獨立模式嗎?每
    發(fā)表于 04-10 06:01

    stm32F103中ADC通道轉(zhuǎn)換使用DMA,串口調(diào)試助手沒有數(shù)據(jù)傳輸?shù)脑颍?/a>

    stm32F103中ADC通道轉(zhuǎn)換使用DMA,串口調(diào)試助手沒有數(shù)據(jù)傳輸,大佬可以幫我看看我的代碼有什么問題嗎? main.c #inclu
    發(fā)表于 04-08 07:17

    stm32cubemx建立多通道ADC+DMA,想使用DMA中斷要怎么實現(xiàn)?

    各位大神: 我在用stm32 cubemx建立ADC+DMA通道,想使用DMA中斷,百度了個設置在DMA里增加
    發(fā)表于 04-02 07:14

    STM32G070 ADC配置檢測3個通道,DMA傳輸長度為1,OVR標志不會置1為什么?

    ADC配置檢測3個通道,DMA傳輸長度為1,OVR標志不會置1,為什么? 不知道自己哪里理解錯誤了,求指教 if (HAL_
    發(fā)表于 03-29 07:32

    STM32H750VBT6 ADC1,ADC2,ADC3,加DMA為什么ADC3回調(diào)函數(shù)不能正常工作?

    STM32H750VBT6ADC1,ADC2,ADC3,加DMA為什么ADC3回調(diào)函數(shù)不能正常工作 AD
    發(fā)表于 03-29 07:23

    關于STM32G474 ADC通道數(shù)據(jù)采集遇到的問題求解

    STM32G474 ADC時鐘:168MHz/4=42MHz 分辨率 12bit 單端輸入 ADC1 采集6通道數(shù)據(jù) 采樣時間6.5cyc
    發(fā)表于 03-14 08:11

    STM32L496VG多通道ADC采樣有串擾的原因?

    STM32L496VGADC1,ADC2,ADC3通道同時采集,ADC1,
    發(fā)表于 03-13 08:03

    使用STM32ADC 4通道電流采樣,采樣結果會有差異怎么解決?

    使用STM32ADC電流采樣,4通道,發(fā)現(xiàn)當只有一個通道輸入電流和四個通道都有電流輸入的時候,采樣結果會有差異。比如
    發(fā)表于 03-07 06:50
    RM新时代网站-首页