女人荫蒂被添全过程13种图片,亚洲+欧美+在线,欧洲精品无码一区二区三区 ,在厨房拨开内裤进入毛片

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

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

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

W55MH32高性能以太網(wǎng)單片機(jī)開(kāi)發(fā)課件 第十四章 ADC(上篇)

W55MH32 ? 來(lái)源:W55MH32 ? 作者:W55MH32 ? 2025-05-28 13:52 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

單芯片解決方案,開(kāi)啟全新體驗(yàn)——W55MH32 高性能以太網(wǎng)單片機(jī)

W55MH32是WIZnet重磅推出的高性能以太網(wǎng)單片機(jī),它為用戶帶來(lái)前所未有的集成化體驗(yàn)。這顆芯片將強(qiáng)大的組件集于一身,具體來(lái)說(shuō),一顆W55MH32內(nèi)置高性能Arm? Cortex-M3核心,其主頻最高可達(dá)216MHz;配備1024KB FLASH與96KB SRAM,滿足存儲(chǔ)與數(shù)據(jù)處理需求;集成TOE引擎,包含WIZnet全硬件TCP/IP協(xié)議棧、內(nèi)置MAC以及PHY,擁有獨(dú)立的32KB以太網(wǎng)收發(fā)緩存,可供8個(gè)獨(dú)立硬件socket使用。如此配置,真正實(shí)現(xiàn)了All-in-One解決方案,為開(kāi)發(fā)者提供極大便利。

在封裝規(guī)格上,W55MH32 提供了兩種選擇:QFN68和QFN100。

W55MH32Q采用QFN68封裝版本,尺寸為8x8mm,它擁有36個(gè)GPIO、3個(gè)ADC、12通道DMA、17個(gè)定時(shí)器、2個(gè)I2C、3個(gè)串口、2個(gè)SPI接口(其中1個(gè)帶I2S接口復(fù)用)、1個(gè)CAN以及1個(gè)USB2.0。在保持與同系列其他版本一致的核心性能基礎(chǔ)上,僅減少了部分GPIO以及SDIO接口,其他參數(shù)保持一致,性價(jià)比優(yōu)勢(shì)顯著,尤其適合網(wǎng)關(guān)模組等對(duì)空間布局要求較高的場(chǎng)景。緊湊的尺寸和精簡(jiǎn)化外設(shè)配置,使其能夠在有限空間內(nèi)實(shí)現(xiàn)高效的網(wǎng)絡(luò)連接與數(shù)據(jù)交互,成為物聯(lián)網(wǎng)網(wǎng)關(guān)、邊緣計(jì)算節(jié)點(diǎn)等緊湊型設(shè)備的理想選擇。 同系列還有QFN100封裝的W55MH32L版本,該版本擁有更豐富的外設(shè)資源,適用于需要多接口擴(kuò)展的復(fù)雜工控場(chǎng)景,軟件使用方法一致。

此外,本W(wǎng)55MH32支持硬件加密算法單元,WIZnet還推出TOE+SSL應(yīng)用,涵蓋TCP SSL、HTTP SSL以及MQTT SSL等,為網(wǎng)絡(luò)通信安全再添保障。

為助力開(kāi)發(fā)者快速上手與深入開(kāi)發(fā),基于W55MH32Q這顆芯片,WIZnet精心打造了配套開(kāi)發(fā)板。開(kāi)發(fā)板集成WIZ-Link芯片,借助一根USB C口數(shù)據(jù)線,就能輕松實(shí)現(xiàn)調(diào)試、下載以及串口打印日志等功能。開(kāi)發(fā)板將所有外設(shè)全部引出,拓展功能也大幅提升,便于開(kāi)發(fā)者全面評(píng)估芯片性能。

wKgZO2gbOfaAVPzkACJSygzv-rI600.png

第十四章 ADC(上篇)

1ADC簡(jiǎn)介

12 位 ADC 是一種逐次逼近型模擬數(shù)字轉(zhuǎn)換器。它有多達(dá) 18 個(gè)通道,可測(cè)量 16 個(gè)外部和 2 個(gè)內(nèi)部信號(hào)源。各通道的 A/D 轉(zhuǎn)換可以單次、連續(xù)、掃描或間斷模式執(zhí)行。ADC 的結(jié)果可以左對(duì)齊或右對(duì)齊方式存儲(chǔ)在 16 位數(shù)據(jù)寄存器中。

模擬看門狗特性允許應(yīng)用程序檢測(cè)輸入電壓是否超出用戶定義的高/低閥值。ADC 的輸入時(shí)鐘不得超過(guò) 14MHz,它是由 PCLK2 經(jīng)分頻產(chǎn)生。

1.1 ADC主要特征

W55MH32的ADC的主要特征如下:

12 位分辨率

  • ?轉(zhuǎn)換結(jié)束、注入轉(zhuǎn)換結(jié)束和發(fā)生模擬看門狗事件時(shí)產(chǎn)生中斷
  • ?單次和連續(xù)轉(zhuǎn)換模式
  • ?從通道 0 到通道 n 的自動(dòng)掃描模式
  • ?自校準(zhǔn)
  • ?帶內(nèi)嵌數(shù)據(jù)一致性的數(shù)據(jù)對(duì)齊
  • ?采樣間隔可以按通道分別編程
  • ?規(guī)則轉(zhuǎn)換和注入轉(zhuǎn)換均有外部觸發(fā)選項(xiàng)
  • ?間斷模式
  • ?雙重模式(帶 2 個(gè)或以上 ADC 的器件)
  • ?ADC 轉(zhuǎn)換時(shí)間:時(shí)鐘為 56MHz 時(shí)為 1μs(時(shí)鐘為 72MHz 為 1.17μs)
  • ?ADC 供電要求:2.4V 到 3.6V
  • ?ADC 輸入范圍:VREF-≤VIN≤VREF+
  • ?規(guī)則通道轉(zhuǎn)換期間有 DMA 請(qǐng)求產(chǎn)生。下圖是 ADC 模塊的方框圖。

注意: 如果有 VREF-引腳,必須和 VSSA 相連接

1.2 ADC功能描述

ADC功能框圖如下:

wKgZPGg2o26ALT6sAAPHsG-Q5qk742.png

單個(gè) ADC 框圖

1.ADC3 的規(guī)則轉(zhuǎn)換和注入轉(zhuǎn)換觸發(fā)與 ADC1 和 ADC2 的不同。

名稱 信號(hào)類型 注解
VREF+ 輸入,模擬參考正極 ADC 使用的高端 / 正極參考電壓,2.4V ≤ VREF+ ≤ VDDA
VDDA(*) 輸入,模擬電源 等效于 VDO 的模擬電源:2.4V ≤ VDDA ≤ VDD (3.6V)
VREF- 輸入,模擬參考負(fù)極 ADC 使用的低端 / 負(fù)極參考電壓,VREF- ≈ VSSA
VSSA(*) 輸入,模擬電源地 等效于 VSS 的模擬電源地
ADC_IN[15:0] 模擬輸入 16 個(gè) ADC 模擬通道

1.VDDA 和 VSSA 應(yīng)該分別連接到 VDD 和 VSS。

1.3 ADC開(kāi)關(guān)控制

通過(guò)設(shè)置 ADC_CR2 寄存器的 ADON 位可給 ADC 上電。當(dāng)?shù)谝淮卧O(shè)置 ADON 位時(shí),它將 ADC 從斷電狀態(tài)下喚醒。ADC 上電延遲一段時(shí)間后(tSTAB),再次設(shè)置 ADON 位時(shí)開(kāi)始進(jìn)行轉(zhuǎn)換。

通過(guò)清除 ADON 位可以停止轉(zhuǎn)換,并將 ADC 置于斷電模式。在這個(gè)模式中,ADC 幾乎不耗電(僅幾個(gè)μA)。

1.4 ADC時(shí)鐘

由時(shí)鐘控制器提供的 ADCCLK 時(shí)鐘和 PCLK2(APB2 時(shí)鐘)同步。RCC 控制器為 ADC 時(shí)鐘提供一個(gè)專用的可編程預(yù)分頻器,詳見(jiàn)第 6 節(jié)-復(fù)位和時(shí)鐘控制(RCC)。

2 模式選擇

2.1 通道選擇

有 16 個(gè)多路通道。可以把轉(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)換新選擇的組。

溫度傳感器/VREFINT 內(nèi)部通道

溫度傳感器和通道 ADC1_IN16 相連接,內(nèi)部參照電壓 VREFINT 和 ADC1_IN17 相連接。可以按注入或規(guī)則通道對(duì)這兩個(gè)內(nèi)部通道進(jìn)行轉(zhuǎn)換。

注意:溫度傳感器和 VREFINT 只能出現(xiàn)在主 ADC1 中。

2.2 單次轉(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 停止。

2.3 連續(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)生中斷。

如果設(shè)置了 JEOCIE 位,則產(chǎn)生中斷。

2.4 時(shí)序圖

如下圖所示,ADC 在開(kāi)始精確轉(zhuǎn)換前需要一個(gè)穩(wěn)定時(shí)間 tSTAB。在開(kāi)始 ADC 轉(zhuǎn)換和 14 個(gè)時(shí)鐘周期后,EOC 標(biāo)志被設(shè)置,16 位 ADC 數(shù)據(jù)寄存器包含轉(zhuǎn)換的結(jié)果。

wKgZO2g2o26AAMdgAAGDnDyYmYo539.png

時(shí)序圖

2.5 模擬看門狗

如果被 ADC 轉(zhuǎn)換的模擬電壓低于低閥值或高于高閥值,AWD 模擬看門狗狀態(tài)位被設(shè)置。閥值位于ADC_HTR 和 ADC_LTR 寄存器的最低 12 個(gè)有效位中。通過(guò)設(shè)置 ADC_CR1 寄存器的 AWDIE 位以允許產(chǎn)生相應(yīng)中斷。

閥值獨(dú)立于由 ADC_CR2 寄存器上的 ALIGN 位選擇的數(shù)據(jù)對(duì)齊模式。通過(guò)配置 ADC_CR1 寄存器,模擬看門狗可以作用于 1 個(gè)或多個(gè)通道。

wKgZPGg2o22AdiKqAABrdqHJvr8824.png

模擬看門狗警戒區(qū)

模擬看門狗通道選擇

模擬看門狗警戒的通道 ADC_CR1 寄存器控制位
AWDSGL 位 AWDEN 位 JAWDEN 位
無(wú) 任意值 0 0
所有注入通道 0 0 1
所有規(guī)則通道 0 1 0
所有注入和規(guī)則通道 0 1 1
單一的 (1) 注入通道 1 0 1
單一的 (1) 規(guī)則通道 1 1 0
單一的 (1) 注入或規(guī)則通道 1 1 1

2.6 掃描模式

此模式用來(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 寄存器中。

2.7 注入通道管理

觸發(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ā),當(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)度為 28 個(gè)ADC 時(shí)鐘周期(即 2 個(gè)具有 1.5 個(gè)時(shí)鐘間隔采樣時(shí)間的轉(zhuǎn)換),觸發(fā)之間最小的間隔必須是 29 個(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í)行。對(duì)于 ADC 時(shí)鐘預(yù)分頻系數(shù)為 4 至 8 時(shí),當(dāng)從規(guī)則轉(zhuǎn)換切換到注入序列或從注入轉(zhuǎn)換切換到規(guī)則序列時(shí),會(huì)自動(dòng)插入 1 個(gè) ADC 時(shí)鐘間隔;當(dāng) ADC 時(shí)鐘預(yù)分頻系數(shù)為 2 時(shí),則有 2 個(gè) ADC 時(shí)鐘間隔的延遲。

注意: 不可能同時(shí)使用自動(dòng)注入和間斷模式。

wKgZO2g2o22AD8l6AADHtpO0FYg768.png

注入轉(zhuǎn)換延時(shí)

2.8 間斷模式

規(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)從頭開(kāi)始。當(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)換完成為止。總的序列長(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)換

注意: 1.當(dāng)完成所有注入通道轉(zhuǎn)換,下個(gè)觸發(fā)啟動(dòng)第 1 個(gè)注入通道的轉(zhuǎn)換。在上述例子中,第四個(gè)觸發(fā)重新轉(zhuǎn)換第 1 個(gè)注入通道 1。

2.不能同時(shí)使用自動(dòng)注入和間斷模式。

3.必須避免同時(shí)為規(guī)則和注入組設(shè)置間斷模式。間斷模式只能作用于一組轉(zhuǎn)換。

3 校準(zhǔn)

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

通過(guò)設(shè)置 ADC_CR2 寄存器的 CAL 位啟動(dòng)校準(zhǔn)。一旦校準(zhǔn)結(jié)束,CAL 位被硬件復(fù)位,可以開(kāi)始正常轉(zhuǎn)換。建議在上電時(shí)執(zhí)行一次 ADC 校準(zhǔn)。校準(zhǔn)階段結(jié)束后,校準(zhǔn)碼儲(chǔ)存在 ADC_DR 中。

注意:1.建議在每次上電后執(zhí)行一次校準(zhǔn)。

2.啟動(dòng)校準(zhǔn)前,ADC 必須處于關(guān)電狀態(tài)(ADON='0')超過(guò)至少兩個(gè) ADC 時(shí)鐘周期。

wKgZPGg2o22AcbxgAADWFypERPg273.png

校準(zhǔn)時(shí)序圖

3.1 數(shù)據(jù)對(duì)齊

ADC_CR2 寄存器中的 ALIGN 位選擇轉(zhuǎn)換后數(shù)據(jù)儲(chǔ)存的對(duì)齊方式。數(shù)據(jù)可以左對(duì)齊或右對(duì)齊,如

wKgZPGg2o26AcFXaAACrhjmYxmU694.pngwKgZO2g2o22AZyOAAACcdanFqp4487.png

注入組通道轉(zhuǎn)換的數(shù)據(jù)值已經(jīng)減去了在 ADC_JOFRx 寄存器中定義的偏移量,因此結(jié)果可以是一個(gè)負(fù)值。SEXT 位是擴(kuò)展的符號(hào)值。

對(duì)于規(guī)則組通道,不需減去偏移值,因此只有 12 個(gè)位有效。

wKgZO2g2o22AbsguAACsfk4V080560.png

數(shù)據(jù)右對(duì)齊

wKgZPGg2o22AXDNZAACcBB163Bg436.png

數(shù)據(jù)左對(duì)齊

3.2 可編程的通道采樣時(shí)間

ADC 使用若干個(gè) ADC_CLK 周期對(duì)輸入電壓采樣,采樣周期數(shù)目可以通過(guò) ADC_SMPR1 和ADC_SMPR2 寄存器SMP[2:0]位更改。每個(gè)通道可以分別用不同的時(shí)間采樣。

總轉(zhuǎn)換時(shí)間如下計(jì)算:

TCONV=采樣時(shí)間+12.5 個(gè)周期

例如:

當(dāng) ADCCLK=14MHz,采樣時(shí)間為 1.5 周期

TCONV=1.5+12.5=14 周期=1μs

3.3 外部觸發(fā)轉(zhuǎn)換

轉(zhuǎn)換可以由外部事件觸發(fā)(例如定時(shí)器捕獲,EXTI 線)。如果設(shè)置了 EXTTRIG 控制位,則外部事件就能夠觸發(fā)轉(zhuǎn)換。EXTSEL[2:0]和 JEXTSEL2:0]控制位允許應(yīng)用程序選擇 8 個(gè)可能的事件中的某一個(gè),可以觸發(fā)規(guī)則和注入組的采樣。

注意: 當(dāng)外部觸發(fā)信號(hào)被選為 ADC 規(guī)則或注入轉(zhuǎn)換時(shí),只有它的上升沿可以啟動(dòng)轉(zhuǎn)換。

表 ADC1 和 ADC2 用于規(guī)則通道的外部觸發(fā)

觸發(fā)源 類型 EXTSSEL[2:0]
TIM1_CC1 事件 來(lái)自片上定時(shí)器的內(nèi)部信號(hào) 000
TIM1_CC2 事件 001
TIM1_CC3 事件 010
TIM2_CC2 事件 011
TIM3_TRGO 事件 100
TIM4_CC4 事件 101
EXTI 線 11/TIM8_TRGO事件(1) 外部引腳/來(lái)自片上定時(shí)器的內(nèi)部信號(hào) 110
SWSTART 軟件控制位 111

(1)對(duì)于規(guī)則通道,選中 EXTI 線路 11 或 TIM8_TRGO 作為外部觸發(fā)事件,可以分別通過(guò)設(shè)置 ADC1和 ADC2 的 ADC1_ETRGREG_REMAP 位和 ADC2_ETRGREG_REMAP 位實(shí)現(xiàn)。

表 ADC1 和 ADC2 用于注入通道的外部觸發(fā)

觸發(fā)源 連接類型 JEXTSE[2:0]
TIM1_TRGO 事件 來(lái)自片上定時(shí)器的內(nèi)部信號(hào) 000
TIM1_CC4 事件 001
TIM2_TRGO 事件 010
TIM2_CC1 事件 011
TIM3_CC4 事件 100
TIM4_TRGO 事件 101
EXTI 線 15/TIM8_CC4 事件(1) 外部引腳 / 來(lái)自片上定時(shí)器的內(nèi)部信號(hào) 110
SWSTART 軟件控制位 111

(2)為注入信道選擇外部觸發(fā)器 EXTIline15 或 TIM8-CC4 事件是通過(guò)分別為 ADC1 和 ADC2 配置ADC1ETRGINJREMAP 和 ADC2 ETRGINJ·REMAP 來(lái)完成的。

表 ADC3 用于規(guī)則通道的外部觸發(fā)

觸發(fā)源 連接類型 EXTSSEL[2:0]
TIM3_CC1 事件 來(lái)自片上定時(shí)器的內(nèi)部信號(hào) 000
TIM2_CC3 事件 001
TIM1_CC3 事件 010
TIM8_CC1 事件 011
TIM8_TRGO 事件 100
TIM5_CC1 事件 101
TIM5_CC3 事件 110
SWSTART 軟件控制位 111

表 ADC3 用于注入通道的外部觸發(fā)

觸發(fā)源 連接類型 JEXTSE[2:0]
TIM1_TRGO 事件 來(lái)自片上定時(shí)器的內(nèi)部信號(hào) 000
TIM1_CC4 事件 001
TIM4_CC3 事件 010
TIM8_CC2 事件 011
TIM8_CC4 事件 100
TIM5_TRGO 事件 101
TIM5_CC4 事件 110
JSWSTART 軟件控制位 111

軟件觸發(fā)事件可以通過(guò)對(duì)寄存器 ADC_CR2 的 SWSTART 或 JSWSTART 位置'1'產(chǎn)生。規(guī)則組的轉(zhuǎn)換可以被注入觸發(fā)打斷。

3.4 DMA請(qǐng)求

因?yàn)橐?guī)則通道轉(zhuǎn)換的值儲(chǔ)存在一個(gè)僅有的數(shù)據(jù)寄存器中,所以當(dāng)轉(zhuǎn)換多個(gè)規(guī)則通道時(shí)需要使用DMA,這可以避免丟失已經(jīng)存儲(chǔ)在 ADC_DR 寄存器中的數(shù)據(jù)。只有在規(guī)則通道的轉(zhuǎn)換結(jié)束時(shí)才產(chǎn)生 DMA 請(qǐng)求,并將轉(zhuǎn)換的數(shù)據(jù)從 ADC_DR 寄存器傳輸?shù)接脩糁付ǖ哪康牡刂贰?/p>

注: 只有 ADC1 和 ADC3 擁有 DMA 功能。由 ADC2 轉(zhuǎn)化的數(shù)據(jù)可以通過(guò)雙 ADC 模式,利用 ADC1 的DMA 功能傳輸。

4 雙ADC模式

在有 2 個(gè)或以上 ADC 模塊的產(chǎn)品中,可以使用雙 ADC 模式。在雙 ADC 模式里,根據(jù) ADC1_CR1 寄存器中 DUALMOD[2:0]位所選的模式,轉(zhuǎn)換的啟動(dòng)可以是ADC1 主和 ADC2 從的交替觸發(fā)或同步觸發(fā)。

注意: 在雙 ADC 模式里,當(dāng)轉(zhuǎn)換配置成由外部事件觸發(fā)時(shí),用戶必須將其設(shè)置成僅觸發(fā)主 ADC,從 ADC設(shè)置成軟件觸發(fā),這樣可以防止意外的觸發(fā)從轉(zhuǎn)換。但是,主和從 ADC 的外部觸發(fā)必須同時(shí)被激活。

共有 6 種可能的模式:

  • ?同步注入模式
  • ?同步規(guī)則模式
  • ?快速交叉模式
  • ?慢速交叉模式
  • ?交替觸發(fā)模式
  • ?獨(dú)立模式

還有可以用下列方式組合使用上面的模式:

  • ?同步注入模式+同步規(guī)則模式
  • ?同步規(guī)則模式+交替觸發(fā)模式
  • ?同步注入模式+交叉模式

注意: 在雙 ADC 模式里,為了在主數(shù)據(jù)寄存器上讀取從轉(zhuǎn)換數(shù)據(jù),必須使能 DMA 位,即使不使用 DMA傳輸規(guī)則通道數(shù)據(jù)。

wKgZPGg2o2-AcJfyAAO7t802Rp0024.png

雙 ADC 框圖

1.外部觸發(fā)信號(hào)作用于 ADC2,但在本圖中沒(méi)有顯示。

2.在某些雙 ADC 模式中,在完整的 ADC1 數(shù)據(jù)寄存器(ADC1_DR)中包含了 ADC1 和 ADC2 的規(guī)則轉(zhuǎn)換數(shù)據(jù)。

4.1 同步注入模式

此模式轉(zhuǎn)換一個(gè)注入通道組。外部觸發(fā)來(lái)自 ADC1 的注入組多路開(kāi)關(guān)(由 ADC1_CR2 寄存器的JEXTSEL[2:0]選擇),它同時(shí)給 ADC2 提供同步觸發(fā)。

注意: 不要在 2 個(gè) ADC 上轉(zhuǎn)換相同的通道(兩個(gè) ADC 在同一個(gè)通道上的采樣時(shí)間不能重疊)。在 ADC1 或 ADC2 的轉(zhuǎn)換結(jié)束時(shí):

轉(zhuǎn)換的數(shù)據(jù)存儲(chǔ)在每個(gè) ADC 接口的 ADC_JDRx 寄存器中。

當(dāng)所有 ADC1/ADC2 注入通道都被轉(zhuǎn)換時(shí),產(chǎn)生 JEOC 中斷(若任一 ADC 接口開(kāi)放了中斷)。

注: 在同步模式中,必須轉(zhuǎn)換具有相同時(shí)間長(zhǎng)度的序列,或保證觸發(fā)的間隔比 2 個(gè)序列中較長(zhǎng)的序列長(zhǎng),否則當(dāng)較長(zhǎng)序列的轉(zhuǎn)換還未完成時(shí),具有較短序列的 ADC 轉(zhuǎn)換可能會(huì)被重啟。

wKgZO2g2o22AY13wAADmyXUIpIQ016.png

在 4 個(gè)通道上的同步注入模式

4.2 同步規(guī)則模式

此模式在規(guī)則通道組上執(zhí)行。外部觸發(fā)來(lái)自 ADC1 的規(guī)則組多路開(kāi)關(guān)(由 ADC1_CR2 寄存器的EXTSEL[2:0]選擇),它同時(shí)給 ADC2 提供同步觸發(fā)。

注意: 不要在 2 個(gè) ADC 上轉(zhuǎn)換相同的通道((兩個(gè) ADC 在同一個(gè)通道上的采樣時(shí)間不能重疊)。在 ADC1 或 ADC2 的轉(zhuǎn)換結(jié)束時(shí):

產(chǎn)生一個(gè) 32 位 DMA 傳輸請(qǐng)求(如果設(shè)置了 DMA 位),32 位的 ADC1_DR 寄存器內(nèi)容傳輸?shù)絊RAM 中,它上半個(gè)字包含 ADC2 的轉(zhuǎn)換數(shù)據(jù),低半個(gè)字包含 ADC1 的轉(zhuǎn)換數(shù)據(jù)。

當(dāng)所有 ADC1/ADC2 規(guī)則通道都被轉(zhuǎn)換完時(shí),產(chǎn)生 EOC 中斷(若任一 ADC 接口開(kāi)放了中斷)。

注: 在同步規(guī)則模式中,必須轉(zhuǎn)換具有相同時(shí)間長(zhǎng)度的序列,或保證觸發(fā)的間隔比 2 個(gè)序列中較長(zhǎng)的序列長(zhǎng),否則當(dāng)較長(zhǎng)序列的轉(zhuǎn)換還未完成時(shí),具有較短序列的 ADC 轉(zhuǎn)換可能會(huì)被重啟。

wKgZO2g2o22AJz7OAAD7UzgNulE580.png

在 16 個(gè)通道上的同步規(guī)則模式

4.3 快速交叉模式

此模式只適用于規(guī)則通道組(通常為一個(gè)通道)。外部觸發(fā)來(lái)自 ADC1 的規(guī)則通道多路開(kāi)關(guān)。外部觸發(fā)產(chǎn)生后:

ADC2 立即啟動(dòng)并且ADC1 在延遲 7 個(gè) ADC 時(shí)鐘周期后啟動(dòng)如果同時(shí)設(shè)置了 ADC1 和 ADC2 的 CONT 位,所選的兩個(gè) ADC 規(guī)則通道將被連續(xù)地轉(zhuǎn)換。ADC1產(chǎn)生一個(gè)EOC中斷后(由EOCIE使能),產(chǎn)生一個(gè)32位的DMA傳輸請(qǐng)求(如果設(shè)置了DMA位),ADC1_DR 寄存器的 32 位數(shù)據(jù)被傳輸?shù)?SRAM,ADC1_DR 的上半個(gè)字包含 ADC2 的轉(zhuǎn)換數(shù)據(jù),低半個(gè)字包含 ADC1 的轉(zhuǎn)換數(shù)據(jù)。

注意: 最大允許采樣時(shí)間<7 個(gè) ADCCLK 周期,避免 ADC1 和 ADC2 轉(zhuǎn)換相同通道時(shí)發(fā)生兩個(gè)采樣周期的重疊。

wKgZPGg2o22AahdEAAB-m0JhyGA126.png

在 1 個(gè)通道上連續(xù)轉(zhuǎn)換模式下的快速交叉模式

4.4 慢速交叉模式

此模式只適用于規(guī)則通道組(只能為一個(gè)通道)。外部觸發(fā)來(lái)自 ADC1 的規(guī)則通道多路開(kāi)關(guān)。外部觸發(fā)產(chǎn)生后:

ADC2 立即啟動(dòng)并且 ADC1 在延遲 14 個(gè) ADC 時(shí)鐘周期后啟動(dòng)在延遲第二次 14 個(gè) ADC 周期后 ADC2 再次啟動(dòng),如此循環(huán)。

注意: 最大允許采樣時(shí)間<14 個(gè) ADCCLK 周期,以避免和下個(gè)轉(zhuǎn)換重疊。ADC1產(chǎn)生一個(gè)EOC中斷后(由EOCIE使能),產(chǎn)生一個(gè)32位的DMA傳輸請(qǐng)求(如果設(shè)置了DMA位),ADC1_DR 寄存器的 32 位數(shù)據(jù)被傳輸?shù)?SRAM,ADC1_DR 的上半個(gè)字包含 ADC2 的轉(zhuǎn)換數(shù)據(jù),低半個(gè)字包含 ADC1 的轉(zhuǎn)換數(shù)據(jù)。在 28 個(gè) ADC 時(shí)鐘周期后自動(dòng)啟動(dòng)新的 ADC2 轉(zhuǎn)換。在這個(gè)模式下不能設(shè)置 CONT 位,因?yàn)樗鼘⑦B續(xù)轉(zhuǎn)換所選擇的規(guī)則通道。

注意: 應(yīng)用程序必須確保當(dāng)使用交叉模式時(shí),不能有注入通道的外部觸發(fā)產(chǎn)生。

wKgZPGg2o26ABbltAACZxm0I7DA136.png

在 1 個(gè)通道上的慢速交叉模式

4.5 交替觸發(fā)模式

此模式只適用于注入通道組。外部觸發(fā)源來(lái)自 ADC1 的注入通道多路開(kāi)關(guān)。

當(dāng)?shù)谝粋€(gè)觸發(fā)產(chǎn)生時(shí),ADC1 上的所有注入組通道被轉(zhuǎn)換。

當(dāng)?shù)诙€(gè)觸發(fā)到達(dá)時(shí),ADC2 上的所有注入組通道被轉(zhuǎn)換。

如此循環(huán)……

如果允許產(chǎn)生 JEOC 中斷,在所有 ADC1 注入組通道轉(zhuǎn)換后產(chǎn)生一個(gè) JEOC 中斷。如果允許產(chǎn)生JEOC 中斷,在所有 ADC2 注入組通道轉(zhuǎn)換后產(chǎn)生一個(gè) JEOC 中斷。當(dāng)所有注入組通道都轉(zhuǎn)換完后,如果又有另一個(gè)外部觸發(fā),交替觸發(fā)處理從轉(zhuǎn)換 ADC1 注入組通道重新開(kāi)始。

wKgZPGg2o26Ac38uAADEnSM_uIo908.png

交替觸發(fā):每個(gè) ADC1 的注入通道組

如果 ADC1 和 ADC2 上同時(shí)使用了注入間斷模式:

當(dāng)?shù)谝粋€(gè)觸發(fā)產(chǎn)生時(shí),ADC1 上的第一個(gè)注入通道被轉(zhuǎn)換。

當(dāng)?shù)诙€(gè)觸發(fā)到達(dá)時(shí),ADC2 上的第一個(gè)注入通道被轉(zhuǎn)換。

如此循環(huán)……

如果允許產(chǎn)生 JEOC 中斷,在所有 ADC1 注入組通道轉(zhuǎn)換后產(chǎn)生一個(gè) JEOC 中斷。如果允許產(chǎn)生JEOC 中斷,在所有 ADC2 注入組通道轉(zhuǎn)換后產(chǎn)生一個(gè) JEOC 中斷。

當(dāng)所有注入組通道都轉(zhuǎn)換完后,如果又有另一個(gè)外部觸發(fā),則重新開(kāi)始交替觸發(fā)過(guò)程。

wKgZO2g2o26AAWmCAAC2wp1qPpc953.png

交替觸發(fā):在間斷模式下每個(gè) ADC 上的 4 個(gè)注入通道

4.6 獨(dú)立模式

此模式里,雙 ADC 同步不工作,每個(gè) ADC 接口獨(dú)立工作。

5 混合的規(guī)則

5.1 混合的規(guī)則/注入同步模式

規(guī)則組同步轉(zhuǎn)換可以被中斷,以啟動(dòng)注入組的同步轉(zhuǎn)換。

注: 在混合的規(guī)則/注入同步模式中,必須轉(zhuǎn)換具有相同時(shí)間長(zhǎng)度的序列,或保證觸發(fā)的間隔比 2 個(gè)序列中較長(zhǎng)的序列長(zhǎng),否則當(dāng)較長(zhǎng)序列的轉(zhuǎn)換還未完成時(shí),具有較短序列的 ADC 轉(zhuǎn)換可能會(huì)被重啟。

5.2 混合的同步規(guī)則+交替觸發(fā)模式

規(guī)則組同步轉(zhuǎn)換可以被中斷,以啟動(dòng)注入組交替觸發(fā)轉(zhuǎn)換。圖 顯示了一個(gè)規(guī)則同步轉(zhuǎn)換被交替觸發(fā)所中斷。注入交替轉(zhuǎn)換在注入事件到達(dá)后立即啟動(dòng)。如果規(guī)則轉(zhuǎn)換已經(jīng)在運(yùn)行,為了在注入轉(zhuǎn)換后確保同步,所有的 ADC(主和從)的規(guī)則轉(zhuǎn)換被停止,并在注入轉(zhuǎn)換結(jié)束時(shí)同步恢復(fù)。

注: 在混合的同步規(guī)則+交替觸發(fā)模式中,必須轉(zhuǎn)換具有相同時(shí)間長(zhǎng)度的序列,或保證觸發(fā)的間隔比 2個(gè)序列中較長(zhǎng)的序列長(zhǎng),否則當(dāng)較長(zhǎng)序列的轉(zhuǎn)換還未完成時(shí),具有較短序列的 ADC 轉(zhuǎn)換可能會(huì)被重啟。

wKgZO2g2o26AaNxQAADiRbJNp7c554.png

交替+規(guī)則同步

如果觸發(fā)事件發(fā)生在一個(gè)中斷了規(guī)則轉(zhuǎn)換的注入轉(zhuǎn)換期間,這個(gè)觸發(fā)事件將被忽略。下圖示出了這種情況的操作(第 2 個(gè)觸發(fā)被忽略)。

wKgZPGg2o26AeD7kAAD3zl1DeAU889.png

觸發(fā)事件發(fā)生在注入轉(zhuǎn)換期間

5.3 混合同步注入+交叉模式

一個(gè)注入事件可以中斷一個(gè)交叉轉(zhuǎn)換。這種情況下,交叉轉(zhuǎn)換被中斷,注入轉(zhuǎn)換被啟動(dòng),在注入序列轉(zhuǎn)換結(jié)束時(shí),交叉轉(zhuǎn)換被恢復(fù)。下圖是這種情況的一個(gè)例子。

注: 當(dāng) ADC 時(shí)鐘預(yù)分頻系數(shù)設(shè)置為 4 時(shí),交叉模式恢復(fù)后不會(huì)均勻地分配采樣時(shí)間,采樣間隔是 8 個(gè)ADC 時(shí)鐘周期與 6 個(gè) ADC 時(shí)鐘周期輪替,而不是均勻的 7 個(gè) ADC 時(shí)鐘周期。

wKgZPGg2o26AB2gCAACTlXjiFkU407.png

交叉的單通道轉(zhuǎn)換被注入序列 CH11 和 CH12 中斷

6 溫度傳感器

溫度傳感器可以用來(lái)測(cè)量器件周圍的溫度(TA)。

溫度傳感器在內(nèi)部和 ADC1_IN16 輸入通道相連接,此通道把傳感器輸出的電壓轉(zhuǎn)換成數(shù)字值。溫度傳感器模擬輸入推薦采樣時(shí)間是 17.1μs。當(dāng)沒(méi)有被使用時(shí),傳感器可以置于關(guān)電模式。

注意: 必須設(shè)置 TSVREFE 位激活內(nèi)部通道:ADC1_IN16(溫度傳感器)和 ADC1_IN17(VREFINT)的轉(zhuǎn)換。溫度傳感器輸出電壓隨溫度線性變化,由于生產(chǎn)過(guò)程的變化,溫度變化曲線的偏移在不同芯片上會(huì)有不同(最多相差 45°C)。

內(nèi)部溫度傳感器更適合于檢測(cè)溫度的變化,而不是測(cè)量絕對(duì)的溫度。如果需要測(cè)量精確的溫度,應(yīng)該使用一個(gè)外置的溫度傳感器。

wKgZO2g2o26AKwRfAAC3DLM_-Fo048.png

溫度傳感器和 VREFINT 通道框圖

讀溫度

為使用傳感器:

1. 選擇 ADC1_IN16 輸入通道

2. 選擇采樣時(shí)間為 17.1μs

3. 設(shè)置 ADC 控制寄存器 2(ADC_CR2)的 TSVREFE 位,以喚醒關(guān)電模式下的溫度傳感器

4. 通過(guò)設(shè)置 ADON 位啟動(dòng) ADC 轉(zhuǎn)換(或用外部觸發(fā))

5. 讀 ADC 數(shù)據(jù)寄存器上的 VSENSE 數(shù)據(jù)結(jié)果

6. 利用下列公式得出溫度

溫度(°C)={(V25-VSENSE)/Avg_Slope}+25

這里:

V25=VSENSE 在 25°C 時(shí)的數(shù)值

Avg_Slope=溫度與 VSENSE 曲線的平均斜率(單位為 mV/°C 或μV/°C)參考數(shù)據(jù)手冊(cè)的電氣

特性章節(jié)中 V25 和 Avg_Slope 的實(shí)際值。

注意: 傳感器從關(guān)電模式喚醒后到可以輸出正確水平的 VSENSE 前,有一個(gè)建立時(shí)間。ADC 在上電后也有一個(gè)建立時(shí)間,因此為了縮短延時(shí),應(yīng)該同時(shí)設(shè)置 ADON 和 TSVREFE 位

7 ADC中斷

規(guī)則和注入組轉(zhuǎn)換結(jié)束時(shí)能產(chǎn)生中斷,當(dāng)模擬看門狗狀態(tài)位被設(shè)置時(shí)也能產(chǎn)生中斷。它們都有獨(dú)立的中斷使能位。

注: ADC1 和 ADC2 的中斷映射在同一個(gè)中斷向量上,而 ADC3 的中斷有自己的中斷向量

ADC_SR 寄存器中有 2 個(gè)其他標(biāo)志,但是它們沒(méi)有相關(guān)聯(lián)的中斷:

JSTRT(注入組通道轉(zhuǎn)換的啟動(dòng))

STRT(規(guī)則組通道轉(zhuǎn)換的啟動(dòng))

中斷事件 事件標(biāo)志 使能控制位
規(guī)則組轉(zhuǎn)換結(jié)束 EOC EOCIE
注入組轉(zhuǎn)換結(jié)束 JEOC JEOCIE
設(shè)置了模擬看門狗狀態(tài)位 AWD AWDIE

8 例程設(shè)計(jì)

8.1 ADC_AnalogWatchdog例程

1.初始化部分

// 延時(shí)函數(shù)初始化(由delay.h提供)
delay_init();

// UART配置函數(shù)
void UART_Configuration(void)
{
    GPIO_InitTypeDef  GPIO_InitStructure;
    USART_InitTypeDef USART_InitStructure;

    // 使能USART1和GPIOA時(shí)鐘
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1 | RCC_APB2Periph_GPIOA, ENABLE);

    // 配置TX引腳(PA9)為復(fù)用推挽輸出
    GPIO_InitStructure.GPIO_Pin   = GPIO_Pin_9;
    GPIO_InitStructure.GPIO_Mode  = GPIO_Mode_AF_PP;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_Init(GPIOA, &GPIO_InitStructure);

    // 配置RX引腳(PA10)為浮空輸入
    GPIO_InitStructure.GPIO_Pin  = GPIO_Pin_10;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
    GPIO_Init(GPIOA, &GPIO_InitStructure);

    // 配置串口參數(shù):115200bps, 8位數(shù)據(jù), 1位停止位, 無(wú)校驗(yàn)
    USART_InitStructure.USART_BaudRate            = 115200;
    USART_InitStructure.USART_WordLength          = USART_WordLength_8b;
    USART_InitStructure.USART_StopBits            = USART_StopBits_1;
    USART_InitStructure.USART_Parity              = USART_Parity_No;
    USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
    USART_InitStructure.USART_Mode                = USART_Mode_Rx | USART_Mode_Tx;

    USART_Init(USART1, &USART_InitStructure);
    USART_Cmd(USART1, ENABLE);
}

// ADC配置函數(shù)
void ADC_Configuration(void)
{
    ADC_InitTypeDef  ADC_InitStructure;
    NVIC_InitTypeDef NVIC_InitStructure;

    // 使能GPIOA和ADC1時(shí)鐘
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_ADC1, ENABLE);
    RCC_ADCCLKConfig(RCC_PCLK2_Div8);  // ADC時(shí)鐘=PCLK2/8(假設(shè)PCLK2=72MHz,ADC時(shí)鐘=9MHz)

    ADC_DeInit(ADC1);  // 復(fù)位ADC1配置

    // 配置ADC為獨(dú)立模式,單通道單次轉(zhuǎn)換
    ADC_InitStructure.ADC_Mode               = ADC_Mode_Independent;
    ADC_InitStructure.ADC_ScanConvMode       = DISABLE;  // 非掃描模式
    ADC_InitStructure.ADC_ContinuousConvMode = DISABLE;  // 單次轉(zhuǎn)換模式
    ADC_InitStructure.ADC_ExternalTrigConv   = ADC_ExternalTrigConv_None;  // 軟件觸發(fā)
    ADC_InitStructure.ADC_DataAlign          = ADC_DataAlign_Right;  // 右對(duì)齊
    ADC_InitStructure.ADC_NbrOfChannel       = 1;  // 轉(zhuǎn)換通道數(shù)1
    ADC_Init(ADC1, &ADC_InitStructure);

    ADC_Cmd(ADC1, ENABLE);  // 使能ADC1

    // 配置NVIC中斷優(yōu)先級(jí)
    NVIC_InitStructure.NVIC_IRQChannel                   = ADC1_2_IRQn;
    NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;  // 最高搶占優(yōu)先級(jí)
    NVIC_InitStructure.NVIC_IRQChannelSubPriority        = 0;
    NVIC_InitStructure.NVIC_IRQChannelCmd                = ENABLE;
    NVIC_Init(&NVIC_InitStructure);

    // 配置ADC通道10(PA0),采樣時(shí)間239.5周期
    ADC_RegularChannelConfig(ADC1, ADC_Channel_10, 1, ADC_SampleTime_239Cycles5);

    // 配置模擬看門狗:監(jiān)測(cè)通道10,閾值范圍1024~2048(對(duì)應(yīng)電壓0.825V~1.65V,假設(shè)VREF=3.3V)
    ADC_AnalogWatchdogSingleChannelConfig(ADC1, ADC_Channel_10);
    ADC_AnalogWatchdogThresholdsConfig(ADC1, 2048, 1024);
    ADC_AnalogWatchdogCmd(ADC1, ADC_AnalogWatchdog_SingleRegEnable);  // 使能單通道看門狗

    ADC_ITConfig(ADC1, ADC_IT_AWD, ENABLE);  // 使能模擬看門狗中斷

    // ADC校準(zhǔn)(關(guān)鍵步驟,確保轉(zhuǎn)換精度)
    ADC_ResetCalibration(ADC1);
    while (ADC_GetResetCalibrationStatus(ADC1));
    ADC_StartCalibration(ADC1);
    while (ADC_GetCalibrationStatus(ADC1));
}
  • ?延時(shí)函數(shù)初始化:調(diào)用delay_init()函數(shù),為后續(xù)的延時(shí)操作做準(zhǔn)備。
  • ?UART 配置:UART_Configuration()函數(shù)用于配置 USART1,包含使能時(shí)鐘、設(shè)置 GPIO 引腳、初始化串口參數(shù)(如波特率、數(shù)據(jù)位、停止位等),并且使能串口。
  • ?ADC 配置:ADC_Configuration()函數(shù)對(duì) ADC1 進(jìn)行配置,具體操作有使能時(shí)鐘、設(shè)置 ADC 時(shí)鐘分頻、初始化 ADC 參數(shù)(如工作模式、轉(zhuǎn)換模式等)、配置模擬看門狗(設(shè)定監(jiān)測(cè)通道和閾值)、使能模擬看門狗中斷以及進(jìn)行 ADC 校準(zhǔn)。

2.主循環(huán)部分

int main(void)
{
    RCC_ClocksTypeDef clocks;
    delay_init();

    UART_Configuration();
    ADC_Configuration();

    RCC_GetClocksFreq(&clocks);
    // 打印系統(tǒng)時(shí)鐘信息
    printf("n");
    printf("SYSCLK: %3.1fMhz, HCLK: %3.1fMhz, PCLK1: %3.1fMhz, PCLK2: %3.1fMhz, ADCCLK: %3.1fMhzn",
           (float)clocks.SYSCLK_Frequency / 1000000, (float)clocks.HCLK_Frequency / 1000000,
           (float)clocks.PCLK1_Frequency / 1000000, (float)clocks.PCLK2_Frequency / 1000000, (float)clocks.ADCCLK_Frequency / 1000000);

    printf("ADC Analog Watchdog Testn");
    printf("LTR: 1024, HTR: 2048n");

    // 主循環(huán):周期性觸發(fā)ADC轉(zhuǎn)換
    while (1)
    {
        ADC_SoftwareStartConvCmd(ADC1, ENABLE);  // 軟件觸發(fā)ADC轉(zhuǎn)換
        delay_ms(200);  // 等待轉(zhuǎn)換完成并延時(shí)200ms
    }
}

在main函數(shù)的無(wú)限循環(huán)里,每隔 200ms 啟動(dòng)一次 ADC 轉(zhuǎn)換。這樣做的目的是周期性地對(duì) ADC 通道進(jìn)行采樣。

3.中斷處理部分

// 模擬看門狗中斷處理函數(shù)
void ADC1_2_IRQHandler(void)
{
    ADC_ITConfig(ADC1, ADC_IT_AWD, DISABLE);  // 臨時(shí)禁用中斷,避免重復(fù)觸發(fā)

    if (SET == ADC_GetFlagStatus(ADC1, ADC_FLAG_AWD))  // 檢查模擬看門狗標(biāo)志
    {
        ADC_ClearFlag(ADC1, ADC_FLAG_AWD);  // 清除中斷標(biāo)志
        ADC_ClearITPendingBit(ADC1, ADC_IT_AWD);  // 清除中斷掛起位

        // 打印觸發(fā)中斷的ADC值(12位精度,范圍0~4095)
        printf("ADC Awd is Happened. Code Value = %d rn", ADC1->DR);
    }

    ADC_ITConfig(ADC1, ADC_IT_AWD, ENABLE);  // 重新使能中斷
}

ADC1_2_IRQHandler函數(shù)作為模擬看門狗中斷的處理函數(shù)。當(dāng) ADC 值超出預(yù)設(shè)的閾值范圍時(shí),會(huì)觸發(fā)該中斷。在中斷處理過(guò)程中,先禁用中斷,接著清除中斷標(biāo)志和掛起位,然后打印出觸發(fā)中斷時(shí)的 ADC 值,最后重新使能中斷。

9 下載驗(yàn)證

9.1 ADC_AnalogWatchdog例程

實(shí)驗(yàn)現(xiàn)象分析

系統(tǒng)啟動(dòng)信息: 系統(tǒng)啟動(dòng)后,會(huì)在串口輸出系統(tǒng)時(shí)鐘頻率信息,同時(shí)顯示正在進(jìn)行 ADC 模擬看門狗測(cè)試以及預(yù)設(shè)的下限和上限。

ADC 轉(zhuǎn)換: 系統(tǒng)會(huì)每隔 200ms 啟動(dòng)一次 ADC 轉(zhuǎn)換。若輸入到 ADC 通道 10 的電壓值處于 1024 - 2048 的范圍內(nèi),不會(huì)有額外信息輸出。

模擬看門狗觸發(fā):當(dāng)輸入到 ADC 通道 10 的電壓值超出 1024 - 2048 的范圍時(shí),會(huì)觸發(fā)模擬看門狗中斷,在串口輸出觸發(fā)中斷時(shí)的 ADC 值。

持續(xù)運(yùn)行: 系統(tǒng)會(huì)持續(xù)運(yùn)行,不斷進(jìn)行 ADC 轉(zhuǎn)換,并在需要時(shí)觸發(fā)模擬看門狗中斷。

wKgZO2g2o26AAj7GAAL8sp2RBFE327.png

WIZnet 是一家無(wú)晶圓廠半導(dǎo)體公司,成立于 1998 年。產(chǎn)品包括互聯(lián)網(wǎng)處理器 iMCU?,它采用 TOE(TCP/IP 卸載引擎)技術(shù),基于獨(dú)特的專利全硬連線 TCP/IP。iMCU? 面向各種應(yīng)用中的嵌入式互聯(lián)網(wǎng)設(shè)備。

WIZnet 在全球擁有 70 多家分銷商,在香港、韓國(guó)、美國(guó)設(shè)有辦事處,提供技術(shù)支持和產(chǎn)品營(yíng)銷。

香港辦事處管理的區(qū)域包括:澳大利亞、印度、土耳其、亞洲(韓國(guó)和日本除外)。

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

    關(guān)注

    2564

    文章

    52821

    瀏覽量

    765709
  • 單片機(jī)
    +關(guān)注

    關(guān)注

    6067

    文章

    44967

    瀏覽量

    649096
  • 以太網(wǎng)
    +關(guān)注

    關(guān)注

    40

    文章

    5615

    瀏覽量

    175428
  • adc
    adc
    +關(guān)注

    關(guān)注

    99

    文章

    6673

    瀏覽量

    548781
  • 數(shù)字轉(zhuǎn)換器

    關(guān)注

    0

    文章

    239

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    第十W55MH32中斷應(yīng)用概覽

    本章講述了W55MH32中斷應(yīng)用,涵蓋異常類型、NVIC介紹、優(yōu)先級(jí)定義與分組,闡述中斷編程三要點(diǎn)(使能中斷、配置 NVIC、編寫服務(wù)函數(shù)),并強(qiáng)調(diào)優(yōu)先級(jí)分組設(shè)置注意事項(xiàng)。
    的頭像 發(fā)表于 05-22 17:07 ?929次閱讀
    <b class='flag-5'>第十</b>章 <b class='flag-5'>W55MH32</b>中斷應(yīng)用概覽

    第十四章 USART——串口通訊

    本章介紹了USART串口通訊,含物理層(RS-232、TTL電平)、協(xié)議層(波特率、數(shù)據(jù)幀),及W55MH32的USART功能與應(yīng)用。
    的頭像 發(fā)表于 06-14 16:30 ?869次閱讀
    <b class='flag-5'>第十四章</b> USART——串口通訊

    軟件定義無(wú)線電手冊(cè),第十四

    軟件定義無(wú)線電手冊(cè),第十四版。pentek公司出的資料。
    發(fā)表于 02-18 09:52

    基于AVR高性能單片機(jī)以太網(wǎng)接口設(shè)計(jì)

    隨著internet的發(fā)展和應(yīng)用,嵌入式系統(tǒng)在網(wǎng)絡(luò)方面的應(yīng)用技術(shù)也逐漸成熟。針對(duì)目前大量使用8位微控制器的嵌入式系統(tǒng),采用ATMEL公司的高性能單片機(jī)ATMEGA64和10MB/S以太網(wǎng)控制芯片RTL8
    發(fā)表于 12-30 09:42 ?43次下載

    W5100在單片機(jī)實(shí)現(xiàn)以太網(wǎng)通信中的應(yīng)用

    在此介紹了一種基于單片機(jī)W5100組合實(shí)現(xiàn)以太網(wǎng)通信的設(shè)計(jì)方法。采用以TCPdP協(xié)議為基礎(chǔ)的網(wǎng)絡(luò)解決方案。W5100是嵌入式以太網(wǎng)硬件協(xié)議
    發(fā)表于 04-24 15:13 ?153次下載
    <b class='flag-5'>W</b>5100在<b class='flag-5'>單片機(jī)</b>實(shí)現(xiàn)<b class='flag-5'>以太網(wǎng)</b>通信中的應(yīng)用

    視頻_高速放大器設(shè)計(jì)指南 第十四

    視頻_高速放大器設(shè)計(jì)指南 第十四
    發(fā)表于 03-05 15:34 ?0次下載

    高性能單片機(jī)Mega64和10Mb/s以太網(wǎng)控制芯片,實(shí)現(xiàn)以太網(wǎng)接口設(shè)計(jì)方案

    微控制器選用高性能的AVR單片機(jī)Mega64,AVR是ATMEL公司結(jié)合了成熟的51系列和PIC系列單片機(jī)的優(yōu)點(diǎn)而推出的高性能8位單片機(jī),具
    發(fā)表于 09-29 16:25 ?5035次閱讀
    <b class='flag-5'>高性能</b><b class='flag-5'>單片機(jī)</b>Mega64和10Mb/s<b class='flag-5'>以太網(wǎng)</b>控制芯片,實(shí)現(xiàn)<b class='flag-5'>以太網(wǎng)</b>接口設(shè)計(jì)方案

    WIZnet高性能以太網(wǎng)單片機(jī)W55MH32重磅發(fā)布!

    WIZnet高性能以太網(wǎng)單片機(jī)W55MH32重磅發(fā)布!本文詳細(xì)解析了W55MH32芯片的高性能網(wǎng)絡(luò)處理能力與硬件資源,以及兩款
    的頭像 發(fā)表于 05-07 16:17 ?308次閱讀
    WIZnet<b class='flag-5'>高性能以太網(wǎng)</b><b class='flag-5'>單片機(jī)</b><b class='flag-5'>W55MH32</b>重磅發(fā)布!

    即刻啟程,踏上W55MH32高性能以太網(wǎng)單片機(jī)學(xué)習(xí)之路!

    即刻啟程,踏上W55MH32高性能以太網(wǎng)單片機(jī)學(xué)習(xí)之路!即刻開(kāi)啟W55MH32學(xué)習(xí)之旅!本教系列程配套官方手冊(cè)與W55MH32L
    的頭像 發(fā)表于 05-07 18:51 ?302次閱讀
    即刻啟程,踏上<b class='flag-5'>W55MH32</b><b class='flag-5'>高性能以太網(wǎng)</b><b class='flag-5'>單片機(jī)</b>學(xué)習(xí)之路!

    第一章 W55MH32 高性能以太網(wǎng)單片機(jī)的學(xué)習(xí)方法概述

    本章介紹W55MH32的學(xué)習(xí)方法,建議先了解硬件資源,按基礎(chǔ)篇、入門篇循序漸進(jìn)學(xué)習(xí)。參考兩份手冊(cè),提供例程資料,還給出官網(wǎng)、github 等學(xué)習(xí)資料查找渠道。讓我們一起踏上W55MH32高性能
    的頭像 發(fā)表于 05-26 09:07 ?22次閱讀
    第一章 <b class='flag-5'>W55MH32</b> <b class='flag-5'>高性能以太網(wǎng)</b><b class='flag-5'>單片機(jī)</b>的學(xué)習(xí)方法概述

    第二章 開(kāi)發(fā)板與芯片介紹 詳解W55MH32芯片及開(kāi)發(fā)

    本章介紹了W55MH32芯片及開(kāi)發(fā)板。該芯片采用Cortex-M3內(nèi)核,主頻216MHz,集成以太網(wǎng)功能,有L和Q兩種型號(hào)。配套開(kāi)發(fā)板L-EVB功能豐富、Q-EVB為最小系統(tǒng)板,均含仿
    的頭像 發(fā)表于 05-26 09:19 ?310次閱讀
    第二章 <b class='flag-5'>開(kāi)發(fā)</b>板與芯片介紹  詳解<b class='flag-5'>W55MH32</b>芯片及<b class='flag-5'>開(kāi)發(fā)</b>板

    W55MH32高性能以太網(wǎng)單片機(jī)教程 第九章 窗口看門狗(WWDG)

    本章介紹了W55MH32的窗口看門狗(WWDG),其用于監(jiān)測(cè)軟件故障,具可編程遞減計(jì)數(shù)器等特性。從寄存器、中斷喂狗和復(fù)位測(cè)試兩個(gè)程序例程進(jìn)行講解。
    的頭像 發(fā)表于 05-27 10:26 ?276次閱讀
    <b class='flag-5'>W55MH32</b><b class='flag-5'>高性能以太網(wǎng)</b><b class='flag-5'>單片機(jī)</b>教程 第九章 窗口看門狗(WWDG)

    WIZnet W55MH32以太網(wǎng)單片機(jī)開(kāi)發(fā)教程 第十一章 通用定時(shí)器(上篇

    本章介紹了W55MH32的通用定時(shí)器TIM2~TIM5,其由 16 位計(jì)數(shù)器等構(gòu)成,具輸入捕獲等功能,有多種計(jì)數(shù)模式及時(shí)鐘選擇。對(duì)例程進(jìn)行了講解并下載驗(yàn)證,TIM9~14功能類似,詳見(jiàn)《W55MH32參考手冊(cè)》。
    的頭像 發(fā)表于 05-28 10:12 ?271次閱讀
    WIZnet <b class='flag-5'>W55MH32</b><b class='flag-5'>以太網(wǎng)</b><b class='flag-5'>單片機(jī)</b><b class='flag-5'>開(kāi)發(fā)</b>教程 <b class='flag-5'>第十</b>一章 通用定時(shí)器(<b class='flag-5'>上篇</b>)

    WIZnet W55MH32以太網(wǎng)單片機(jī)開(kāi)發(fā)教程第十一章 通用定時(shí)器(下篇)

    本章為W55MH32通用定時(shí)器的下篇,介紹了TIM_InputCapture 等 4 個(gè)程序設(shè)計(jì)例程,涉及輸入捕獲、PWM 輸出、中斷測(cè)試、觸摸檢測(cè)等功能和例程下載驗(yàn)證情況,如串口輸出、波形檢測(cè)等。
    的頭像 發(fā)表于 05-28 10:48 ?283次閱讀
    WIZnet <b class='flag-5'>W55MH32</b><b class='flag-5'>以太網(wǎng)</b><b class='flag-5'>單片機(jī)</b><b class='flag-5'>開(kāi)發(fā)</b>教程<b class='flag-5'>第十</b>一章 通用定時(shí)器(下篇)

    第十四章 ADC(下篇)

    文章介紹了基于W55MH32的三個(gè)ADC例程:ADC_Double雙模式同步采樣兩通道,ADC_Single單通道采樣,ADC_Vrefin
    的頭像 發(fā)表于 05-29 17:48 ?275次閱讀
    <b class='flag-5'>第十四章</b> <b class='flag-5'>ADC</b>(下篇)
    主站蜘蛛池模板: 沧州市| 台中市| 永宁县| 岗巴县| 建阳市| 静乐县| 衡阳县| 江都市| 灵台县| 巴彦淖尔市| 泽州县| 五常市| 洛宁县| 百色市| 通州区| 出国| 新余市| 浏阳市| 丹寨县| 海原县| 长泰县| 上蔡县| 邵阳县| 天门市| 沈丘县| 龙海市| 灌云县| 盐城市| 固阳县| 青浦区| 枞阳县| 鸡西市| 海安县| 伊通| 井研县| 保康县| 阜南县| 清新县| 南城县| 中西区| 葫芦岛市|