STM32F407_ADC查詢模式配置介紹
1.ADC對(duì)應(yīng)管腳介紹
|---管腳------對(duì)應(yīng)ADC----||---管腳------對(duì)應(yīng)ADC----|
| PA0 <---> ADC123_IN0 || PA1 <---> ADC123_IN1 |
| PA2 <---> ADC123_IN2 || PA3 <---> ADC123_IN3 |
| PA4 <---> ADC12_IN4 || PA5 <---> ADC12_IN5 |
| PA6 <---> ADC12_IN6 || PA7 <---> ADC12_IN7 |
| PB0 <---> ADC12_IN8 || PB1 <---> ADC12_IN9 |
| PC4 <---> ADC12_IN14 || PC5 <---> ADC12_IN15 |
| PC0 <---> ADC123_IN10|| PC1 <---> ADC123_IN11|
| PC2 <---> ADC123_IN12|| PC3 <---> ADC123_IN13|
| PF3 <---> ADC3_IN9 || PF4 <---> ADC3_IN14 |
| PF5 <---> ADC3_IN15 || PF6 <---> ADC3_IN4 |
| PF7 <---> ADC3_IN5 || PF8 <---> ADC3_IN6 |
| PF9 <---> ADC3_IN7 || PF10<---> ADC3_IN8 |
2.配置查詢模式如下
void ADC_Configuration(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
ADC_InitTypeDef ADC_InitStructure;
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE);
//初始化GPIOA的Pin_0為模擬量輸入
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AN;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL ;
GPIO_Init(GPIOA, &GPIO_InitStructure);
ADC_DeInit();
ADC_InitStructure.ADC_Resolution = ADC_Resolution_12b; //精度為12位
ADC_InitStructure.ADC_ScanConvMode = DISABLE; //掃描轉(zhuǎn)換模式失能,單通道不用
ADC_InitStructure.ADC_ContinuousConvMode = ENABLE; //連續(xù)轉(zhuǎn)換使能
ADC_InitStructure.ADC_ExternalTrigConvEdge = ADC_ExternalTrigConvEdge_None; //不用外部觸發(fā),軟件觸發(fā)轉(zhuǎn)換
ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_T1_CC1;
ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right; //數(shù)據(jù)右對(duì)齊,低字節(jié)對(duì)齊
ADC_InitStructure.ADC_NbrOfConversion = 1; //規(guī)定了順序進(jìn)行規(guī)則轉(zhuǎn)換的ADC通道的數(shù)目
ADC_Init(ADC1, &ADC_InitStructure);
ADC_RegularChannelConfig(ADC1, ADC_Channel_0, 1, ADC_SampleTime_3Cycles);//ADC,通道,1轉(zhuǎn)換,所選通道的采樣周期
ADC_Cmd(ADC1, ENABLE); //使能
ADC_SoftwareStartConv(ADC1); //軟件啟動(dòng)轉(zhuǎn)換
}
unsigned short GetADCValue(void)
{
return ADC_GetConversionValue(ADC1);
}
3.其他具體配置介紹如下
通道選擇:
可以把轉(zhuǎn)換組織成兩組:規(guī)則組和注入組。在任意多個(gè)通道上以任意順序進(jìn)行的一系列
轉(zhuǎn)換構(gòu)成成組轉(zhuǎn)換。例如,可以如下順序完成轉(zhuǎn)換:通道 3、通道 8、通道 2、通道 2、通道
0、通道 2、通道 2、通道 15。
規(guī)則組由多達(dá) 16 個(gè)轉(zhuǎn)換組成。規(guī)則通道和它們的轉(zhuǎn)換順序在 ADC_SQRx 寄存器中選擇。
規(guī)則組中轉(zhuǎn)換的總數(shù)應(yīng)寫入 ADC_SQR1 寄存器的 L[3:0]位中。
注入組由多達(dá) 4 個(gè)轉(zhuǎn)換組成。注入通道和它們的轉(zhuǎn)換順序在 ADC_JSQR 寄存器中選擇。
注入組里的轉(zhuǎn)換總數(shù)目應(yīng)寫入 ADC_JSQR 寄存器的 L[1:0]位中。?如果 ADC_SQRx 或 ADC_JSQR
寄存器在轉(zhuǎn)換期間被更改,當(dāng)前的轉(zhuǎn)換被清除,一個(gè)新的啟動(dòng)脈沖將發(fā)送到 ADC 以轉(zhuǎn)換新
選擇的組。
單次轉(zhuǎn)換模式:
單次轉(zhuǎn)換模式下,ADC 只執(zhí)行一次轉(zhuǎn)換。該模式既可通過(guò)設(shè)置 ADC_CR2 寄存器的 ADON
位(只適用于規(guī)則通道)啟動(dòng)也可通過(guò)外部觸發(fā)啟動(dòng)(適用于規(guī)則通道或注入通道),這 時(shí) CONT
位為 0。
一旦選擇通道的轉(zhuǎn)換完成:
如果一個(gè)規(guī)則通道被轉(zhuǎn)換:
─轉(zhuǎn)換數(shù)據(jù)被儲(chǔ)存在 16 位 ADC_DR 寄存器中
─EOC(轉(zhuǎn)換結(jié)束)標(biāo)志被設(shè)置?─?如果設(shè)置了 EOCIE,則產(chǎn)生中斷。
如果一個(gè)注入通道被轉(zhuǎn)換:
─轉(zhuǎn)換數(shù)據(jù)被儲(chǔ)存在 16 位的 ADC_DRJ1 寄存器中
─JEOC(注入轉(zhuǎn)換結(jié)束)標(biāo)志被設(shè)置?─?如果設(shè)置了 JEOCIE 位,則產(chǎn)生中斷。
然后 ADC 停止
連續(xù)轉(zhuǎn)換模式:
在連續(xù)轉(zhuǎn)換模式中,當(dāng)前面 ADC 轉(zhuǎn)換一結(jié)束馬上就啟動(dòng)另一次轉(zhuǎn)換。此模式可通過(guò)外部觸
發(fā)啟動(dòng)或通過(guò)設(shè)置 ADC_CR2 寄存器上的 ADON 位啟動(dòng),此時(shí) CONT 位是 1。??
每個(gè)轉(zhuǎn)換后:
如果一個(gè)規(guī)則通道被轉(zhuǎn)換:
─轉(zhuǎn)換數(shù)據(jù)被儲(chǔ)存在 16 位的 ADC_DR 寄存器中
─EOC(轉(zhuǎn)換結(jié)束)標(biāo)志被設(shè)置
─如果設(shè)置了 EOCIE,則產(chǎn)生中斷。
注入通道不能被用于連續(xù)轉(zhuǎn)換模式,唯一的例外是當(dāng)規(guī)則通道配置為連續(xù)轉(zhuǎn)換后,注入通道
配置為自動(dòng)轉(zhuǎn)換。
掃描模式:
此模式用來(lái)掃描一組模擬通道。
掃描模式可通過(guò)設(shè)置 ADC_CR1 寄存器的 SCAN 位來(lái)選擇。一旦這個(gè)位被設(shè)置,ADC 掃描
所有被 ADC_SQRX 寄存器(對(duì)規(guī)則通道)或 ADC_JSQR(對(duì)注入通道)選中的所有通道。在每個(gè)組
的每個(gè)通道上執(zhí)行單次轉(zhuǎn)換。在每個(gè)轉(zhuǎn)換結(jié)束時(shí),同一組的下一個(gè)通道被自動(dòng)轉(zhuǎn)換。如果設(shè)
置了 CONT 位,轉(zhuǎn)換不會(huì)在選擇組的最后一個(gè)通道上停止,而是再次從選擇組的第一個(gè)通道
繼續(xù)轉(zhuǎn)換。
如果設(shè)置了 DMA 位,在每次 EOC 后,DMA 控制器把規(guī)則組通道的轉(zhuǎn)換數(shù)據(jù)傳輸?shù)?SRAM
中。而注入通道轉(zhuǎn)換的數(shù)據(jù)總是存儲(chǔ)在 ADC_JDRx 寄存器中。
在以下情況中,ADC_SR 寄存器的 EOC 位將被設(shè)置:
在每個(gè)規(guī)則組序列結(jié)束后,如果 EOCS 位被清 0
在每個(gè)規(guī)則通道轉(zhuǎn)換結(jié)束,如果 EOCS 位設(shè)置為 1
注入通道轉(zhuǎn)換結(jié)束數(shù)據(jù)總是存放在 ADC_JDRx 寄存器中
注入通道管理:
觸發(fā)注入
清除 ADC_CR1 寄存器的 JAUTO 位,并且設(shè)置 SCAN 位,即可使用觸發(fā)注入功能。
1.?利用外部觸發(fā)或通過(guò)設(shè)置 ADC_CR2 寄存器的 ADON 位,啟動(dòng)一組規(guī)則通道的轉(zhuǎn)換。
2.?如果在規(guī)則通道轉(zhuǎn)換期間產(chǎn)生一外部注入觸發(fā)或者 JSWSTART 位被設(shè)置,當(dāng)前轉(zhuǎn)換被
復(fù)位,注入通道序列被以單次掃描方式進(jìn)行轉(zhuǎn)換。
3.?然后,恢復(fù)上次被中斷的規(guī)則組通道轉(zhuǎn)換。如果在注入轉(zhuǎn)換期間產(chǎn)生一規(guī)則事件,
注入轉(zhuǎn)換不會(huì)被中斷,但是規(guī)則序列將在注入序列結(jié)束后被執(zhí)行。
注:?當(dāng)使用觸發(fā)的注入轉(zhuǎn)換時(shí),必須保證觸發(fā)事件的間隔長(zhǎng)于注入序列。例如:序列長(zhǎng)度
為 30 個(gè) ADC 時(shí)鐘周期(即 2 個(gè)具有 3 個(gè)時(shí)鐘間隔采樣時(shí)間的轉(zhuǎn)換),觸發(fā)之間最小的間隔必
須是 31 個(gè) ADC 時(shí)鐘周期。
自動(dòng)注入
如果設(shè)置了 JAUTO 位,在規(guī)則組通道之后,注入組通道被自動(dòng)轉(zhuǎn)換。這可以用來(lái)轉(zhuǎn)換
在 ADC_SQRx 和 ADC_JSQR 寄存器中設(shè)置的多至 20 個(gè)轉(zhuǎn)換序列。
在此模式里,必須禁止注入通道的外部觸發(fā)。
如果除 JAUTO 位外還設(shè)置了 CONT 位,規(guī)則通道至注入通道的轉(zhuǎn)換序列被連續(xù)執(zhí)行。
間斷模式:
規(guī)則組
此模式通過(guò)設(shè)置 ADC_CR1 寄存器上的 DISCEN 位激活。它可以用來(lái)執(zhí)行一個(gè)短序列的 n 次轉(zhuǎn)
換(n<=8),此轉(zhuǎn)換是 ADC_SQRx 寄存器所選擇的轉(zhuǎn)換序列的一部分。數(shù)值 n 由 ADC_CR1 寄存
器的 DISCNUM[2:0]位給出。
一個(gè)外部觸發(fā)信號(hào)可以啟動(dòng) ADC_SQRx 寄存器中描述的下一輪 n 次轉(zhuǎn)換,直到此序列所
有的轉(zhuǎn)換完成為止。總的序列長(zhǎng)度由 ADC_SQR1 寄存器的 L[3:0]定義。
例如:
n=3,被轉(zhuǎn)換的通道?=?0、1、2、3、6、7、9、10
第一次觸發(fā):轉(zhuǎn)換的序列為?0、1、2
第二次觸發(fā):轉(zhuǎn)換的序列為?3、6、7
第三次觸發(fā):轉(zhuǎn)換的序列為?9、10,并產(chǎn)生 EOC 事件
第四次觸發(fā):轉(zhuǎn)換的序列?0、1、2
注:?當(dāng)以間斷模式轉(zhuǎn)換一個(gè)規(guī)則組時(shí),轉(zhuǎn)換序列結(jié)束后不自動(dòng)從頭開始。?當(dāng)所有子組
被轉(zhuǎn)換完成,下一次觸發(fā)啟動(dòng)第一個(gè)子組的轉(zhuǎn)換。在上面的例子中,第四次觸發(fā)重新轉(zhuǎn)換第
一子組的通道?0、1 和 2
注入組
此模式通過(guò)設(shè)置 ADC_CR1 寄存器的 JDISCEN 位激活。在一個(gè)外部觸發(fā)事件后,該模式
按通道順序逐個(gè)轉(zhuǎn)換 ADC_JSQR 寄存器中選擇的序列。?
一個(gè)外部觸發(fā)信號(hào)可以啟動(dòng) ADC_JSQR 寄存器選擇的下一個(gè)通道序列的轉(zhuǎn)換,直到序
列中所有的轉(zhuǎn)換完成為止??偟男蛄虚L(zhǎng)度由 ADC_JSQR 寄存器的 JL[1:0]位定義。
例如:?n=1,被轉(zhuǎn)換的通道?=?1、2、3
第一次觸發(fā):通道 1 被轉(zhuǎn)換
第二次觸發(fā):通道 2 被轉(zhuǎn)換
第三次觸發(fā):通道 3 被轉(zhuǎn)換,并且產(chǎn)生 EOC 和 JEOC 事件
第四次觸發(fā):通道 1 被轉(zhuǎn)換
上一篇:Stm32固件庫(kù)中關(guān)于NART的誤解
下一篇:STM32時(shí)鐘源
推薦閱讀最新更新時(shí)間:2025-06-22 11:41

- 熱門資源推薦
- 熱門放大器推薦
-
【Follow me第三季第1期】任務(wù)三:Arduino環(huán)境運(yùn)動(dòng)傳感器數(shù)據(jù)讀取
-
【Follow me 第三季第1期】任務(wù)二——Arduino控制板載LED燈,并實(shí)現(xiàn)呼吸燈效果
-
【Follow me 第三季第1期】任務(wù)一 源碼-——Arduino環(huán)境Hello EEWorld
-
Follow me第三季第1期STM32F429作品代碼
-
射頻電路設(shè)計(jì)
-
器件應(yīng)力降額總規(guī)范(艾默生)
-
5G通信系統(tǒng)定位技術(shù)原理與方法
-
笨辦法學(xué)C語(yǔ)言
設(shè)計(jì)資源 培訓(xùn) 開發(fā)板 精華推薦
- Microchip 升級(jí)數(shù)字信號(hào)控制器(DSC)產(chǎn)品線 推出PWM 分辨率和 ADC 速度業(yè)界領(lǐng)先的新器件
- 意法半導(dǎo)體STM32MP23x:突破成本限制的工業(yè)AI應(yīng)用核心
- 意法半導(dǎo)體推出用于匹配遠(yuǎn)距離無(wú)線微控制器STM32WL33的集成的匹配濾波芯片
- ESP32開發(fā)板連接TFT顯示屏ST7789跳坑記
- 如何讓ESP32支持analogWrite函數(shù)
- LGVL配合FreeType為可變字體設(shè)置字重-ESP32篇
- 使用樹莓派進(jìn)行 ESP32 Jtag 調(diào)試
- ESP32怎么在SPIFFS里面存儲(chǔ)html,css,js文件,以及網(wǎng)頁(yè)和arduino的通訊
- ESP32 freeRTOS使用測(cè)試
- 在隔離應(yīng)用中使用 AD7740
- DC2373A,使用 LT8641 65V、3.5A 微功率同步降壓靜音開關(guān)的演示板
- Tda7385 4 X 30W 四橋車載收音機(jī)放大器的典型應(yīng)用
- 時(shí)間控制板 帶均衡
- 手持無(wú)線電通訊器
- 使用 Analog Devices 的 AD8033AKS 的參考設(shè)計(jì)
- #第五屆立創(chuàng)電子設(shè)計(jì)大賽#QCC5124藍(lán)牙高保真播放器
- 使用 ROHM Semiconductor 的 BD5244 的參考設(shè)計(jì)
- AM2G-0518SH30Z 18V 2 瓦 DC/DC 轉(zhuǎn)換器的典型應(yīng)用
- 基于STUSB4500的即用型USB PD控制器評(píng)估板
- 潤(rùn)石科技推出RS3215-Q1系列低壓差線性穩(wěn)壓器
- CANape 23開啟智能測(cè)試新時(shí)代(下)
- 軟件定義汽車電源管理設(shè)計(jì):NXP的PMIC選型攻略解析
- 深度測(cè)評(píng)時(shí)空壺X1同聲傳譯器:全球最先進(jìn)AI同傳設(shè)備的非凡實(shí)力
- 作為領(lǐng)先的垂直整合制造商(IDM),英飛凌在 300mm氮化鎵生產(chǎn)路線圖方面取得突破
- 鐵威馬F6-424 Max:六盤位擴(kuò)容+國(guó)產(chǎn)系統(tǒng)兼容,小白也能玩轉(zhuǎn)NAS
- 開關(guān)電源給鉛酸電池恒流恒壓充電的電流跳動(dòng)問(wèn)題解析
- 自動(dòng)駕駛中的激光雷達(dá)是否會(huì)傷害攝像頭?
- 觸覺(jué)技術(shù)助力企業(yè)在激烈的市場(chǎng)競(jìng)爭(zhēng)中脫穎而出
- 芯片中的串?dāng)_噪聲有幾類
- 韓媒:韓國(guó)PCB市場(chǎng)2020年或萎縮2.6%
- 投資額高達(dá)450億元,西安又添浪潮、瀾起科技等“芯”勢(shì)力
- 市調(diào):中國(guó)大陸3大封測(cè)廠2020年總營(yíng)收或增8%
- 魅族前高管李楠談蘋果對(duì)iPhone12 5G版本的悲觀預(yù)測(cè)
- 韓媒: DRAM價(jià)格持續(xù)6個(gè)月上升趨勢(shì)戛然而止
- 羅德與施瓦茨 RTP 16 GHz 示波器與 Marvell 88Q6113 多端口多吉比特車載交換機(jī)實(shí)現(xiàn)寬帶測(cè)試
- 特斯拉2019年第四季度汽車安全報(bào)告發(fā)布
- 英偉達(dá)“變軟”,自動(dòng)駕駛“破圈”
- Garmin首款雙鏡頭行車記錄儀 晝夜360度記錄道路和車內(nèi)事件
- 從CES 2020展會(huì)看自動(dòng)駕駛兩大流派暗戰(zhàn)
- 請(qǐng)問(wèn)DMA的M2M模式如何使用?有何應(yīng)用?
- BB Black 入門基礎(chǔ)之Eclipse C++ 控制LED燈(上)
- 大疆無(wú)人機(jī)精靈3遙控發(fā)射跳頻信號(hào)
- 怎么通過(guò)WAVEINOPEN那些API函數(shù)把音頻數(shù)據(jù)錄成原始的PCM文件(沒(méi)有壓縮,沒(méi)有處理過(guò))?在網(wǎng)上沒(méi)找到,只找到錄成WAV文件的例子
- 單片機(jī)中發(fā)送雙音頻是怎么回事
- 關(guān)于做紅外傳感器模塊的感想
- 請(qǐng)問(wèn)大家是是如何測(cè)試wince驅(qū)動(dòng)性能的?
- wince 6.0 nk.bin大于32M 下載失敗
- AT命令集的問(wèn)題
- 下單了,三天了沒(méi)發(fā)貨,大家怎么處理?