精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

YTM32的模數轉換器ADC外設模塊詳解

冬至子 ? 來源:安德魯的設計筆記本 ? 作者:安德魯蘇 ? 2023-10-09 16:35 ? 次閱讀

簡介

YTM32的ADC轉換器外設最多可以集成32個輸入通道,最高12b轉換精度,最快可以支持2M Sps的12b采樣。ADC轉換器外設內部的主要結構,如圖x所示,包括ADC輸入通道復用器、ADC轉換器、FIFO等。

image.png

圖x ADC外設模塊框圖

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

image.png

圖x ADC在芯片內部綁定的采樣信號

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

image.png

圖x ADC外設的總線時鐘和功能時鐘

這里有兩個要點:

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

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

image.png

圖x ADC轉換中的采樣保持時間

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

原理與機制

ADC轉換器的上下電和省電模式

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

image.png

圖x ADC轉換器的信號時序

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

ADC_CTRL[ADDIS]=1可以直接給ADC轉換器斷電。但為了確保ADC內部的狀態機不會被打亂,建議先通過ADC_CTRL[ADSTOP]=1請求停止轉換任務,在確保ADC轉換器已經不再執行任何轉換任務后,再給ADC轉換器斷電。

關于給ADC轉換器斷電的操作,YTM32的ADC外設還設計了一些“自動化”的供電管理機制,自動斷電Auto-Off模式,對應寄存器開關ADC_CFG0[AUTOOFF]

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

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

ADC轉換結果和FIFO

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

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

image.png

ADC FIFO中的轉換結果

當FIFO填滿了未能及時讀走的轉換數據,ADC外設設計了兩種機制處理后來的數據,一種是Overrun Mode,另一個是Wait Mode

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

ADC轉換隊列的工作模式

ADC的轉換過程,是由多個單通道的轉換任務串起來的轉換隊列,由寄存器字段ADC_CFG0[SEQLEN]由觸發信號驅動執行轉換過程。YTM32的ADC外設模塊中,設計了多種觸發機制,以不同的節奏執行轉換隊列中的轉換任務。通過配置寄存器位ADC_CFG0[DISCEN]ADC_CFG0[CONT],對應有Single模式、Continuou模式和Discontinuous模式。

表x ADC轉換隊列的工作模式

image.png

image.png

圖x ADC轉換隊列的工作模式

ADC轉換器的觸發信號

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

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

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

  • 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轉換器的看門狗

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

然而,當下的這款ADC最多可以保存16個轉換結果(在FIFO中)和24個采樣通道,但沒有為16個轉換結果或者24個采樣通道分別安排上限值寄存器和下限值寄存器。 這里有個機制,通過寄存器ADC_WDCTRL[WDSGL]選擇:

  • ADC_WDCTRL[WDSGL]=0時,硬件比較的機制會作用于FIFO的入口,任何通道的轉換結果進入FIFO時,都會被比較,有可能觸發超事件。
  • ADC_WDCTRL[WDSGL]=1時,硬件自動比較會現定于某個指定的通道,通道號設置于寄存器字段ADC_WDCTRL[WDCHSEL]中。

另外,還有控制位ADC_WDTH[THMD],可以設定在ADC轉換的結果是限定區域之內觸發超限事件還是在限定區域之外。如圖x所示。

image.png

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

中斷事件和DMA

ADC轉換器能夠觸發中斷的事件,主要是面向轉換任務和轉換隊列的執行轉換任務完成的情況,ADC外設甚至對ADC轉換器上電成功和采樣階段結束也設計中斷事件。

ADC的DMA是基于FIFO設計的。用戶可以在寄存器ADC_CFG0[WM]中設定產生DMA觸發信號的FIFO有效數據數量的閾值,當FIFO中已經填入的轉換結果數量達到預設的閾值時,ADC外設會向DMAMUX發出DMA觸發信號,預設的DMA搬運任務將一次性從ADC的FIFO中搬運走預設數量(可以小于等于預設的數量閾值)的轉換結果、

FIFO的閾值事件是可以產生DMA的觸發信號的同時,也可以產生中斷的觸發信號。根據設計慣例,當同一個事件的DMA和中斷觸發開關同時打開時,DMA的優先級更高,中斷信號不會發出。否則,如果在中斷服務程序中將FIFO中的數據讀走了,給DMA搬運的數據不夠多,FIFO就會產生下溢錯。

應用要點(軟件)

YTMicro SDK中包含了YTM32的ADC外設模塊的驅動程序adc_driver,并提供了關于ADC外設的樣例工程,包括:adcadc_dmaadc_all_channels等。

總結

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

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 看門狗
    +關注

    關注

    10

    文章

    559

    瀏覽量

    70754
  • 復用器
    +關注

    關注

    1

    文章

    706

    瀏覽量

    28292
  • 模數轉換器
    +關注

    關注

    26

    文章

    3144

    瀏覽量

    126747
  • FIFO存儲
    +關注

    關注

    0

    文章

    103

    瀏覽量

    5965
  • ADC轉換器
    +關注

    關注

    1

    文章

    28

    瀏覽量

    8318
收藏 人收藏

    評論

    相關推薦

    YTM32的LIN通信協議引擎LinFlexD外設模塊詳解

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

    YTM32的增強型定時eTMR外設模塊簡介

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

    數模和模數轉換器

    數模和模數轉換器數模和模數轉換器能將模擬量轉換為數字量的電路稱為模數轉換器,簡稱A/D轉換器ADC
    發表于 09-16 15:59

    5962-9581501HXA高端AD模數轉換器

    AD10242TZ/883B高端AD模數轉換器IC ADC 12BIT 41MSPS DL 68CLCC5962-9581501HXA高端AD模數轉換器IC ADC 12BIT 2 C
    發表于 07-15 11:10

    模數轉換器ADC)的配置有哪些流程?

    模數轉換器ADC)是什么?模數轉換器ADC)的配置有哪些流程?配置流程的代碼是什么?
    發表于 07-14 08:43

    ADC模數轉換器

    文章目錄1. ADC1. ADCADC(Analog-to-digital converters,模數轉換器),
    發表于 08-06 06:08

    ADC模數轉換器

    縮寫外設/單元ADC模數轉換器BKP備份寄存CAN控制局域網模塊DMA直接內存存取控制
    發表于 08-23 06:23

    STM32之ADC模數轉換器介紹

    ADC模數轉換器是什么?ADC模數轉換器的相關寄存有哪些?
    發表于 11-08 08:47

    模數轉換器ADC簡介

    ESP32 之 ESP-IDF 學習筆記(七)——模數轉換器ADC)文章目錄ESP32 之 ESP-IDF 學習筆記(七)——模數轉換器ADC)一、簡介1、兩個
    發表于 02-17 06:28

    模數轉換器ADC簡介

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

    電流積分模數轉換器(ADC),什么是電流積分模數轉換器(AD

    電流積分模數轉換器(ADC),什么是電流積分模數轉換器(ADC) 模數轉換器(Analog to digital Converter,簡稱
    發表于 03-24 13:31 ?3157次閱讀

    ADC0809模數轉換器的使用詳解與程序

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

    【單片機基礎】ADC0809模數轉換器詳解

    【單片機基礎】ADC0809模數轉換器詳解
    發表于 11-23 17:21 ?44次下載
    【單片機基礎】<b class='flag-5'>ADC</b>0809<b class='flag-5'>模數轉換器</b><b class='flag-5'>詳解</b>

    淺談CW32系列模數轉換器ADC

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

    ADC模數轉換器的延時原理

    ADC模數轉換器的延時原理主要與其內部的采樣和保持電路、比較、計數等有關。以下是一般的ADC轉換
    的頭像 發表于 11-16 15:59 ?903次閱讀