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

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

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

基于STM32多通道ADC綜合應(yīng)用示例

茶話MCU ? 來源:ST MCU 信息交流 ? 2020-09-08 14:10 ? 次閱讀

有人使用STM32芯片產(chǎn)品開發(fā),需用到多個(gè)通道的ADC轉(zhuǎn)換。大致需求是這樣的:

有2個(gè)ADC通道需要每10ms啟動(dòng)一次轉(zhuǎn)換,另外5個(gè)通道希望50ms啟動(dòng)一次轉(zhuǎn)換。試問如何實(shí)現(xiàn)上述功能比較好。

這里不妨以STM32F302芯片為例,來介紹兩種實(shí)現(xiàn)上述功能的大致方案以供參考。方案里涉及到ADC規(guī)則通道、注入通道的使用、DMA的使用、定時(shí)器的靈活使用,具備一定綜合性。下面介紹以貼圖為主,沒法一點(diǎn)一滴做解釋了。

第一種方案,我們使用ADC1模塊的CH1到CH7連續(xù)的7個(gè)通通來做AD轉(zhuǎn)換,其中CH6/CH7配置為注入通道【我將其戲稱之為插隊(duì)通道】,另外5個(gè)通道配置為規(guī)則通道。

其中,規(guī)則通道的觸發(fā)選用TIM1的觸發(fā)輸出信號(hào)【TRGO】,注入通道的觸發(fā)選擇TIM1通道4的比較事件。我們將TIM1的計(jì)數(shù)模式選擇向上單向計(jì)數(shù)模式,計(jì)數(shù)周期設(shè)置為10ms,并開啟TIM1_CH4的PWM輸出功能,周期也是10ms,這樣就可以實(shí)現(xiàn)每10ms觸發(fā)一次注入通道的轉(zhuǎn)換動(dòng)作。

另外,我們將RCR重復(fù)計(jì)數(shù)寄存器設(shè)置為4,即每溢出4+1次則產(chǎn)生一次定時(shí)器更新事件,并將其將做為TIM1的TRGO信號(hào),這樣就保證了每50ms觸發(fā)一次規(guī)則通道的ADC動(dòng)作?!咀ⅲ篟CR寄存器只有高級(jí)定時(shí)器才有】

規(guī)則通道的ADC結(jié)果通過DMA取走送到指定內(nèi)存單元,DMA配置為Normal模式。

利用STM32CubeMx進(jìn)行配置后,添加必要的用戶代碼。

兩個(gè)數(shù)組分別存放規(guī)則通道和注入通道的轉(zhuǎn)換結(jié)果。

開啟TIM1以及通道4的PWM輸出;

開啟ADC規(guī)則通道/注入通道,只待觸發(fā)信號(hào)。

在規(guī)則通道的DMA傳輸完成中斷里重啟ADC的轉(zhuǎn)換。

編譯運(yùn)行查看結(jié)果【下表中分別為規(guī)則通道和注入通道結(jié)果】:

一路下來,只要各個(gè)環(huán)節(jié)都弄清楚、做到位了還是挺簡(jiǎn)單的。

當(dāng)然,TIM1作為高級(jí)定時(shí)器有時(shí)可能有它用,沒法用在這里。我們知道,STM32芯片的定時(shí)器往往較多,而且很多都可以產(chǎn)生ADC的觸發(fā)事件,此時(shí)我們不妨稍加調(diào)整即可得出新方案。

比方還是開篇的應(yīng)用需求和STM32F3芯片,我們可將規(guī)則通道和注入通道的觸發(fā)事件分別調(diào)整為TIM6的觸發(fā)輸出和TIM15的觸發(fā)輸出,時(shí)間參數(shù)各種獨(dú)立配置即可。

好,本示例就介紹到這里,文筆不佳,但求行文簡(jiǎn)捷。實(shí)現(xiàn)方案也不是唯一的,最終要結(jié)合具體應(yīng)用場(chǎng)景和所選擇的芯片型號(hào)。在此只希望能帶給大家一些相關(guān)應(yīng)用方面的啟示或借鑒。

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

    關(guān)注

    456

    文章

    51023

    瀏覽量

    425423
  • adc
    adc
    +關(guān)注

    關(guān)注

    98

    文章

    6524

    瀏覽量

    545207
  • STM32
    +關(guān)注

    關(guān)注

    2270

    文章

    10915

    瀏覽量

    356758

原文標(biāo)題:基于STM32多通道ADC綜合應(yīng)用示例

文章出處:【微信號(hào):stmcu832,微信公眾號(hào):茶話MCU】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    開發(fā)用于將四個(gè)ADC通道連接到MCU/MPU的自定義通道SPI

    電子發(fā)燒友網(wǎng)站提供《開發(fā)用于將四個(gè)ADC通道連接到MCU/MPU的自定義通道SPI.pdf》資料免費(fèi)下載
    發(fā)表于 09-02 10:12 ?0次下載
    開發(fā)用于將四個(gè)<b class='flag-5'>ADC</b><b class='flag-5'>通道</b>連接到MCU/MPU的自定義<b class='flag-5'>多</b><b class='flag-5'>通道</b>SPI

    領(lǐng)慧立芯LHA5115單電源通道24位ΣΔ ADC產(chǎn)品介紹

    領(lǐng)慧立芯LHA5115單電源通道24位ΣΔ ADC產(chǎn)品介紹
    的頭像 發(fā)表于 08-28 16:55 ?620次閱讀
    領(lǐng)慧立芯LHA5115單電源<b class='flag-5'>多</b><b class='flag-5'>通道</b>24位ΣΔ <b class='flag-5'>ADC</b>產(chǎn)品介紹

    stm32f302和stm32f103的ADC區(qū)別是什么?

    請(qǐng)問stm32f302和stm32f103的ADC除了stm32f103有2個(gè)ADCADC1和
    發(fā)表于 05-15 08:03

    stm32f303采用LL庫(kù),4個(gè)ADC連續(xù)通道掃描,應(yīng)該如何設(shè)置DMA?

    stm32f303,采用LL庫(kù),4個(gè)ADC連續(xù)通道掃描,應(yīng)該如何設(shè)置DMA?ADC轉(zhuǎn)換完DMA傳輸后,中斷處理函數(shù)是哪個(gè)?
    發(fā)表于 04-30 07:06

    STM32L492 DMA通道復(fù)用后速度變慢是什么原因?qū)е碌模?/a>

    我現(xiàn)在用的是STM32L492 DMA2, 一共支持7個(gè)通道,其中ADC1,ADC3已經(jīng)占用了DMA2 3/5兩個(gè)通道。UART1之前采用中
    發(fā)表于 04-29 07:12

    請(qǐng)問STM32L051K6T6 ADC的內(nèi)部參考電壓通道和其他通道不能共用嗎?

    最近使用STM32L051K6T6采集信號(hào),單采集內(nèi)部參考電壓是準(zhǔn)的,單采集其它通道時(shí)也是準(zhǔn)的,通道采集其它通道也是準(zhǔn)的,但是當(dāng)內(nèi)部參考電
    發(fā)表于 04-16 06:32

    STM32 ADC+DMA通道轉(zhuǎn)換數(shù)據(jù)錯(cuò)位的原因?怎么解決?

    開發(fā)環(huán)境IAR7.50.2,芯片302RCT6,不知道如何解決通道數(shù)據(jù)轉(zhuǎn)化錯(cuò)位問題 1、需求:adc規(guī)則組采樣3個(gè)通道,對(duì)ADC數(shù)據(jù)每隔不
    發(fā)表于 04-10 07:24

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

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

    STM32F030K6T6 ADC連續(xù)采樣通道切換是否會(huì)有延時(shí)?

    STM32F030K6T6這款芯片只有一個(gè)獨(dú)立的ADC。在我的設(shè)計(jì)中,ADC時(shí)鐘設(shè)置為12MHz,雙通道采樣,來回切換(設(shè)想中是每個(gè)通道采樣
    發(fā)表于 04-01 07:53

    關(guān)于STM32U575 ADC通道采樣配置問題求解

    需求:擬用ADC1的IN1~7進(jìn)行通道采樣,其中IN7通過多路復(fù)用開關(guān)再擴(kuò)展七個(gè)通道,思路是在單個(gè)ADC
    發(fā)表于 03-26 06:25

    GD32 ADC規(guī)則組通道采樣,數(shù)據(jù)發(fā)生錯(cuò)位?

    我們知道,使用ADC規(guī)則組(常規(guī)組)通道采樣時(shí),必須要配合DMA使用,但有的小伙伴遇到這種應(yīng)用下數(shù)據(jù)錯(cuò)位的情況,比如預(yù)設(shè)的轉(zhuǎn)換順序是通道0->通道
    的頭像 發(fā)表于 03-14 09:58 ?2193次閱讀
    GD32 <b class='flag-5'>ADC</b>規(guī)則組<b class='flag-5'>多</b><b class='flag-5'>通道</b>采樣,數(shù)據(jù)發(fā)生錯(cuò)位?

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

    STM32G474 ADC時(shí)鐘:168MHz/4=42MHz 分辨率 12bit 單端輸入 ADC1 采集6通道數(shù)據(jù) 采樣時(shí)間6.5cycle 單端1.65V【0~-10mV左右跳動(dòng)
    發(fā)表于 03-14 08:11

    使用STM32L031F6在hal庫(kù)下進(jìn)行ADC+DMA通道采集,采集的電壓值始終為0的原因?

    使用STM32L031F6芯片 在hal庫(kù)下進(jìn)行ADC+DMA通道采集時(shí)候,采集的電壓值始終為0是什么原因?
    發(fā)表于 03-14 07:06

    STM32L496VG通道ADC采樣有串?dāng)_的原因?

    STM32L496VGADC1,ADC2,ADC3通道同時(shí)采集,ADC1,ADC2采樣頻率2MH
    發(fā)表于 03-13 08:03

    STM32ADC采樣與通道ADC采樣硬件電路圖

    每一個(gè)ADC通道都對(duì)應(yīng)一個(gè)GPIO引腳,看圖中的ADC123_IN10,表示這個(gè)引腳(PC0)可以配置為ADC1的通道10,或者是
    發(fā)表于 03-01 12:34 ?8123次閱讀
    <b class='flag-5'>STM32</b>的<b class='flag-5'>ADC</b>采樣與<b class='flag-5'>多</b><b class='flag-5'>通道</b><b class='flag-5'>ADC</b>采樣硬件電路圖