精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

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

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

3天內不再提示

STM32F10x_ADC三通道逐次轉換 (單次、單通道軟件觸發)

黃工的嵌入式技術圈 ? 來源:黃工的嵌入式技術圈 ? 2020-03-25 11:41 ? 次閱讀

Ⅰ、概述

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

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

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

實例實驗效果:

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

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

STM32F10x_ADC1單通道單次采集

關于本文的更多詳情請往下看。

Ⅱ、實例工程下載

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

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

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

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

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

STM32F1資料

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

Ⅲ、關于ADC

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

1.12位分辨率

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

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

采集電壓 = Vref * ADC_DR / 4096;

Vref:參考電壓

ADC_DR:讀取到ADC數據寄存器的值

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

2.轉換模式

A.單次和連續轉換

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

連續:單通道連續轉換、多通道連續(循環)轉換;

B.雙ADC模式

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

3.觸發源

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

Ⅳ、本文實例描述

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

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

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

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

3.單次:我們是沒觸發一次轉換一次。

4.單通道:每次觸發只轉換一條通道。

Ⅴ、源代碼分析

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

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

1.輸入引腳配置


該函數位于adc.c文件下面;

引腳與通道的對應關系請參看你使用芯片的數據手冊。


注意:

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

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

2.ADC配置


該函數位于rtc.c文件下面;

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

A.初始化基本參數

工作模式:ADC_Mode = ADC_Mode_RegSimult;

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

瀏覽模式:ADC_ScanConvMode = ENABLE;

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

多通道:ENABLE;

單通道:DISABLE;

轉換模式:ADC_ContinuousConvMode = DISABLE;

這里是配置是否需要連續轉換。

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

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

觸發方式:ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;

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

對其方式:ADC_DataAlign = ADC_DataAlign_Right;

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

左對其:高12為數據為有效位;

通道數:ADC_NbrOfChannel = 3;

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

B.設置規則組通道:

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的轉換順序為第1、通道2的轉換順序為第2、通道3的轉換順序為第3;

ADC_DiscModeChannelCountConfig(ADC1, 1);

ADC_DiscModeCmd(ADC1, ENABLE);

規則組間斷模式配置。我們配置短序列為1,也就是說每觸發一次轉換一條通道。

關于間斷模式請看參考手冊。

C.校驗:

ADC_ResetCalibration(ADC1); //校驗復位

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

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

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

建議每次上電校正一次。

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

3.ADC采集


該函數位于adc.c文件下面;

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

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

    關注

    1

    文章

    81

    瀏覽量

    20661
  • Vcc
    Vcc
    +關注

    關注

    2

    文章

    305

    瀏覽量

    35863
  • ADC模塊
    +關注

    關注

    1

    文章

    19

    瀏覽量

    11060
收藏 人收藏

    評論

    相關推薦

    ISO67xx三通道和四通道數字隔離器評估模塊

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

    ADS126x精密5通道10通道40kSPS 24位Δ-Σ ADC數據表

    電子發燒友網站提供《ADS126x精密5通道10通道40kSPS 24位Δ-Σ ADC數據表.pdf》資料免費下載
    發表于 07-23 11:37 ?0次下載
    ADS126<b class='flag-5'>x</b>精密5<b class='flag-5'>通道</b>和<b class='flag-5'>10</b><b class='flag-5'>通道</b>40kSPS 24位Δ-Σ <b class='flag-5'>ADC</b>數據表

    ADC12xJ1600四通道/雙通道/單通道模數轉換器(ADC)數據表

    電子發燒友網站提供《ADC12xJ1600四通道/雙通道/單通道模數轉換器(ADC)數據表.pd
    發表于 07-15 11:25 ?0次下載
    <b class='flag-5'>ADC</b>12xJ1600四<b class='flag-5'>通道</b>/雙<b class='flag-5'>通道</b>/<b class='flag-5'>單通道</b>模數<b class='flag-5'>轉換</b>器(<b class='flag-5'>ADC</b>)數據表

    ADC12xJ1600-Q1四通道/雙通道/單通道、1.6GSPS、12位模數轉換器(ADC)數據表

    電子發燒友網站提供《ADC12xJ1600-Q1四通道/雙通道/單通道、1.6GSPS、12位模數轉換器(
    發表于 07-15 11:24 ?0次下載
    <b class='flag-5'>ADC</b>12xJ1600-Q1四<b class='flag-5'>通道</b>/雙<b class='flag-5'>通道</b>/<b class='flag-5'>單通道</b>、1.6GSPS、12位模數<b class='flag-5'>轉換</b>器(<b class='flag-5'>ADC</b>)數據表

    ADC12xJ800四通道/雙通道/單通道800MSPS 12位模數轉換器(ADC)數據表

    電子發燒友網站提供《ADC12xJ800四通道/雙通道/單通道800MSPS 12位模數轉換器(ADC
    發表于 07-15 11:22 ?0次下載
    <b class='flag-5'>ADC</b>12xJ800四<b class='flag-5'>通道</b>/雙<b class='flag-5'>通道</b>/<b class='flag-5'>單通道</b>800MSPS 12位模數<b class='flag-5'>轉換</b>器(<b class='flag-5'>ADC</b>)數據表

    ADC12xJ800-Q1四通道/雙通道/單通道、800MSPS、12位模數轉換器(ADC)數據表

    電子發燒友網站提供《ADC12xJ800-Q1四通道/雙通道/單通道、800MSPS、12位模數轉換器(
    發表于 07-15 11:21 ?1次下載
    <b class='flag-5'>ADC</b>12xJ800-Q1四<b class='flag-5'>通道</b>/雙<b class='flag-5'>通道</b>/<b class='flag-5'>單通道</b>、800MSPS、12位模數<b class='flag-5'>轉換</b>器(<b class='flag-5'>ADC</b>)數據表

    ADC09xJ1300-Q1四通道/雙通道/單通道、1.3GSPS、9位模數轉換器(ADC)數據表

    電子發燒友網站提供《ADC09xJ1300-Q1四通道/雙通道/單通道、1.3GSPS、9位模數轉換器(
    發表于 07-15 11:16 ?0次下載
    <b class='flag-5'>ADC</b>09xJ1300-Q1四<b class='flag-5'>通道</b>/雙<b class='flag-5'>通道</b>/<b class='flag-5'>單通道</b>、1.3GSPS、9位模數<b class='flag-5'>轉換</b>器(<b class='flag-5'>ADC</b>)數據表

    ADC09xJ800四通道/雙通道/單通道800MSPS 9位模數轉換器(ADC)數據表

    電子發燒友網站提供《ADC09xJ800四通道/雙通道/單通道800MSPS 9位模數轉換器(ADC
    發表于 07-15 11:15 ?0次下載
    <b class='flag-5'>ADC</b>09xJ800四<b class='flag-5'>通道</b>/雙<b class='flag-5'>通道</b>/<b class='flag-5'>單通道</b>800MSPS 9位模數<b class='flag-5'>轉換</b>器(<b class='flag-5'>ADC</b>)數據表

    ADC09xJ1300四通道/雙通道/單通道1.3GSPS 9位模數轉換器(ADC)數據表

    電子發燒友網站提供《ADC09xJ1300四通道/雙通道/單通道1.3GSPS 9位模數轉換器(ADC
    發表于 07-15 11:01 ?0次下載
    <b class='flag-5'>ADC</b>09xJ1300四<b class='flag-5'>通道</b>/雙<b class='flag-5'>通道</b>/<b class='flag-5'>單通道</b>1.3GSPS 9位模數<b class='flag-5'>轉換</b>器(<b class='flag-5'>ADC</b>)數據表

    CW32使用DMA單通道、定時器觸發ADC實現了多路AD采集

    本測試樣例基于CW32F030C8T6MCU,使用DMA單通道、定時器觸發ADC實現了12路AD采集。
    的頭像 發表于 05-24 09:29 ?796次閱讀
    CW32使用DMA<b class='flag-5'>單通道</b>、定時器<b class='flag-5'>觸發</b><b class='flag-5'>ADC</b>實現了多路AD采集

    STM32F0 ADC通道轉換,最后一個通道的EOC不置位是為什么?

    STM32F030 ADC采樣序列中包括IN0,IN1,IN2通道,采用
    發表于 04-16 06:34

    汽車類四通道/三通道/雙通道/單通道窗口或標準電壓監控器TPS3704-Q1數據表

    電子發燒友網站提供《汽車類四通道/三通道/雙通道/單通道窗口或標準電壓監控器TPS3704-Q1數據表.pdf》資料免費下載
    發表于 03-21 10:06 ?0次下載
    汽車類四<b class='flag-5'>通道</b>/<b class='flag-5'>三通道</b>/雙<b class='flag-5'>通道</b>/<b class='flag-5'>單通道</b>窗口或標準電壓監控器TPS3704-Q1數據表

    具有1.8V邏輯電平的24V、8:1單通道、4:1雙通道和2:1三通道多路復用器TMUX405x數據表

    電子發燒友網站提供《具有1.8V邏輯電平的24V、8:1單通道、4:1雙通道和2:1三通道多路復用器TMUX405x數據表.pdf》資料免費下載
    發表于 03-20 16:11 ?0次下載
    具有1.8V邏輯電平的24V、8:1<b class='flag-5'>單通道</b>、4:1雙<b class='flag-5'>通道</b>和2:1<b class='flag-5'>三通道</b>多路復用器TMUX405<b class='flag-5'>x</b>數據表

    通道/三通道/雙通道窗口或標準電壓監控器TPS3704x數據表

    電子發燒友網站提供《四通道/三通道/雙通道窗口或標準電壓監控器TPS3704x數據表.pdf》資料免費下載
    發表于 03-14 09:41 ?0次下載
    四<b class='flag-5'>通道</b>/<b class='flag-5'>三通道</b>/雙<b class='flag-5'>通道</b>窗口或標準電壓監控器TPS3704<b class='flag-5'>x</b>數據表

    需要讓AD7176-2讀取4個模擬通道的數據,如何不影響ADC對0通道進行的AD轉換

    公司項目中的一塊電路板上,需要讓AD7176-2讀取4個模擬通道的數據,由于其中0號通道上的輸入存在較大的擾動,需要開啟增強型50/60Hz濾波器,導致該通道
    發表于 12-18 07:26