www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當前位置:首頁 > 單片機 > 單片機
[導(dǎo)讀]Ⅰ、概述本文講述關(guān)于STM32功能比較強大的ADC模塊。ADC(Analog to Digital Converter)也就是模擬量轉(zhuǎn)化為數(shù)字量,而STM32的ADC模塊功能比較多,本文主要講述“三條通道逐次轉(zhuǎn)換(單次、單通道軟件觸發(fā))”。根據(jù)筆者的

Ⅰ、概述

本文講述關(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)注微信,回復(fù)“修改型號”)。

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

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

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芯片與提供工程不一樣,可微信回復(fù)“修改型號”)。

下面將講述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); //校驗復(fù)位

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

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)采集一條通道。

Ⅵ、說明

關(guān)于STM32的ADC轉(zhuǎn)換這一塊功能確實交強大也相對來說比較復(fù)雜,或許文中講述的還不夠清楚,若有不清楚的可以關(guān)注微信,在微信上留言。

關(guān)于筆者提供的軟件工程實例,可關(guān)注微信,在會話框回復(fù)“關(guān)于工程”,有關(guān)于工程結(jié)構(gòu)描述、型號修改等講述。

以上總結(jié)僅供參考,若有不對之處,敬請諒解。


本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

LED驅(qū)動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: 驅(qū)動電源

在工業(yè)自動化蓬勃發(fā)展的當下,工業(yè)電機作為核心動力設(shè)備,其驅(qū)動電源的性能直接關(guān)系到整個系統(tǒng)的穩(wěn)定性和可靠性。其中,反電動勢抑制與過流保護是驅(qū)動電源設(shè)計中至關(guān)重要的兩個環(huán)節(jié),集成化方案的設(shè)計成為提升電機驅(qū)動性能的關(guān)鍵。

關(guān)鍵字: 工業(yè)電機 驅(qū)動電源

LED 驅(qū)動電源作為 LED 照明系統(tǒng)的 “心臟”,其穩(wěn)定性直接決定了整個照明設(shè)備的使用壽命。然而,在實際應(yīng)用中,LED 驅(qū)動電源易損壞的問題卻十分常見,不僅增加了維護成本,還影響了用戶體驗。要解決這一問題,需從設(shè)計、生...

關(guān)鍵字: 驅(qū)動電源 照明系統(tǒng) 散熱

根據(jù)LED驅(qū)動電源的公式,電感內(nèi)電流波動大小和電感值成反比,輸出紋波和輸出電容值成反比。所以加大電感值和輸出電容值可以減小紋波。

關(guān)鍵字: LED 設(shè)計 驅(qū)動電源

電動汽車(EV)作為新能源汽車的重要代表,正逐漸成為全球汽車產(chǎn)業(yè)的重要發(fā)展方向。電動汽車的核心技術(shù)之一是電機驅(qū)動控制系統(tǒng),而絕緣柵雙極型晶體管(IGBT)作為電機驅(qū)動系統(tǒng)中的關(guān)鍵元件,其性能直接影響到電動汽車的動力性能和...

關(guān)鍵字: 電動汽車 新能源 驅(qū)動電源

在現(xiàn)代城市建設(shè)中,街道及停車場照明作為基礎(chǔ)設(shè)施的重要組成部分,其質(zhì)量和效率直接關(guān)系到城市的公共安全、居民生活質(zhì)量和能源利用效率。隨著科技的進步,高亮度白光發(fā)光二極管(LED)因其獨特的優(yōu)勢逐漸取代傳統(tǒng)光源,成為大功率區(qū)域...

關(guān)鍵字: 發(fā)光二極管 驅(qū)動電源 LED

LED通用照明設(shè)計工程師會遇到許多挑戰(zhàn),如功率密度、功率因數(shù)校正(PFC)、空間受限和可靠性等。

關(guān)鍵字: LED 驅(qū)動電源 功率因數(shù)校正

在LED照明技術(shù)日益普及的今天,LED驅(qū)動電源的電磁干擾(EMI)問題成為了一個不可忽視的挑戰(zhàn)。電磁干擾不僅會影響LED燈具的正常工作,還可能對周圍電子設(shè)備造成不利影響,甚至引發(fā)系統(tǒng)故障。因此,采取有效的硬件措施來解決L...

關(guān)鍵字: LED照明技術(shù) 電磁干擾 驅(qū)動電源

開關(guān)電源具有效率高的特性,而且開關(guān)電源的變壓器體積比串聯(lián)穩(wěn)壓型電源的要小得多,電源電路比較整潔,整機重量也有所下降,所以,現(xiàn)在的LED驅(qū)動電源

關(guān)鍵字: LED 驅(qū)動電源 開關(guān)電源

LED驅(qū)動電源是把電源供應(yīng)轉(zhuǎn)換為特定的電壓電流以驅(qū)動LED發(fā)光的電壓轉(zhuǎn)換器,通常情況下:LED驅(qū)動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: LED 隧道燈 驅(qū)動電源
關(guān)閉