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

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

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

YTM32的模數(shù)轉(zhuǎn)換器ADC外設(shè)模塊詳解

冬至子 ? 來源:安德魯?shù)脑O(shè)計筆記本 ? 作者:安德魯蘇 ? 2023-10-09 16:35 ? 次閱讀

簡介

YTM32的ADC轉(zhuǎn)換器外設(shè)最多可以集成32個輸入通道,最高12b轉(zhuǎn)換精度,最快可以支持2M Sps的12b采樣。ADC轉(zhuǎn)換器外設(shè)內(nèi)部的主要結(jié)構(gòu),如圖x所示,包括ADC輸入通道復(fù)用器、ADC轉(zhuǎn)換器、FIFO等。

image.png

圖x ADC外設(shè)模塊框圖

YTM32B1ME上集成了兩個ADC轉(zhuǎn)換器,每個轉(zhuǎn)換器實際僅對外開放了24個輸入通道,并且ADC0還在芯片內(nèi)部綁定了若干采樣點(所謂的external channel)。如圖x所示。

image.png

圖x ADC在芯片內(nèi)部綁定的采樣信號

ADC作為一個模擬外設(shè),通常會使用兩個時鐘源:使用總線時鐘驅(qū)動數(shù)字部分的電路,例如通過總線訪問寄存器等;通過功能時鐘驅(qū)動模擬部分的ADC轉(zhuǎn)換器工作。如圖x所示。

image.png

圖x ADC外設(shè)的總線時鐘和功能時鐘

這里有兩個要點:

  • 通過IPC可以選擇ADC轉(zhuǎn)換器的輸入時鐘源。實際上,ADC的模擬電路部分也不一定能消化掉來自于IPC的時鐘源,內(nèi)部還專門設(shè)計的分頻器。模擬電路對頻率敏感,因此特定的電路也會要求能夠處理的頻率信號在一定范圍內(nèi)。YTM32的ADC轉(zhuǎn)換器最高可以使用16MHz的時鐘信號作為ADC轉(zhuǎn)換器的時鐘源。
  • 模擬和數(shù)字部分在交換數(shù)據(jù)時,需要處理同步(同支持高頻率的定時器)。

ADC采樣的時序,通常包含采樣(Sampling)和保持(Holding)兩個階段,如圖x所示。采樣和保持在ADC的時鐘驅(qū)動下工作,時間越長,采樣的結(jié)果越接近真實值,但速度也會變慢。若用戶需要使用更快的采樣速度,只要提高ADC轉(zhuǎn)換時鐘和縮短采樣保持階段的時間即可,但產(chǎn)生的轉(zhuǎn)換結(jié)果就可能損失一些準(zhǔn)確度了。

image.png

圖x ADC轉(zhuǎn)換中的采樣保持時間

YTM32的ADC外設(shè),為了有效地使用電能,將ADC轉(zhuǎn)換器上電和掉電的控制接口也開放給用戶了。要知道,ADC作為一個模擬外設(shè),是個耗電大戶(另一個耗電大戶是PLL),如果在不需要執(zhí)行ADC轉(zhuǎn)換任務(wù)的階段停電,可能有效減少功耗,也能控制芯片的發(fā)熱。但是,ADC上電和下電過程,也都是需要一定時間的,上電過程需要等待供電穩(wěn)定后才能啟動ADC轉(zhuǎn)換任務(wù),ADC需要把正在執(zhí)行的任務(wù)執(zhí)行完畢,清理好工作現(xiàn)場之后才能順利下電。這些時間,都將會在使用ADC轉(zhuǎn)換器的過程中由用戶配置。

原理與機(jī)制

ADC轉(zhuǎn)換器的上下電和省電模式

MCU上電后,軟件通過IPC模塊,為ADC外設(shè)模塊開放了總線時鐘供應(yīng),但此時,ADC轉(zhuǎn)換器的供電還沒有加上,ADC外設(shè)模塊處于掉電模式(Off State,power-down mode)。若要啟用ADC轉(zhuǎn)換器,需由用戶先設(shè)定ADC_CTRL[ADEN]=1,開始為ADC轉(zhuǎn)換器供電,待t_startup(約2us)后,ADC轉(zhuǎn)換器供電穩(wěn)定,硬件置寄存器位ADC_CTRL[ADRDY]=1,告知用戶可以啟動轉(zhuǎn)換。此時請求ADC開始轉(zhuǎn)換,軟件觸發(fā)設(shè)定寄存器ADC_CTRL[ADSTART]=1,才正式啟動ADC轉(zhuǎn)換。如圖x所示。

image.png

圖x ADC轉(zhuǎn)換器的信號時序

注意,圖x中的ADSTART信號在ADRDY之前置位,同前文講述等待ADRDY置位后才拉起ADSTART不同。這展示了一種典型的情況:ADSTART只是請求不是命令,只有當(dāng)ADRDY置位之后,ADC轉(zhuǎn)換器才能啟動。

ADC_CTRL[ADDIS]=1可以直接給ADC轉(zhuǎn)換器斷電。但為了確保ADC內(nèi)部的狀態(tài)機(jī)不會被打亂,建議先通過ADC_CTRL[ADSTOP]=1請求停止轉(zhuǎn)換任務(wù),在確保ADC轉(zhuǎn)換器已經(jīng)不再執(zhí)行任何轉(zhuǎn)換任務(wù)后,再給ADC轉(zhuǎn)換器斷電。

關(guān)于給ADC轉(zhuǎn)換器斷電的操作,YTM32的ADC外設(shè)還設(shè)計了一些“自動化”的供電管理機(jī)制,自動斷電Auto-Off模式,對應(yīng)寄存器開關(guān)ADC_CFG0[AUTOOFF]

  • 默認(rèn)未啟動自動斷電模式時,用戶一為ADC轉(zhuǎn)換器建立穩(wěn)定的供電后,若無人為停用,則對ADC轉(zhuǎn)換器持續(xù)供電。下次啟動轉(zhuǎn)換也不需要等上電穩(wěn)定。
  • 若啟用自動斷電模式,則一旦ADC轉(zhuǎn)換器閑下來就自動斷電,在下次轉(zhuǎn)換任務(wù)的觸發(fā)信號到來時可自動喚醒恢復(fù)供電。此時,每次啟動轉(zhuǎn)換任務(wù),ADC轉(zhuǎn)換器都要等上電穩(wěn)定(t_startup)后再啟動轉(zhuǎn)換。這個模式下,原本硬件反饋供電穩(wěn)定的ADC_CTRL[ADRDY]標(biāo)志位將不再起作用(置位)。

啟用自動斷電模式后,執(zhí)行每次轉(zhuǎn)換任務(wù)之前,都需要重新等待供電穩(wěn)定的時間t_startup,這無疑影響了ADC的連續(xù)轉(zhuǎn)換速率。但大多數(shù)情況下,應(yīng)用對連續(xù)轉(zhuǎn)換速率沒有特別高的要求,使用啟動斷電模式可以在簡化用戶操作的前提下(不需要人工上電斷電),有效降低ADC轉(zhuǎn)換器的動態(tài)功耗。

ADC轉(zhuǎn)換結(jié)果和FIFO

ADC外設(shè)內(nèi)部設(shè)計了一個32-bit x 16 的FIFO,按照轉(zhuǎn)換完成的順序,依次存入轉(zhuǎn)換完成的結(jié)果。用戶從寄存器ADC_FIFO作為讀FIFO的入口,可以依次讀出轉(zhuǎn)換結(jié)果。

FIFO中的數(shù)據(jù)單元包含轉(zhuǎn)換結(jié)果對應(yīng)的通道ADC_FIFO[CHID]和轉(zhuǎn)換數(shù)值ADC_FIFO[DATA],無論設(shè)定的轉(zhuǎn)換分辨率(ADC_CFG[RES])是多少,數(shù)值固定右對齊的。如圖x所示。

image.png

ADC FIFO中的轉(zhuǎn)換結(jié)果

當(dāng)FIFO填滿了未能及時讀走的轉(zhuǎn)換數(shù)據(jù),ADC外設(shè)設(shè)計了兩種機(jī)制處理后來的數(shù)據(jù),一種是Overrun Mode,另一個是Wait Mode

  • Overrun Mode描述的是,當(dāng)新的轉(zhuǎn)換結(jié)果到來時,是覆蓋FIFO中最近一次轉(zhuǎn)換結(jié)果,還是直接拋棄掉新的轉(zhuǎn)換結(jié)果。由寄存器ADC_CFG0[OVRMD]控制啟用。
  • Wait Mode描述的是,當(dāng)FIFO滿的時候,直接給ADC轉(zhuǎn)換器斷電(類似于Auto-Off模式)。只有當(dāng)FIFO有空位的時候,才能給ADC轉(zhuǎn)換器供電。由寄存器ADC_CFG0[WAIT]控制啟用。

ADC轉(zhuǎn)換隊列的工作模式

ADC的轉(zhuǎn)換過程,是由多個單通道的轉(zhuǎn)換任務(wù)串起來的轉(zhuǎn)換隊列,由寄存器字段ADC_CFG0[SEQLEN]由觸發(fā)信號驅(qū)動執(zhí)行轉(zhuǎn)換過程。YTM32的ADC外設(shè)模塊中,設(shè)計了多種觸發(fā)機(jī)制,以不同的節(jié)奏執(zhí)行轉(zhuǎn)換隊列中的轉(zhuǎn)換任務(wù)。通過配置寄存器位ADC_CFG0[DISCEN]ADC_CFG0[CONT],對應(yīng)有Single模式、Continuou模式和Discontinuous模式。

表x ADC轉(zhuǎn)換隊列的工作模式

image.png

image.png

圖x ADC轉(zhuǎn)換隊列的工作模式

ADC轉(zhuǎn)換器的觸發(fā)信號

ADC外設(shè)模塊可以捕獲軟件觸發(fā)和硬件觸發(fā)信號(一個上升沿脈沖信號),以啟動轉(zhuǎn)換任務(wù)。觸發(fā)信號無論是來自于軟件觸發(fā)還是硬件觸發(fā),對于啟動轉(zhuǎn)換的作用是完全相同的,但ADC僅允許使用其中一種觸發(fā)模式,由寄存器ADC_CFG0[TRIGMD]選定。

  • 當(dāng)ADC_CFG0[TRIGMD]=0,軟件觸發(fā)可由用戶寫寄存器ADC_CTRL[ADCSTART]=1產(chǎn)生。
  • 當(dāng)ADC_CFG0[TRIGMD]=1,還需要設(shè)定寄存器ADC_CTRL[ADCSTART]=1解鎖硬件觸發(fā)信號(同步),硬件觸發(fā)的信號可以來自于芯片上的其它外設(shè)模塊。

硬件觸發(fā)信號大多來自于TMU(Trigger Multiplexer Module)或者PTU模塊(Programmable Trigger Unit),可以通過CIM(Chip Integration Module)模塊的寄存器CIM_CTRL[ADCn_TRIG_SEL]選擇ADC外設(shè)外部的觸發(fā)信號源:

  • Raw signal which from the PTU module (CIM->CTRL[ADCn_TRIG_SEL]=0)
  • Signal from the TMU module and synchronized by bus clock (CIM->CTRL[ADCn_TRIG_SEL]=1)
  • Signal from the TMU module and synchronized by function clock (CIM->CTRL[ADCn_TRIG_SEL]=2)

ADC轉(zhuǎn)換器的看門狗

YTM32微控制器的ADC外設(shè)設(shè)計了看門狗的功能,這個功能在同類的設(shè)計中,還有一個更直觀的名字,“硬件自動比較”。意思是通過為采樣轉(zhuǎn)換結(jié)果設(shè)置一個高限ADC_WDTH[HIGH]和低限ADC_WDTH[LOW]框起來的正常數(shù)值區(qū)間,每次ADC執(zhí)行轉(zhuǎn)換完成后,硬件都自動將轉(zhuǎn)換結(jié)果同預(yù)設(shè)的正常數(shù)值區(qū)間進(jìn)行比較,當(dāng)采樣結(jié)果過高(高于高限)或者過低(低于底限),都會觸發(fā)一個超出預(yù)設(shè)范圍的事件(可以觸發(fā)中斷)。這個功能通常用于實現(xiàn)對傳感器的監(jiān)控。某些MCU上設(shè)計ADC可以使用異步時鐘在低功耗模式下繼續(xù)存活,就會用到這個硬件自動判定超限的機(jī)制,只有當(dāng)出現(xiàn)異常采樣時,才喚醒CPU對環(huán)境做進(jìn)一步的判斷。

然而,當(dāng)下的這款A(yù)DC最多可以保存16個轉(zhuǎn)換結(jié)果(在FIFO中)和24個采樣通道,但沒有為16個轉(zhuǎn)換結(jié)果或者24個采樣通道分別安排上限值寄存器和下限值寄存器。 這里有個機(jī)制,通過寄存器ADC_WDCTRL[WDSGL]選擇:

  • 當(dāng)ADC_WDCTRL[WDSGL]=0時,硬件比較的機(jī)制會作用于FIFO的入口,任何通道的轉(zhuǎn)換結(jié)果進(jìn)入FIFO時,都會被比較,有可能觸發(fā)超事件。
  • 當(dāng)ADC_WDCTRL[WDSGL]=1時,硬件自動比較會現(xiàn)定于某個指定的通道,通道號設(shè)置于寄存器字段ADC_WDCTRL[WDCHSEL]中。

另外,還有控制位ADC_WDTH[THMD],可以設(shè)定在ADC轉(zhuǎn)換的結(jié)果是限定區(qū)域之內(nèi)觸發(fā)超限事件還是在限定區(qū)域之外。如圖x所示。

image.png

圖x 硬件自動比較的有效范圍

中斷事件和DMA

ADC轉(zhuǎn)換器能夠觸發(fā)中斷的事件,主要是面向轉(zhuǎn)換任務(wù)和轉(zhuǎn)換隊列的執(zhí)行轉(zhuǎn)換任務(wù)完成的情況,ADC外設(shè)甚至對ADC轉(zhuǎn)換器上電成功和采樣階段結(jié)束也設(shè)計中斷事件。

ADC的DMA是基于FIFO設(shè)計的。用戶可以在寄存器ADC_CFG0[WM]中設(shè)定產(chǎn)生DMA觸發(fā)信號的FIFO有效數(shù)據(jù)數(shù)量的閾值,當(dāng)FIFO中已經(jīng)填入的轉(zhuǎn)換結(jié)果數(shù)量達(dá)到預(yù)設(shè)的閾值時,ADC外設(shè)會向DMAMUX發(fā)出DMA觸發(fā)信號,預(yù)設(shè)的DMA搬運任務(wù)將一次性從ADC的FIFO中搬運走預(yù)設(shè)數(shù)量(可以小于等于預(yù)設(shè)的數(shù)量閾值)的轉(zhuǎn)換結(jié)果、

FIFO的閾值事件是可以產(chǎn)生DMA的觸發(fā)信號的同時,也可以產(chǎn)生中斷的觸發(fā)信號。根據(jù)設(shè)計慣例,當(dāng)同一個事件的DMA和中斷觸發(fā)開關(guān)同時打開時,DMA的優(yōu)先級更高,中斷信號不會發(fā)出。否則,如果在中斷服務(wù)程序中將FIFO中的數(shù)據(jù)讀走了,給DMA搬運的數(shù)據(jù)不夠多,F(xiàn)IFO就會產(chǎn)生下溢錯。

應(yīng)用要點(軟件)

YTMicro SDK中包含了YTM32的ADC外設(shè)模塊的驅(qū)動程序adc_driver,并提供了關(guān)于ADC外設(shè)的樣例工程,包括:adc、adc_dmaadc_all_channels等。

總結(jié)

YTM32的手冊對ADC外設(shè)模塊進(jìn)行了基本的介紹,列寫了ADC外設(shè)模塊開放給用戶的資源,本文對YTM32的ADC外設(shè)模塊的功能進(jìn)行演繹,更為細(xì)致地講解了ADC外設(shè)模塊及各功能的運行機(jī)制,方便用戶充分理解ADC外設(shè)模塊并結(jié)合應(yīng)用利用好在ADC中設(shè)計的硬件資源。同時,本文也是對一種ADC外設(shè)模塊的系統(tǒng)架構(gòu)設(shè)計進(jìn)行了較為細(xì)致的分析,推演了ADC外設(shè)模塊的設(shè)計方法,可以為從事芯片設(shè)計的系統(tǒng)架構(gòu)設(shè)計師們在設(shè)計IP時提供參考。

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

    關(guān)注

    10

    文章

    557

    瀏覽量

    70667
  • 復(fù)用器
    +關(guān)注

    關(guān)注

    1

    文章

    705

    瀏覽量

    28242
  • 模數(shù)轉(zhuǎn)換器

    關(guān)注

    26

    文章

    3063

    瀏覽量

    126661
  • FIFO存儲
    +關(guān)注

    關(guān)注

    0

    文章

    103

    瀏覽量

    5953
  • ADC轉(zhuǎn)換器
    +關(guān)注

    關(guān)注

    1

    文章

    28

    瀏覽量

    8306
收藏 人收藏

    評論

    相關(guān)推薦

    YTM32的LIN通信協(xié)議引擎LinFlexD外設(shè)模塊詳解

    YTM32微控制的LINFlexD外設(shè)模塊,實現(xiàn)了LIN協(xié)議控制的功能,可以支持LIN總線協(xié)議的主機(jī)和從機(jī)功能。
    的頭像 發(fā)表于 10-08 11:15 ?1722次閱讀
    <b class='flag-5'>YTM32</b>的LIN通信協(xié)議引擎LinFlexD<b class='flag-5'>外設(shè)</b><b class='flag-5'>模塊</b><b class='flag-5'>詳解</b>

    YTM32的增強(qiáng)型定時eTMR外設(shè)模塊簡介

    YTM32微控制上集成的eTMR模塊,是一個定時外設(shè),下轄多至8個通道
    的頭像 發(fā)表于 10-31 14:18 ?1046次閱讀
    <b class='flag-5'>YTM32</b>的增強(qiáng)型定時<b class='flag-5'>器</b>eTMR<b class='flag-5'>外設(shè)</b><b class='flag-5'>模塊</b>簡介

    數(shù)模和模數(shù)轉(zhuǎn)換器

    數(shù)模和模數(shù)轉(zhuǎn)換器數(shù)模和模數(shù)轉(zhuǎn)換器能將模擬量轉(zhuǎn)換為數(shù)字量的電路稱為模數(shù)轉(zhuǎn)換器,簡稱A/D轉(zhuǎn)換器ADC
    發(fā)表于 09-16 15:59

    5962-9581501HXA高端AD模數(shù)轉(zhuǎn)換器

    AD10242TZ/883B高端AD模數(shù)轉(zhuǎn)換器IC ADC 12BIT 41MSPS DL 68CLCC5962-9581501HXA高端AD模數(shù)轉(zhuǎn)換器IC ADC 12BIT 2 C
    發(fā)表于 07-15 11:10

    模數(shù)轉(zhuǎn)換器ADC)的配置有哪些流程?

    模數(shù)轉(zhuǎn)換器ADC)是什么?模數(shù)轉(zhuǎn)換器ADC)的配置有哪些流程?配置流程的代碼是什么?
    發(fā)表于 07-14 08:43

    ADC模數(shù)轉(zhuǎn)換器

    文章目錄1. ADC1. ADCADC(Analog-to-digital converters,模數(shù)轉(zhuǎn)換器),
    發(fā)表于 08-06 06:08

    ADC模數(shù)轉(zhuǎn)換器

    縮寫外設(shè)/單元ADC模數(shù)轉(zhuǎn)換器BKP備份寄存CAN控制局域網(wǎng)模塊DMA直接內(nèi)存存取控制
    發(fā)表于 08-23 06:23

    STM32之ADC模數(shù)轉(zhuǎn)換器介紹

    ADC模數(shù)轉(zhuǎn)換器是什么?ADC模數(shù)轉(zhuǎn)換器的相關(guān)寄存有哪些?
    發(fā)表于 11-08 08:47

    模數(shù)轉(zhuǎn)換器ADC簡介

    ESP32 之 ESP-IDF 學(xué)習(xí)筆記(七)——模數(shù)轉(zhuǎn)換器ADC)文章目錄ESP32 之 ESP-IDF 學(xué)習(xí)筆記(七)——模數(shù)轉(zhuǎn)換器ADC)一、簡介1、兩個
    發(fā)表于 02-17 06:28

    模數(shù)轉(zhuǎn)換器ADC簡介

    介紹將模擬電子信號轉(zhuǎn)換成數(shù)字信號的電路,稱為模數(shù)轉(zhuǎn)換器,簡稱A/D轉(zhuǎn)換器ADC。同理,將數(shù)字信號轉(zhuǎn)換成模擬信號的電路稱為數(shù)模
    發(fā)表于 02-18 06:54

    電流積分模數(shù)轉(zhuǎn)換器(ADC),什么是電流積分模數(shù)轉(zhuǎn)換器(AD

    電流積分模數(shù)轉(zhuǎn)換器(ADC),什么是電流積分模數(shù)轉(zhuǎn)換器(ADC) 模數(shù)轉(zhuǎn)換器(Analog to digital Converter,簡稱
    發(fā)表于 03-24 13:31 ?3139次閱讀

    ADC0809模數(shù)轉(zhuǎn)換器的使用詳解與程序

    adADC0809模數(shù)轉(zhuǎn)換器的使用詳解與程序,感興趣的可以下載看看。
    發(fā)表于 11-02 14:45 ?82次下載

    【單片機(jī)基礎(chǔ)】ADC0809模數(shù)轉(zhuǎn)換器詳解

    【單片機(jī)基礎(chǔ)】ADC0809模數(shù)轉(zhuǎn)換器詳解
    發(fā)表于 11-23 17:21 ?44次下載
    【單片機(jī)基礎(chǔ)】<b class='flag-5'>ADC</b>0809<b class='flag-5'>模數(shù)轉(zhuǎn)換器</b><b class='flag-5'>詳解</b>

    淺談CW32系列模數(shù)轉(zhuǎn)換器ADC

    CW32系列模數(shù)轉(zhuǎn)換器ADC
    的頭像 發(fā)表于 10-25 15:43 ?984次閱讀
    淺談CW32系列<b class='flag-5'>模數(shù)轉(zhuǎn)換器</b>(<b class='flag-5'>ADC</b>)

    ADC模數(shù)轉(zhuǎn)換器的延時原理

    ADC模數(shù)轉(zhuǎn)換器的延時原理主要與其內(nèi)部的采樣和保持電路、比較、計數(shù)等有關(guān)。以下是一般的ADC轉(zhuǎn)換
    的頭像 發(fā)表于 11-16 15:59 ?832次閱讀