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

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

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

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

STM32F10x_ADC三通道逐次轉(zhuǎn)換 (單次、單通道軟件觸發(fā))

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

掃碼添加小助手

加入工程師交流群

Ⅰ、概述

本文講述關(guān)于STM32功能比較強大的ADC模塊。ADC(Analog to Digital Converter)也就是模擬量轉(zhuǎn)化為數(shù)字量,而STM32的ADC模塊功能比較多,本文主要講述“三條通道逐次轉(zhuǎn)換(單次、單通道軟件觸發(fā))”。

根據(jù)筆者的經(jīng)驗,STM32所有系列芯片的ADC模塊功能及配置都差不多。因此,本文雖是以F1為例,其實其他系列(F0、F2、F4等)都適用。

本文提供實例代碼:三條通道,配置為逐次轉(zhuǎn)換(間隔模式),適用軟件觸發(fā)轉(zhuǎn)換(每觸發(fā)一次轉(zhuǎn)換一條通道),一個循環(huán)也就是需要軟件觸發(fā)三次。

實例實驗效果:

通道1接地、通道2接1.5V電源、通道3接VCC

本文講述的知識點相對較多,若初次學習STM32的ADC轉(zhuǎn)換功能,可以參考我另外一篇相對簡單一點的文章:

STM32F10x_ADC1單通道單次采集

關(guān)于本文的更多詳情請往下看。

Ⅱ、實例工程下載

筆者針對于初學者提供的例程都是去掉了許多不必要的功能,精簡了官方的代碼,對初學者一看就明白,以簡單明了的工程供大家學習。

筆者提供的實例工程都是在板子上經(jīng)過多次測試并沒有問題才上傳至360云盤,歡迎下載測試、參照學習。

提供下載的軟件工程是基于Keil(MDK-ARM) V5版本、STM32F103ZE芯片,但F1其他型號也適用(適用F1其他型號: 關(guān)注微信,回復“修改型號”)。

STM32F10x_ADC三通道逐次轉(zhuǎn)換(單次、單通道軟件觸發(fā))實例源代碼工程:

https://yunpan.cn/cBNcrax8UHhmE訪問密碼 8bae

STM32F1資料:

https://yunpan.cn/crBUdUGdYKam2訪問密碼 ca90

Ⅲ、關(guān)于ADC

關(guān)于ADC的介紹及功能,請下載參考手冊查看,筆者這里講述幾點重要的知識:

1.12位分辨率

在STM32所有系列芯片中只有少部分是16位的,如:F373芯片。

12位分辨率意味著我們采集電壓的精度可以達到:Vref /4096。

采集電壓 = Vref * ADC_DR / 4096;

Vref:參考電壓

ADC_DR:讀取到ADC數(shù)據(jù)寄存器的值

由于寄存器是32位的,在配置的時候分左對齊和右對齊,一般我們使用右對齊,也就是對低12位數(shù)據(jù)為有效數(shù)據(jù)。

2.轉(zhuǎn)換模式

A.單次和連續(xù)轉(zhuǎn)換

單次:單通道單次轉(zhuǎn)換、多通道單次(分多次)轉(zhuǎn)換;

連續(xù):單通道連續(xù)轉(zhuǎn)換、多通道連續(xù)(循環(huán))轉(zhuǎn)換;

B.雙ADC模式

也就是使用到了兩個ADC,比如:ADC1和ADC2同時使用也就是雙ADC模式。在該模式下可以配置為如下一些模式:同步規(guī)則模式、同步注入模式、獨立模式等。

3.觸發(fā)源

觸發(fā)源就是觸發(fā)ADC轉(zhuǎn)換的來源,有外部中斷線、定時器、軟件等觸發(fā)源。我們初學者常用軟件觸發(fā),也就是需要轉(zhuǎn)換一次,我們軟件啟動一次(本文提供實例也是軟件觸發(fā))。

Ⅳ、本文實例描述

本文實例中關(guān)于ADC部分的配置及知識點,針對初學者相對比較多、理解起來也相對比較難一點。

根據(jù)題目“ADC三通道逐次轉(zhuǎn)換(單次、單通道軟件觸發(fā))”我們不難理解其轉(zhuǎn)換的過程,但如何實現(xiàn)是一個難點。

1、三通道:我們定義了3條通道ADC1的ADC_Channel_1、ADC_Channel_2、ADC_Channel_3.

2.逐次轉(zhuǎn)換:我們使用的是間斷模式(規(guī)則組),也就是在規(guī)則組中定義了觸發(fā)轉(zhuǎn)換的序列。

3.單次:我們是沒觸發(fā)一次轉(zhuǎn)換一次。

4.單通道:每次觸發(fā)只轉(zhuǎn)換一條通道。

Ⅴ、源代碼分析

筆者以F1標準外設(shè)庫(同時也建議初學者使用官方的標準外設(shè)庫)為基礎(chǔ)建立的工程,主要以庫的方式來講述(若您的F1芯片與提供工程不一樣,可微信回復“修改型號”)。

下面將講述ADC重要的幾點:

1.輸入引腳配置


該函數(shù)位于adc.c文件下面;

引腳與通道的對應(yīng)關(guān)系請參看你使用芯片的數(shù)據(jù)手冊。


注意:

為什么是“ADC123_IN1”?而不是ADC1_IN1,或者ADC2_IN1?

原因是ADC1、ADC2和ADC3共用這些引腳。

2.ADC配置


該函數(shù)位于rtc.c文件下面;

這個函數(shù)是本文的重點,是配置工作模式、規(guī)則通道及間斷模式等的重點。下面依次來講述源代碼內(nèi)容的意思;

A.初始化基本參數(shù):

工作模式:ADC_Mode = ADC_Mode_RegSimult;

總共有10種,主要都是針對雙ADC下使用。針對初學者這里不多描述,感興趣的朋友可以先自行研究一下各個模式的使用。

瀏覽模式:ADC_ScanConvMode = ENABLE;

主要是針對多條通道而言,也就是說你是否有多條通道。

多通道:ENABLE;

單通道:DISABLE;

轉(zhuǎn)換模式:ADC_ContinuousConvMode = DISABLE;

這里是配置是否需要連續(xù)轉(zhuǎn)換。

連續(xù)轉(zhuǎn)換ENABLE:也就是只需要啟動(觸發(fā))轉(zhuǎn)換一次,后面就不用再次啟動(觸發(fā))就可以連續(xù)工作了。

單次轉(zhuǎn)換DISABLE:也就是根據(jù)一次轉(zhuǎn)換完后需要再次啟動(觸發(fā))才能工作。

觸發(fā)方式:ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;

觸發(fā)方式也就是使用什么方法觸發(fā)ADC轉(zhuǎn)換。喲定時器、外部觸發(fā)、軟件觸發(fā),一般常用軟件觸發(fā)。這里有很多種觸發(fā)方式,詳情可以參考其參數(shù)。

對其方式:ADC_DataAlign = ADC_DataAlign_Right;

右對其:低12位數(shù)據(jù)為有效位(常用);

左對其:高12為數(shù)據(jù)為有效位;

通道數(shù):ADC_NbrOfChannel = 3;

這個參數(shù)比較簡單,我們定義工作的通道數(shù)量。

B.設(shè)置規(guī)則組通道:

ADC_RegularChannelConfig(ADC1, ADC_Channel_1, 1, ADC_SampleTime_55Cycles5);

ADC_RegularChannelConfig(ADC1, ADC_Channel_2, 2, ADC_SampleTime_55Cycles5);

ADC_RegularChannelConfig(ADC1, ADC_Channel_3, 3, ADC_SampleTime_55Cycles5);

我們定義通道1的轉(zhuǎn)換順序為第1、通道2的轉(zhuǎn)換順序為第2、通道3的轉(zhuǎn)換順序為第3;

ADC_DiscModeChannelCountConfig(ADC1, 1);

ADC_DiscModeCmd(ADC1, ENABLE);

規(guī)則組間斷模式配置。我們配置短序列為1,也就是說每觸發(fā)一次轉(zhuǎn)換一條通道。

關(guān)于間斷模式請看參考手冊。

C.校驗:

ADC_ResetCalibration(ADC1); //校驗復位

while(ADC_GetResetCalibrationStatus(ADC1)); //等待復位完成

ADC_StartCalibration(ADC1); //開始ADC1校準

while(ADC_GetCalibrationStatus(ADC1)); //等待校驗完成

建議每次上電校正一次。

ADC有一個內(nèi)置自校準模式。校準可大幅減小因內(nèi)部電容器組的變化而造成的準精度誤差。在校準期間,在每個電容器上都會計算出一個誤差修正碼(數(shù)字值),這個碼用于消除在隨后的轉(zhuǎn)換中每個電容器上產(chǎn)生的誤差。

3.ADC采集


該函數(shù)位于adc.c文件下面;

上面的配置完成之后,就是實際采集數(shù)據(jù)的過程了。由于我們配置的是瀏覽(循環(huán))模式,單次采集,也就是說我們沒調(diào)用觸發(fā)一次該函數(shù),就會循環(huán)采集一條通道。

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

    關(guān)注

    2

    文章

    81

    瀏覽量

    21192
  • Vcc
    Vcc
    +關(guān)注

    關(guān)注

    2

    文章

    308

    瀏覽量

    38844
  • ADC模塊
    +關(guān)注

    關(guān)注

    1

    文章

    19

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

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

    Texas Instruments ADS981x系列8通道數(shù)據(jù)采集系統(tǒng)技術(shù)解析

    Texas Instruments ADS981x 8通道數(shù)據(jù)采集 (DAQ) 系統(tǒng)基于雙通道、同步采樣、18位逐次逼近寄存器 (SAR) 模數(shù)轉(zhuǎn)換
    的頭像 發(fā)表于 09-06 09:46 ?493次閱讀
    Texas Instruments ADS981<b class='flag-5'>x</b>系列8<b class='flag-5'>通道</b>數(shù)據(jù)采集系統(tǒng)技術(shù)解析

    三通道 LCD 偏置電源管理 IC,帶有三通道高效白光 LED 驅(qū)動器 skyworksinc

    電子發(fā)燒友網(wǎng)為你提供()三通道 LCD 偏置電源管理 IC,帶有三通道高效白光 LED 驅(qū)動器相關(guān)產(chǎn)品參數(shù)、數(shù)據(jù)手冊,更有三通道 LCD 偏置電源管理 IC,帶有三通道高效白光 LED
    發(fā)表于 07-30 18:33
    <b class='flag-5'>三通道</b> LCD 偏置電源管理 IC,帶有<b class='flag-5'>三通道</b>高效白光 LED 驅(qū)動器 skyworksinc

    STM32通道FFT運算異常的原因?怎么解決?

    :CMSIS-DSParm_rfft_fast_f32 內(nèi)存分配:靜態(tài) DMA設(shè)置:ADC -> 內(nèi)存,使用雙緩沖 、復現(xiàn)方法 系統(tǒng)啟動后,DMA連續(xù)采集16通道數(shù)據(jù)至bu
    發(fā)表于 06-19 06:27

    國產(chǎn)8/16通道ADC用于多通道精密采集,替換AD4115

    國產(chǎn)8/16通道ADC用于多通道精密采集,替換AD4115
    的頭像 發(fā)表于 03-31 10:22 ?833次閱讀
    國產(chǎn)8/16<b class='flag-5'>通道</b><b class='flag-5'>ADC</b>用于多<b class='flag-5'>通道</b>精密采集,替換AD4115

    端16通道12位2MSPS ADC SC1425應(yīng)用于光模塊信號監(jiān)控

    端16通道12位2MSPS ADC SC1425應(yīng)用于光模塊信號監(jiān)控
    的頭像 發(fā)表于 03-21 10:03 ?589次閱讀
    <b class='flag-5'>單</b>端16<b class='flag-5'>通道</b>12位2MSPS <b class='flag-5'>ADC</b> SC1425應(yīng)用于光模塊信號監(jiān)控

    ADS1278采集數(shù)據(jù)不對,偶爾出現(xiàn)后三通道的數(shù)據(jù)等于前三通道,請問這是什么原因?

    我用ADS1278,8通道,SPI模式,如果用CLK-11.0592Mhz的晶振,SCLK用5MHZ,數(shù)據(jù)采集正確,若果把晶振(CLK)提高到20M以上,SCK頻率提高,采集數(shù)據(jù)不對,偶爾出現(xiàn)后三通道的數(shù)據(jù)等于前三通道,請問這
    發(fā)表于 02-13 08:26

    EV10AS940芯片通道模數(shù)轉(zhuǎn)換器(ADC

    EV10AS940芯片通道模數(shù)轉(zhuǎn)換器(ADC)EV10AS940是一款高性能的
    發(fā)表于 01-24 08:44

    STM32采集ADC128S022單通道采集實際值與測量值誤差0.0幾個毫伏是什么原因?qū)е碌模?/a>

    急:STM32采集ADC128S022單通道采集實際值與測量值誤差0.0幾個毫伏,4通道采集誤差大概3 4個毫伏,是不是采集通道數(shù)多了誤差
    發(fā)表于 01-13 06:40

    ADS1247工作于3通道端模式,數(shù)據(jù)讀取異常的原因?怎么解決?

    ADC轉(zhuǎn)換結(jié)果。但MCU運行后第一讀取的結(jié)果總是0(MCU硬上電或者復位)。 2、循環(huán)依次讀取0、1、2個模擬輸入通道的結(jié)果,結(jié)果發(fā)現(xiàn)
    發(fā)表于 12-31 07:37

    ADC124S021同時使用兩個通道,兩個通道轉(zhuǎn)換數(shù)據(jù)發(fā)生串擾怎么解決?

    用DSP的SPI接口接ADC124S021,如果只是進行單通道的信號采集,則轉(zhuǎn)換后的數(shù)值穩(wěn)定,但是同時使用兩個通道時則兩個通道的數(shù)據(jù)發(fā)生串
    發(fā)表于 12-30 07:41

    ADC122s021通道轉(zhuǎn)換輸出數(shù)據(jù)總是跳動,怎么解決?

    ADC122s021通道轉(zhuǎn)換正常,但為什么通道轉(zhuǎn)換輸出數(shù)據(jù)總是跳動? 通道一發(fā)送0
    發(fā)表于 12-23 06:49

    淺談瑞盟科技·MS5173M——16bit、單通道、200kSPS、 SAR 型 ADC

    MS5173M 是單通道、16bit、電荷再分配逐次逼近型模數(shù)轉(zhuǎn)換器,采用電源供電。提供FAE支持,歡迎咨詢了解
    的頭像 發(fā)表于 12-19 17:09 ?1299次閱讀
    淺談瑞盟科技·MS5173M——16bit、<b class='flag-5'>單通道</b>、200kSPS、 SAR 型 <b class='flag-5'>ADC</b>

    ISO67xx三通道和四通道數(shù)字隔離器評估模塊

    電子發(fā)燒友網(wǎng)站提供《ISO67xx三通道和四通道數(shù)字隔離器評估模塊.pdf》資料免費下載
    發(fā)表于 11-25 14:19 ?0次下載
    ISO67xx<b class='flag-5'>三通道</b>和四<b class='flag-5'>通道</b>數(shù)字隔離器評估模塊

    使用ads131a04進行模擬數(shù)據(jù)采集,四通道同時采集時,通道四的數(shù)據(jù)存在問題如何解決?

    我們的產(chǎn)品使用ads131a04進行模擬數(shù)據(jù)采集,測試發(fā)現(xiàn)四通道同時采集時,通道四的數(shù)據(jù)存在問題。當輸入低電平交流信號時,通道四的數(shù)據(jù)如下圖,其余三通道采集正常。 檢查硬件電路無問
    發(fā)表于 11-18 07:25

    MS5185T——三通道、低噪聲、低功耗 20 位∑-Δ ADC

    MS5185T 為適合高精度測量應(yīng)用的低功耗、低噪聲、三通道差分輸入的 20bit 模數(shù)轉(zhuǎn)換器。提供方案和FAE支持,歡迎大家咨詢了解
    的頭像 發(fā)表于 11-14 10:35 ?1054次閱讀
    MS5185T——<b class='flag-5'>三通道</b>、低噪聲、低功耗 20 位∑-Δ <b class='flag-5'>ADC</b>