chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

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

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

黃工的嵌入式技術(shù)圈 ? 來(lái)源:黃工的嵌入式技術(shù)圈 ? 2020-03-14 14:46 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

類似的問(wèn)題

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

我什么時(shí)候需要使用DMA功能?

關(guān)于ADC的一些知識(shí)

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

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

其實(shí)就是說(shuō),一個(gè)ADC,可檢測(cè)18條通道,我們外接的只有16條。而結(jié)果只保存在一個(gè)寄存器ADC_DR中。

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

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

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)換的結(jié)果只能保存在ADC_DR中。因?yàn)橐?guī)則通道轉(zhuǎn)換的值儲(chǔ)存在一個(gè)僅有的數(shù)據(jù)寄存器中,所以當(dāng)轉(zhuǎn)換多個(gè)規(guī)則通道時(shí)需要使用DMA,這可以避免丟失已經(jīng)存儲(chǔ)在ADC_DR寄存器中的數(shù)據(jù)。

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

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

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

不使用DMA方式

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

不使用DMA方式,就需要使用非常奇葩的處理方式:?jiǎn)瓮ǖ绬未无D(zhuǎn)換方式,需要切換通道,不然就會(huì)像上面說(shuō)的,采集不到對(duì)應(yīng)通道的數(shù)據(jù)。

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

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

    關(guān)注

    2301

    文章

    11075

    瀏覽量

    369397
  • dma
    dma
    +關(guān)注

    關(guān)注

    3

    文章

    576

    瀏覽量

    104729
  • ADC1
    +關(guān)注

    關(guān)注

    0

    文章

    3

    瀏覽量

    8519
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    STM32G030K6Tx使用ADC+DMA進(jìn)行6通道ADC采集,DMA傳輸錯(cuò)位怎么解決?

    ;GPIO_InitStruct); /[i] ADC1 DMA Init //[i] USER CODE BEGIN ADC1_DMA_Init 1
    發(fā)表于 09-09 06:30

    STM32F405RGT6 ADC2+TIM4觸發(fā)+DMA(DMA2_Stream2_CH1)+DMA中斷會(huì)死機(jī),怎么解決?

    ADC1+TIM4觸發(fā)+DMA(DMA2_Stream0_CH0)+DMA中斷完全正常更改為ADC2+TIM4觸發(fā)+
    發(fā)表于 08-04 07:16

    無(wú)法配置 ADC1 來(lái)觸發(fā) DMA 傳輸,怎么解決?

    啟動(dòng)。 您能幫我設(shè)置 DMA 通道的觸發(fā)源嗎? 此外,我在 ADC1 章節(jié)中讀到以下聲明: [i]比較通道有 8 個(gè)事件(CMPUPx 和 CMPLOx),
    發(fā)表于 07-21 06:57

    【微五科技CF5010RBT60開發(fā)板試用體驗(yàn)】+A/D數(shù)據(jù)采集

    從資料可以看出,CF5010RBT60能通過(guò)10個(gè)A/D檢測(cè)通道,見圖1所示。 圖1 檢測(cè)通道與引腳關(guān)系 要實(shí)現(xiàn)多
    發(fā)表于 07-19 12:48

    基于APM32F411 DMA_ADC Handler模式分析及解決

    最近在編寫DMA_ADC例程的過(guò)程中出現(xiàn)了一個(gè)中斷配置的問(wèn)題,在ADC采集過(guò)程中,結(jié)合手冊(cè)進(jìn)行ADC連續(xù)轉(zhuǎn)換模式配置采集,手冊(cè)上給出需要進(jìn)行
    的頭像 發(fā)表于 06-24 14:30 ?730次閱讀
    基于APM32F411 <b class='flag-5'>DMA_ADC</b> Handler模式分析及解決

    STM32F407 ADC Dual regular simultaneous only 模式下最高采樣率僅 96?kHz,960?kHz無(wú)法工作怎么解決?

    一、平臺(tái)及配置 MCU 型號(hào) :STM32F407VG (Cortex?M4) ADCADC1 + ADC2,Dual regular simultaneous only 模式
    發(fā)表于 06-16 07:09

    請(qǐng)問(wèn)STM32G431內(nèi)部運(yùn)放1和2輸出連接的ADC為什么不是OPAMP?

    請(qǐng)問(wèn)下大家,STM32G431 芯片UVW三相的電流檢測(cè),配置使用內(nèi)部運(yùn)放PGA,看到G431-ESCdemo板對(duì)應(yīng)motor workbench配置,為什么UV相的運(yùn)放輸出分別是ADC1 3通道
    發(fā)表于 06-10 07:39

    請(qǐng)問(wèn)STM32G431內(nèi)部運(yùn)放1和2輸出連接的ADC為什么不是OPAMP?

    請(qǐng)問(wèn)下大家,STM32G431 芯片UVW三相的電流檢測(cè),配置使用內(nèi)部運(yùn)放PGA,看到G431-ESCdemo板對(duì)應(yīng)motor workbench配置,為什么UV相的運(yùn)放輸出分別是ADC1 3通道
    發(fā)表于 06-06 07:47

    請(qǐng)問(wèn)STM32G431內(nèi)部運(yùn)放1和2輸出連接的ADC為什么不是OPAMP?

    請(qǐng)問(wèn)下大家,STM32G431 芯片UVW三相的電流檢測(cè),配置使用內(nèi)部運(yùn)放PGA,看到G431-ESCdemo板對(duì)應(yīng)motor workbench配置,為什么UV相的運(yùn)放輸出分別是ADC1 3通道
    發(fā)表于 05-14 08:12

    請(qǐng)問(wèn)STM32G431內(nèi)部運(yùn)放1和2輸出連接的ADC為什么不是OPAMP?

    請(qǐng)問(wèn)下大家,STM32G431 芯片UVW三相的電流檢測(cè),配置使用內(nèi)部運(yùn)放PGA,看到G431-ESCdemo板對(duì)應(yīng)motor workbench配置,為什么UV相的運(yùn)放輸出分別是ADC1 3通道
    發(fā)表于 04-27 07:08

    為什么在“PWM Adc Dma 344 S32CT”示例中使用ISR塊來(lái)讀取dma adc通道

    DMA 模式的 ADC1組的數(shù)據(jù),它使用硬件中斷塊作為墻,就像在中斷模式下配置的 ADC2組一樣。 我的問(wèn)題是為什么使用這個(gè)塊,以及是否有必要讀取 ADC1組的值。盡管在
    發(fā)表于 04-08 06:39

    ADC怎么樣才能區(qū)分出來(lái)是那個(gè)通道想要將采集的數(shù)傳出去?

    DMA方式傳輸,不以串口傳輸 HAL_Delay(1); } /* USER CODE END 3 */ } ` 按照上述代碼,ADC1通道1
    發(fā)表于 03-13 08:07

    STM32G030F6 ADC+DMA通道非連續(xù)采樣無(wú)法正常工作怎么解決?

    配置:使用STM32G030F6 ADC外設(shè)時(shí),ADC使用兩個(gè)通道。DMA配置為循環(huán)模式,ADC
    發(fā)表于 03-12 07:10

    stm32f103c8t6 ADC channel 5采樣被干擾導(dǎo)致程序卡死重啟怎么解決?

    程序里配置了兩個(gè)ADC進(jìn)行采樣,ADC1采集輸出電流、輸出電壓的值;ADC2:采集NTC電壓、設(shè)置旋鈕等電壓。一共5個(gè)采樣
    發(fā)表于 03-07 16:29

    STM32H743的高精度定時(shí)器觸發(fā)ADC采樣

    。 STM32Cubemx配置如下: Master Timer配置 Timer A配置 Timer B配置 Trigger 配置 ADC1配置 ADC2配置 啟動(dòng)的代碼
    發(fā)表于 01-09 15:49