国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

定時(shí)器(PWM輸出)觸發(fā)ADC采樣(DMA)——STM32CubeMX

這篇具有很好參考價(jià)值的文章主要介紹了定時(shí)器(PWM輸出)觸發(fā)ADC采樣(DMA)——STM32CubeMX。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

一、(單通道)使用定時(shí)器觸發(fā)的ADC單通道轉(zhuǎn)換

我用的單片機(jī)是STM32F103CBTX

  • 定時(shí)器:使用PWM輸出的模式
  • ADC:使用DMA的模式(在不使用DMA的情況下,定時(shí)器控制ADC進(jìn)行數(shù)據(jù)采集只能是單通道!如果開啟了多通道,讀取到的ADC采集值只會是最后一個(gè)通道的值!所以,要想使用定時(shí)器控制ADC采集多通道,必須使用DMA?。?/li>

定時(shí)器中cubemx配置:

?看STM32F103數(shù)據(jù)手冊可以知道定時(shí)器TIM1是掛在APB1總線上

怎么用定時(shí)器采樣,stm32,嵌入式硬件,單片機(jī)

我使用的是TIM1的通道2的上升沿(即PWM輸出)觸發(fā)ADC采樣?

怎么用定時(shí)器采樣,stm32,嵌入式硬件,單片機(jī)

PWM模式1和模式2區(qū)別:

以下是使用邏輯分析儀觀察到的PWM輸出情況

怎么用定時(shí)器采樣,stm32,嵌入式硬件,單片機(jī)

怎么用定時(shí)器采樣,stm32,嵌入式硬件,單片機(jī)

ADC中cubemx配置:?

注意:此時(shí)不再需要ADC進(jìn)行轉(zhuǎn)換,把連續(xù)轉(zhuǎn)換模式設(shè)為關(guān)閉!?。?/strong>

(我自己踩的坑,我試過開啟的時(shí)候程序死掉了)

怎么用定時(shí)器采樣,stm32,嵌入式硬件,單片機(jī)

DMA模式選擇:?

Circular模式:

就是ADC連續(xù)采樣的意思,也就是HAL_ADC_Start_DMA(&hadc1, (uint32_t *)ADC_Value, 4)這句代碼在程序中開啟一次即可,不需要每次都重新打開。

Normal模式:

HAL_ADC_Start_DMA(&hadc1, (uint32_t *)ADC_Value, 4)執(zhí)行完一次之后,如果想進(jìn)行下一輪ADC采樣,必須要重新開啟,所以每一輪采樣都要用一次這句代碼,采樣一次開啟一次采樣一次開啟一次。

參考別人的試了用了Circular模式,完全沒問題,可以成功測出電壓值。

我自己也試了Normal模式,不行,只能測一次,后面沒反應(yīng)了。

怎么用定時(shí)器采樣,stm32,嵌入式硬件,單片機(jī)

?代碼:

uint8_t AdcConvEnd=0;

int main()
{
  uint16_t ADC_Value[4]= 0;

  HAL_TIM_Base_Start(&htim1);
  HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_2);

  HAL_ADCEx_Calibration_Start(&hadc1);//自動校準(zhǔn)
  HAL_ADC_Start_DMA(&hadc1, (uint32_t *)ADC_Value, 4);


  while(1)
  {
      if(AdcConvEnd)
      {
          uint16_t averageValue = 0;
          for(int i = 0; i < 4; i++)
          {
              averageValue += ADC_Value[i];
              printf("ADC_Value[%d]:%.3f\r\n",i,(float)ADC_Value[i]*3.3f/4096);
          }
          AdcConvEnd=0;

          averageValue/=4;
          printf("averageValue:%d\r\n",averageValue);
      }
}

void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* hadc)
{
    if(hadc==&hadc1)
    {
        AdcConvEnd=1;
    }
}

結(jié)果:

怎么用定時(shí)器采樣,stm32,嵌入式硬件,單片機(jī)

二、(雙通道)使用定時(shí)器觸發(fā)的ADC雙通道轉(zhuǎn)換?

注意:因?yàn)槲覀冊O(shè)置的是 2 個(gè)通道的采集,所以應(yīng)該使能 ADC 的掃描模式,另一方面,我們采用的是 TIM 產(chǎn)生 pwm 觸發(fā) adc 進(jìn)行采集,所以要禁止 ADC 的連續(xù)轉(zhuǎn)換模式,這就是兩個(gè)需要注意的地方。

ADC中cubemx配置:?

怎么用定時(shí)器采樣,stm32,嵌入式硬件,單片機(jī)

三、關(guān)于PWM的頻率或周期的計(jì)算

怎么用定時(shí)器采樣,stm32,嵌入式硬件,單片機(jī)

*注 :* ARR和PSC都是16位的寄存器, 數(shù)值一定要在0~65535這個(gè)范圍。

當(dāng)我們設(shè)置了當(dāng)前機(jī)器設(shè)置的是 72MHZ和?72分頻,定時(shí)器輸入時(shí)鐘頻率是72MHz / 72 = 1MHz:

  • 1MHZ ,即1秒計(jì)數(shù) 1M 次=1000000 次(1s產(chǎn)生1000000個(gè)脈沖方波)。
  • 1MHZ ,也就是1us產(chǎn)生1個(gè)脈沖方波。

若重裝載值 (Period 或 ARR)設(shè)置為 500。也就是0.1us*500=500us,對于當(dāng)前 PWM 周期為 500us,也就是500us發(fā)生一次中斷。

當(dāng)重裝載值(Period 或 ARR)設(shè)置為 500 時(shí),意味著定時(shí)器需要計(jì)數(shù) 500 個(gè)時(shí)鐘周期才會觸發(fā)中斷。因此,中斷發(fā)生的周期是 500us(即500 * 1us

若Pulse設(shè)為250,即占空比=Pulse/ARR=250/500=50%

四、寄存器TIMx_ARR、TIMx_CCRx 、TIMx_CNT

向上計(jì)數(shù)為例,重載值為ARR,比較值為CRRx

怎么用定時(shí)器采樣,stm32,嵌入式硬件,單片機(jī)

上圖可以看出:

  • 0-t1段,定時(shí)器計(jì)數(shù)器TIMx_CNT值小于CCRx值,輸出低電平
  • t1-t2段,定時(shí)器計(jì)數(shù)器TIMx_CNT值大于CCRx值,輸出高電平。

當(dāng)TIMx_CNT值達(dá)到ARR時(shí),定時(shí)器溢出,重新向上計(jì)數(shù)...循環(huán)此過程至此一個(gè)PWM周期完成

上圖更加形象的說明了

信號頻率由?TIMx_ARR?寄存器值決定。

占空比則由?TIMx_CCRx?寄存器值決定。

參考:

STM32 HAL庫:ADC+DMA應(yīng)用(連續(xù)采樣、觸發(fā)采樣)_hal adc dma-CSDN博客

【STM32】定時(shí)器TIM觸發(fā)ADC采樣,DMA搬運(yùn)到內(nèi)存(超詳細(xì)講解)-CSDN博客文章來源地址http://www.zghlxwxcb.cn/news/detail-846180.html

到了這里,關(guān)于定時(shí)器(PWM輸出)觸發(fā)ADC采樣(DMA)——STM32CubeMX的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • foc配置篇——ADC注入組使用定時(shí)器觸發(fā)采樣的配置

    foc配置篇——ADC注入組使用定時(shí)器觸發(fā)采樣的配置

    foc驅(qū)動板都會用到電流采樣,本篇就針對三電阻低測采樣來講一講如何配置ADC。 在此之前,或許大家使用ADC都是建立一個(gè)大數(shù)組,然后DMA無腦開著將數(shù)據(jù)搬到數(shù)組里,等到要用到時(shí)候就取出來做一個(gè)均值濾波。 ? 這種方法用在foc電流采樣上行不行呢?答案是看情況,如果你

    2024年02月01日
    瀏覽(140)
  • STM32 HAL庫 Timer(定時(shí)器)+DMA輸出PWM底層配置過程學(xué)習(xí)

    STM32 HAL庫 Timer(定時(shí)器)+DMA輸出PWM底層配置過程學(xué)習(xí)

    本文使用的芯片型號是STM32G030,寫本文的目前是想記錄學(xué)習(xí)下Timer借助DMA生成可變占空比PWM時(shí)的底層配置過程。 使用TIM1,配置就只改了圖上的配置,系統(tǒng)時(shí)鐘用的16M,分頻選擇15(16-1),自動重裝載寄存器ARR選擇999(1000-1),那么生成的就是1kHz的PWM,這里為什么要減1,因?yàn)檫@倆是

    2024年04月09日
    瀏覽(55)
  • STM32G0 定時(shí)器PWM DMA輸出驅(qū)動WS2812配置 LL庫

    STM32G0 定時(shí)器PWM DMA輸出驅(qū)動WS2812配置 LL庫

    優(yōu)點(diǎn):不消耗CPU資源 缺點(diǎn):占用內(nèi)存較大 定時(shí)器配置 定時(shí)器通道:TIM3 CH2 分頻:0 重裝值:79,芯片主頻64Mhz,因此PWM輸出頻率:64Mhz/79 ≈ 800Khz,滿足芯片要求。 auto-reload preload 要關(guān)閉 output compare preload 要打開 DMA配置 外設(shè)一定要選擇TIM3_UP,不要選TIM_CHx 方向是內(nèi)存到外設(shè),

    2024年02月10日
    瀏覽(118)
  • 【STM32】- 定時(shí)器+DMA+ADC 雙重模式

    【STM32】- 定時(shí)器+DMA+ADC 雙重模式

    目錄 ? 1 前言 2 ADC介紹 2.1 多重工作模式 2.2 多重ADC框圖 2.3 規(guī)則同時(shí)模式 3 程序設(shè)計(jì) 3.1 時(shí)序圖 3.2 初始化流程圖 3.3 初始化代碼 4 結(jié)論 ? ? ? ?關(guān)于ADC,相信大家都比較了解,關(guān)于STM32的學(xué)習(xí)教程都會有所講解,但以查詢方式、單通道講解的較多,主要告訴大家基本的原理。

    2024年02月10日
    瀏覽(25)
  • STM32 ADC+定時(shí)器+DMA+FFT

    STM32 ADC+定時(shí)器+DMA+FFT

    本次實(shí)現(xiàn)的功能為單片機(jī)DAC輸出一個(gè)正弦波,然后ADC定時(shí)采樣用DMA輸出,最后對DAC輸出的波形進(jìn)行FFT。 單片機(jī)STM32F103ZET6 內(nèi)部時(shí)鐘 一、配置ADC ADC端口為PA1,采用DMA輸出,定時(shí)器3觸發(fā) 定時(shí)器時(shí)鐘64M,分頻后為102.4KHz ADC采樣時(shí)間為102.4KHz/100=1.024KHz 二、配置DAC DAC端口PA4 DMA傳輸

    2024年02月13日
    瀏覽(29)
  • 定時(shí)器詳解 -- 定時(shí)器中斷、PWM輸出 --stm32

    定時(shí)器詳解 -- 定時(shí)器中斷、PWM輸出 --stm32

    STM32F103系列芯片擁有多種定時(shí)器,包括基本定時(shí)器、通用定時(shí)器和高級定時(shí)器,每種定時(shí)器都具有一些特定的功能。 向上計(jì)數(shù):計(jì)數(shù)器從0計(jì)數(shù)到自動重裝載值(ARR),然后重新從0開始計(jì)數(shù)并且產(chǎn)生一個(gè)計(jì)數(shù)器溢出事件。 向下計(jì)數(shù):計(jì)數(shù)器從自動重裝載值(ARR)開始向下計(jì)數(shù)

    2024年02月11日
    瀏覽(24)
  • STM32 HAL庫定時(shí)器觸發(fā)DMA并口數(shù)據(jù)傳輸

    STM32 HAL庫定時(shí)器觸發(fā)DMA并口數(shù)據(jù)傳輸

    STM32與FPGA通訊,通過8位并口線進(jìn)行通訊,16byte的數(shù)據(jù)在10us之內(nèi)通過8位并口數(shù)據(jù)線傳給FPGA,F(xiàn)PGA讀取該數(shù)據(jù)。 時(shí)鐘采用80MHz,由于16byte的數(shù)據(jù)要在10us之內(nèi)傳完,那么10/(16*2)=0.3125us/次,也就是傳輸頻率得≥3.2MHz。 定時(shí)器設(shè)置:為了方便起見,先選用了4MHz的傳輸頻率。80MHz

    2024年02月02日
    瀏覽(21)
  • STM32TIM定時(shí)器PWM輸出比較(適用于通用,高級定時(shí)器)

    STM32TIM定時(shí)器PWM輸出比較(適用于通用,高級定時(shí)器)

    在定時(shí)器中我們最常用的功能就是輸出PWM,大多是用在電機(jī)控制方面,目前網(wǎng)絡(luò)上相關(guān)資料也有很多,但是,很多不利于我們“現(xiàn)搜現(xiàn)用”我這里不是說我寫的有多好,而是你搜索到此類文章時(shí)大部分是急于解決目前的問題,一段相關(guān)代碼和講解就行,當(dāng)然不是學(xué)習(xí)背后的原

    2024年01月25日
    瀏覽(21)
  • STM32定時(shí)器輸出PWM脈沖

    STM32定時(shí)器輸出PWM脈沖

    一、什么是PWM脈沖? PWM (Pulse Width Modulation) 脈沖寬度調(diào)制,通常應(yīng)用于慣性系統(tǒng)中,( 不是不能即停的設(shè)備,因?yàn)槿绻O(shè)備不具有關(guān)心,那么運(yùn)動是斷斷續(xù)續(xù)的,不具有連續(xù)性 ),通過脈寬調(diào)節(jié)輸出不同的波形作用域受控對象。 二、 PWM中三個(gè)重要的參數(shù) 1.頻率=1/Ts ;這個(gè)很

    2024年02月15日
    瀏覽(24)
  • 【嵌入式】HC32F定時(shí)器PWM捕獲+APC芯片實(shí)現(xiàn)模擬AD采樣

    【嵌入式】HC32F定時(shí)器PWM捕獲+APC芯片實(shí)現(xiàn)模擬AD采樣

    目錄 一 項(xiàng)目背景 二 原理說明 三 設(shè)計(jì)實(shí)現(xiàn)——定時(shí)器初始化 四 設(shè)計(jì)實(shí)現(xiàn)——PWM捕獲 五 梳理總結(jié) ? ? ? ? 目前使用了TI的ADC采樣芯片 ADS1018實(shí)現(xiàn)模擬量4-20mA/0-20mA的采樣 ,原理是 將外部輸入的模擬量信號4-20mA,經(jīng)由并聯(lián)的兩個(gè)100Ω電阻,轉(zhuǎn)換為0.2-1V的電壓信號傳遞到模數(shù)轉(zhuǎn)

    2023年04月24日
    瀏覽(24)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包