一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

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

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

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

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

掃碼添加小助手

加入工程師交流群

單芯片解決方案,開啟全新體驗——W55MH32 高性能以太網(wǎng)單片機

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

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

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

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

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

wKgZO2gbOfaAVPzkACJSygzv-rI600.png

第十四章 ADC(上篇)

1ADC簡介

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

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

1.1 ADC主要特征

W55MH32的ADC的主要特征如下:

12 位分辨率

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

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

1.2 ADC功能描述

ADC功能框圖如下:

wKgZPGg2o26ALT6sAAPHsG-Q5qk742.png

單個 ADC 框圖

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

名稱 信號類型 注解
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 個 ADC 模擬通道

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

1.3 ADC開關(guān)控制

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

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

1.4 ADC時鐘

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

2 模式選擇

2.1 通道選擇

有 16 個多路通道。可以把轉(zhuǎn)換組織成兩組:規(guī)則組和注入組。在任意多個通道上以任意順序進(jìn)行的一系列轉(zhuǎn)換構(gòu)成成組轉(zhuǎn)換。例如,可以如下順序完成轉(zhuǎn)換:通道 3、通道 8、通道 2、通道 2、通道 0、通道 2、通道 2、通道 15。

規(guī)則組由多達(dá) 16 個轉(zhuǎn)換組成。規(guī)則通道和它們的轉(zhuǎn)換順序在 ADC_SQRx 寄存器中選擇。規(guī)則組中轉(zhuǎn)換的總數(shù)應(yīng)寫入 ADC_SQR1 寄存器的 L[3:0]位中。

注入組由多達(dá) 4 個轉(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)換被清除,一個新的啟動脈沖將發(fā)送到 ADC 以轉(zhuǎn)換新選擇的組。

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

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

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

2.2 單次轉(zhuǎn)換模式

單次轉(zhuǎn)換模式下,ADC 只執(zhí)行一次轉(zhuǎn)換。該模式既可通過設(shè)置 ADC_CR2 寄存器的 ADON 位(只適用于規(guī)則通道)啟動也可通過外部觸發(fā)啟動(適用于規(guī)則通道或注入通道),這時 CONT 位為 0。一旦選擇通道的轉(zhuǎn)換完成:

如果一個規(guī)則通道被轉(zhuǎn)換:轉(zhuǎn)換數(shù)據(jù)被儲存在 16 位 ADC_DR 寄存器中EOC(轉(zhuǎn)換結(jié)束)標(biāo)志被設(shè)置如果設(shè)置了 EOCIE,則產(chǎn)生中斷。

如果一個注入通道被轉(zhuǎn)換:轉(zhuǎn)換數(shù)據(jù)被儲存在 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é)束馬上就啟動另一次轉(zhuǎn)換。此模式可通過外部觸發(fā)啟動或通過設(shè)置 ADC_CR2 寄存器上的 ADON 位啟動,此時 CONT 位是 1。

每個轉(zhuǎn)換后:如果一個規(guī)則通道被轉(zhuǎn)換:轉(zhuǎn)換數(shù)據(jù)被儲存在 16 位的 ADC_DR 寄存器中EOC(轉(zhuǎn)換結(jié)束)標(biāo)志被設(shè)置如果設(shè)置了 EOCIE,則產(chǎn)生中斷。

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

2.4 時序圖

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

wKgZO2g2o26AAMdgAAGDnDyYmYo539.png

時序圖

2.5 模擬看門狗

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

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

wKgZPGg2o22AdiKqAABrdqHJvr8824.png

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

模擬看門狗通道選擇

模擬看門狗警戒的通道 ADC_CR1 寄存器控制位
AWDSGL 位 AWDEN 位 JAWDEN 位
任意值 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 掃描模式

此模式用來掃描一組模擬通道。

掃描模式可通過設(shè)置 ADC_CR1 寄存器的 SCAN 位來選擇。一旦這個位被設(shè)置,ADC 掃描所有被ADC_SQRX 寄存器(對規(guī)則通道)或 ADC_JSQR(對注入通道)選中的所有通道。在每個組的每個通道上執(zhí)行單次轉(zhuǎn)換。在每個轉(zhuǎn)換結(jié)束時,同一組的下一個通道被自動轉(zhuǎn)換。如果設(shè)置了 CONT 位,轉(zhuǎn)換不會在選擇組的最后一個通道上停止,而是再次從選擇組的第一個通道繼續(xù)轉(zhuǎn)換。

如果設(shè)置了 DMA 位,在每次 EOC 后,DMA 控制器把規(guī)則組通道的轉(zhuǎn)換數(shù)據(jù)傳輸?shù)?SRAM 中。而注入通道轉(zhuǎn)換的數(shù)據(jù)總是存儲在 ADC_JDRx 寄存器中。

2.7 注入通道管理

觸發(fā)注入

清除 ADC_CR1 寄存器的 JAUTO 位,并且設(shè)置 SCAN 位,即可使用觸發(fā)注入功能。

1. 利用外部觸發(fā)或通過設(shè)置 ADC_CR2 寄存器的 ADON 位,啟動一組規(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)換不會被中斷,但是規(guī)則序列將在注入序列結(jié)束后被執(zhí)行。

注: 當(dāng)使用觸發(fā)的注入轉(zhuǎn)換時,必須保證觸發(fā)事件的間隔長于注入序列。例如:序列長度為 28 個ADC 時鐘周期(即 2 個具有 1.5 個時鐘間隔采樣時間的轉(zhuǎn)換),觸發(fā)之間最小的間隔必須是 29 個ADC 時鐘周期。

自動注入

如果設(shè)置了 JAUTO 位,在規(guī)則組通道之后,注入組通道被自動轉(zhuǎn)換。這可以用來轉(zhuǎn)換在ADC_SQRx 和 ADC_JSQR 寄存器中設(shè)置的多至 20 個轉(zhuǎn)換序列。

在此模式里,必須禁止注入通道的外部觸發(fā)。

如果除 JAUTO 位外還設(shè)置了 CONT 位,規(guī)則通道至注入通道的轉(zhuǎn)換序列被連續(xù)執(zhí)行。對于 ADC 時鐘預(yù)分頻系數(shù)為 4 至 8 時,當(dāng)從規(guī)則轉(zhuǎn)換切換到注入序列或從注入轉(zhuǎn)換切換到規(guī)則序列時,會自動插入 1 個 ADC 時鐘間隔;當(dāng) ADC 時鐘預(yù)分頻系數(shù)為 2 時,則有 2 個 ADC 時鐘間隔的延遲。

注意: 不可能同時使用自動注入和間斷模式。

wKgZO2g2o22AD8l6AADHtpO0FYg768.png

注入轉(zhuǎn)換延時

2.8 間斷模式

規(guī)則組

此模式通過設(shè)置 ADC_CR1 寄存器上的 DISCEN 位激活。它可以用來執(zhí)行一個短序列的 n 次轉(zhuǎn)換(n<=8),此轉(zhuǎn)換是 ADC_SQRx 寄存器所選擇的轉(zhuǎn)換序列的一部分。數(shù)值 n 由 ADC_CR1 寄存器的DISCNUM[2:0]位給出。

一個外部觸發(fā)信號可以啟動 ADC_SQRx 寄存器中描述的下一輪 n 次轉(zhuǎn)換,直到此序列所有的轉(zhuǎn)換完成為止??偟男蛄虚L度由 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)換一個規(guī)則組時,轉(zhuǎn)換序列結(jié)束后不自動從頭開始。當(dāng)所有子組被轉(zhuǎn)換完成,下一次觸發(fā)啟動第一個子組的轉(zhuǎn)換。在上面的例子中,第四次觸發(fā)重新轉(zhuǎn)換第一子組的通道 0、1 和 2。

注入組

此模式通過設(shè)置 ADC_CR1 寄存器的 JDISCEN 位激活。在一個外部觸發(fā)事件后,該模式按通道順序逐個轉(zhuǎn)換 ADC_JSQR 寄存器中選擇的序列。一個外部觸發(fā)信號可以啟動 ADC_JSQR 寄存器選擇的下一個通道序列的轉(zhuǎn)換,直到序列中所有的轉(zhuǎn)換完成為止??偟男蛄虚L度由 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)換,下個觸發(fā)啟動第 1 個注入通道的轉(zhuǎn)換。在上述例子中,第四個觸發(fā)重新轉(zhuǎn)換第 1 個注入通道 1。

2.不能同時使用自動注入和間斷模式。

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

3 校準(zhǔn)

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

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

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

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

wKgZPGg2o22AcbxgAADWFypERPg273.png

校準(zhǔn)時序圖

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

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

wKgZPGg2o26AcFXaAACrhjmYxmU694.pngwKgZO2g2o22AZyOAAACcdanFqp4487.png

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

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

wKgZO2g2o22AbsguAACsfk4V080560.png

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

wKgZPGg2o22AXDNZAACcBB163Bg436.png

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

3.2 可編程的通道采樣時間

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

總轉(zhuǎn)換時間如下計算:

TCONV=采樣時間+12.5 個周期

例如:

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

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

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

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

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

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

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

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

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

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

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

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

觸發(fā)源 連接類型 EXTSSEL[2:0]
TIM3_CC1 事件 來自片上定時器的內(nèi)部信號 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 事件 來自片上定時器的內(nèi)部信號 000
TIM1_CC4 事件 001
TIM4_CC3 事件 010
TIM8_CC2 事件 011
TIM8_CC4 事件 100
TIM5_TRGO 事件 101
TIM5_CC4 事件 110
JSWSTART 軟件控制位 111

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

3.4 DMA請求

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

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

4 雙ADC模式

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

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

共有 6 種可能的模式:

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

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

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

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

wKgZPGg2o2-AcJfyAAO7t802Rp0024.png

雙 ADC 框圖

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

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

4.1 同步注入模式

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

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

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

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

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

wKgZO2g2o22AY13wAADmyXUIpIQ016.png

在 4 個通道上的同步注入模式

4.2 同步規(guī)則模式

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

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

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

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

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

wKgZO2g2o22AJz7OAAD7UzgNulE580.png

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

4.3 快速交叉模式

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

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

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

wKgZPGg2o22AahdEAAB-m0JhyGA126.png

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

4.4 慢速交叉模式

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

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

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

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

wKgZPGg2o26ABbltAACZxm0I7DA136.png

在 1 個通道上的慢速交叉模式

4.5 交替觸發(fā)模式

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

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

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

如此循環(huán)……

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

wKgZPGg2o26Ac38uAADEnSM_uIo908.png

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

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

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

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

如此循環(huán)……

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

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

wKgZO2g2o26AAWmCAAC2wp1qPpc953.png

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

4.6 獨立模式

此模式里,雙 ADC 同步不工作,每個 ADC 接口獨立工作。

5 混合的規(guī)則

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

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

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

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

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

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

wKgZO2g2o26AaNxQAADiRbJNp7c554.png

交替+規(guī)則同步

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

wKgZPGg2o26AeD7kAAD3zl1DeAU889.png

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

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

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

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

wKgZPGg2o26AB2gCAACTlXjiFkU407.png

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

6 溫度傳感器

溫度傳感器可以用來測量器件周圍的溫度(TA)。

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

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

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

wKgZO2g2o26AKwRfAAC3DLM_-Fo048.png

溫度傳感器和 VREFINT 通道框圖

讀溫度

為使用傳感器:

1. 選擇 ADC1_IN16 輸入通道

2. 選擇采樣時間為 17.1μs

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

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

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

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

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

這里:

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

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

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

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

7 ADC中斷

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

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

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

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

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

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

8 例程設(shè)計

8.1 ADC_AnalogWatchdog例程

1.初始化部分

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

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

    // 使能USART1和GPIOA時鐘
    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位停止位, 無校驗
    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時鐘
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_ADC1, ENABLE);
    RCC_ADCCLKConfig(RCC_PCLK2_Div8);  // ADC時鐘=PCLK2/8(假設(shè)PCLK2=72MHz,ADC時鐘=9MHz)

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

    // 配置ADC為獨立模式,單通道單次轉(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;  // 右對齊
    ADC_InitStructure.ADC_NbrOfChannel       = 1;  // 轉(zhuǎn)換通道數(shù)1
    ADC_Init(ADC1, &ADC_InitStructure);

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

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

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

    // 配置模擬看門狗:監(jiān)測通道10,閾值范圍1024~2048(對應(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ù)初始化:調(diào)用delay_init()函數(shù),為后續(xù)的延時操作做準(zhǔn)備。
  • ?UART 配置:UART_Configuration()函數(shù)用于配置 USART1,包含使能時鐘、設(shè)置 GPIO 引腳、初始化串口參數(shù)(如波特率、數(shù)據(jù)位、停止位等),并且使能串口。
  • ?ADC 配置:ADC_Configuration()函數(shù)對 ADC1 進(jìn)行配置,具體操作有使能時鐘、設(shè)置 ADC 時鐘分頻、初始化 ADC 參數(shù)(如工作模式、轉(zhuǎn)換模式等)、配置模擬看門狗(設(shè)定監(jiān)測通道和閾值)、使能模擬看門狗中斷以及進(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)時鐘信息
    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)換完成并延時200ms
    }
}

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

3.中斷處理部分

// 模擬看門狗中斷處理函數(shù)
void ADC1_2_IRQHandler(void)
{
    ADC_ITConfig(ADC1, ADC_IT_AWD, DISABLE);  // 臨時禁用中斷,避免重復(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è)的閾值范圍時,會觸發(fā)該中斷。在中斷處理過程中,先禁用中斷,接著清除中斷標(biāo)志和掛起位,然后打印出觸發(fā)中斷時的 ADC 值,最后重新使能中斷。

9 下載驗證

9.1 ADC_AnalogWatchdog例程

實驗現(xiàn)象分析

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

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

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

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

wKgZO2g2o26AAj7GAAL8sp2RBFE327.png

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

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

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

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

    關(guān)注

    2565

    文章

    52995

    瀏覽量

    767382
  • 單片機
    +關(guān)注

    關(guān)注

    6067

    文章

    44991

    瀏覽量

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

    關(guān)注

    41

    文章

    5635

    瀏覽量

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

    關(guān)注

    99

    文章

    6708

    瀏覽量

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

    關(guān)注

    0

    文章

    239

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

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

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

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

    軟件定義無線電手冊,第十四

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

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

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

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

    在此介紹了一種基于單片機W5100組合實現(xiàn)以太網(wǎng)通信的設(shè)計方法。采用以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'>單片機</b>實現(xiàn)<b class='flag-5'>以太網(wǎng)</b>通信中的應(yīng)用

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    第十四章 ADC(下篇)

    文章介紹了基于W55MH32的三個ADC例程:ADC_Double雙模式同步采樣兩通道,ADC_Single單通道采樣,ADC_Vrefin
    的頭像 發(fā)表于 05-29 17:48 ?338次閱讀
    <b class='flag-5'>第十四章</b> <b class='flag-5'>ADC</b>(下篇)