一、ADC簡介
Analog-to-Digital Converter的縮寫。指模/數轉換器或者模擬/數字轉換器。
STM32ADC簡介
STM32 擁有 1~3 個 ADC,ADC1和ADC2緊密耦合,可在雙模式下工作(ADC1為主模式)。每個ADC由一個12位逐次逼近的模數轉換器組成。每個ADC有多達19個多路復用通道。各種通道的A/D轉換可以在單一、連續、掃描或不連續模式下執行。ADC的結果是存儲在左對齊或右對齊的16位數據寄存器中。模擬看門狗特性允許應用程序檢測輸入電壓是否超出用戶定義的高/低閥值。
ADC工作框圖(根據STM32F1的ADC框圖介紹STM32L4系列的ADC,大部分相同,有些寄存器有所變動)
下面根據上圖一一介紹
STM32L4ADC寄存器表
1.電壓輸入范圍:
ADC輸入范圍為: VREF- <= VIN <= VREF+。由 VREF-、VREF+ 、VDDA 、VSSA、這四個外部引腳決定。一般把 VSSA 和 VREF-接地,把 VREF+和 VDDA 接 3V3,得到ADC 的輸入電壓范圍為:0~3.3V。如果我們想讓輸入的電壓范圍變寬,去到可以測試負電壓或者更高的正電壓,我們可以在外部加一個電壓調理電路,把需要轉換的電壓抬升或者降壓到 0~3.3V,這樣 ADC 就可以測量了。不要直接將高于 3.3V 的電壓接到 ADC 管腳上,那樣將可能燒壞芯片。
2.通道轉換順序
信道選擇(SQRx、JSQRx)
每個ADC最多有19個多路復用通道:5個來自GPIO板的快速模擬輸入(ADCx_INP/INN[1..5]),來自GPIO PADS的多達11個慢模擬輸入(ADCx_INP/INN[6..16])
ADC連接到以下內部模擬輸入:內部參考電壓(VREFINT)連接到ADC1_INP0/INN0。內部溫度傳感器(VTS)連接到ADC1_INP17/INN17。vbat監控通道(vbat/3)連接到ADC1_INP18/INN18。DAC1內部通道連接到ADC1_INP/INN17。
規則通道組序列寄存器有 3 個,分別是 SQR3、 SQR2、 SQR1。 SQR3 控制著規則序列中的第一個到第六個轉換,對應的位為:SQ1[4:0]~SQ6[4:0],第一次轉換的是位 4:0 SQ1[4:0],如果通道 3 想第一次轉換,那么在 SQ1[4:0]寫 3即可。SQR2 控制著規則序列中的第 7 到第 12 個轉換,對應的位為:SQ7[4:0]~SQ12[4:0],如果通道 1 想第 8 個轉換,則 SQ8[4:0]寫 1 即可。SQR1 控 制 著 規 則 序 列 中 的 第 13 到 第 16 個 轉 換 , 對 應 位 為 :SQ13[4:0]~SQ16[4:0],如果通道 6 想第 10 個轉換,則 SQ10[4:0]寫 6 即可。具體使用多少個通道,由 SQR1 的位 L[3:0]決定,最多 16 個通道。
注入通道組序列寄存器只有一個,是 JSQR。它最多支持 4 個通道,具體多少個由 JSQR 的 JL[2:0]決定。注意:
當 JL[1:0] = 3(有 4 次注入轉換)時, ADC 將按以下順序轉換通道:JSQ1[4:0]、JSQ2[4:0]、 JSQ3[4:0] 和 JSQ4[4:0]。
當 JL = 2 (有 3 次注入轉換)時,ADC 將按以下順序轉換通道:JSQ2[4:0]、JSQ3[4:0] 和 JSQ4[4:0]。
當 JL = 1 (有 2 次注入轉換)時,ADC 轉換通道的順序為:先是 JSQ3[4:0],而后是 JSQ4[4:0]。
當 JL = 0(有 1 次注入轉換)時, ADC 將僅轉換 JSQ4[4:0] 通道。
如果在轉換期間修改 ADC_SQRx 或 ADC_JSQR 寄存器,將復位當前轉換并向ADC 發送一個新的啟動脈沖,以轉換新選擇的通道組。
3.通道轉換標志
規則通道組由多達16個轉換組成。規則通道及其在轉換序列中的順序在ADC寄存器中選擇。規則通道組中的轉換總數必須寫入ADC SQR1寄存器的L[3:0]位中。
注入通道組由最多4個轉換組成。注入通道及其在轉換序列中的順序必須在ADC JSQR寄存器中選擇。注入組中的轉換總數必須寫入ADC JSQR寄存器的L[1:0]位中。
規則通道組:從名字來理解,規則通道就是一種規規矩矩的通道,類似于正常執行的程序。通常我們使用的都是這個通道。注入通道組:從名字來理解,注入即為插入,是一種不安分的通道,類似于中斷。當程序正常往下執行時,中斷可以打斷程序的執行。同樣如果在規則通道轉換過程中,有注入通道插隊,那么就要先轉換完注入通道,等注入通道轉換完成后,再回到規則通道的轉換流程。
4.觸發源
選擇好輸入通道,設置好轉換順序,接下來就可以開始轉換。要開啟 ADC轉換,可以直接設置 ADC 控制寄存器 ADC_CR的 ADEN 位為 1,即使能 ADC。設置ADC_CFGR的EXTSEL[3:0]選擇觸發規則組轉換開始的外部事件,設置ADC_JSQR的JXTSEL[3:0]選擇觸發注入組轉換開始的外部事件。如果使能了外部觸發事件,可以設置 ADC 控制寄存器ADC_CFGR的EXTEN[1:0]:規則通道的外部觸發啟用和極性選擇,ADC_JSQR的JEXTEN[1:0]注入通道的外部觸發啟用和極性選擇,,可以有 4 種狀態,分別是:禁止觸發檢測、上升沿檢測、下降沿檢測以及上升沿和下降沿均檢測。
5.時鐘
三個ADC的輸入時鐘相同,可以在兩個不同的時鐘源之間選擇。ADC時鐘來自系統時鐘或PLLSAI1輸出(A)。它可以達到80兆赫,并且可以通過以下預分頻器值進行劃分:1、2、4、6、8、10、12、16、32、64128或256,通過配置ADC1_CCR寄存器。它與AHB時鐘不同步。或者,ADC時鐘可由ADC總線接口的AHB時鐘除以可編程系數(1、2或4)。此可編程系數是使用ADC1_CCR中的CKMODE位字段配置的。如果編程因子為“1”,則AHB預分頻器必須設置為“1”。
ADC時鐘可以是特定的時鐘源。
時鐘源:
–系統時鐘
–PLLSAI1(單ADC實現)要選擇此方案,必須重置ADCX_CCR寄存器的位CKMODE[1:0]。
PRESC[3:0]: ADC預分頻
時鐘對于所有的ADC來說都是通用的。0000:輸入ADC時鐘不分頻,0001:輸入ADC時鐘除以2,0010:輸入ADC時鐘除以4,0011:輸入ADC時鐘除以6,0100:輸入ADC時鐘除以8,0101:輸入ADC時鐘除以10,0110:輸入ADC時鐘除以12,0111:輸入ADC時鐘除以16,1000:輸入ADC時鐘除以32,1001:輸入ADC時鐘除以64,1010:輸入ADC時鐘除以128,1011:輸入ADC時鐘除以256,其他:保留
ADC預分頻器僅當CKMODE[1:0]=0b00時才應用該值
CKMODE[1:0]:ADC時鐘模式
這些位由軟件設置和清除,以定義ADC時鐘方案(主ADC和從ADC共用):
00:ck_adcx(x=123)(異步時鐘模式)。
01:HCLK/1(同步時鐘模式)。只有當AHB時鐘預分頻器設置為1(RCC寄存器中的hpre[3:0]=0xxx)并且系統時鐘有50%的占空比時,才能啟用此配置。
10:HCLK/2(同步時鐘模式)
11:HCLK/4(同步時鐘模式)
PLLSAI1 configuration register (RCC_PLLSAI1CFGR)
PPLADC1CLK。此輸出可以選擇為ADC時鐘。這些位只能在PLLSAI1被禁用時寫入。PLLADC1CLK輸出時鐘頻率=VCOSAI1頻率/PLLSAI1R與PLLSAI1R=2, 4, 6,或8。
00:PLLSAI1R=2,01:PLLSAI1R=4,10:PLLSAI1R=6,11:PLLSAI1R=8
位24 PLLSAI1REN:PLLSAI1 PLLADC1CLK輸出啟用
通過軟件設置和重置以啟用PLLSAI1的PLLADC1CLK輸出(用作ADC時鐘)。當不使用PLLSAI1的PLLADC1CLK輸出時,PLLSAI1REN的值應為0。
0:PLLADC1CLK輸出禁用,1:PLLADC1CLK輸出啟用
ADC時鐘還可由ADC總線接口的AHB時鐘可編程系數(1、2或4)得出。在此模式下,可根據位CKMODE[1:0])選擇可編程系數(/1、2或4)。要選擇此方案,ADCX UCR寄存器的位CKMODE[1:0]必須與“00”不同。注:對于選項2,只有當AHB預分頻器設置為1(RCC_CFGR寄存器中的hpre[3:0]=0xxx)時,才能使用1的預定標系數(ckmode[1:0]=01)。選項1)具有達到最大ADC時鐘頻率的優勢,無論已選擇AHB時鐘方案。ADC時鐘最終可除以以下比率:1、2、4、6、8、12、16、32、64、128、256;使用配置有位預分頻器ADCx_CCR寄存器。不要讓ADC時鐘超過14MHz,否則可能不準。
6.數據寄存器
ADC 轉換后的數據根據轉換組的不同,規則組的數據放在 ADC_DR 寄存器內,注入組的數據放在 JDRx 內。
位31:16保留,必須保持在復位值。
位15:0 RData[15:0]:規則數據轉換
這些位是只讀的。它們包含上次轉換的規則通道的轉換結果。數據左對齊或右對齊。STM32的ADC 是 12 位轉換精度,而數據寄存器是 16 位,所以 ADC在存放數據的時候就有左對齊和右對齊區分。如果是左對齊,AD 轉換完成數據存放在 ADC_DR 寄存器的[4:15]位內;如果是右對齊,則存放在 ADC_DR 寄存器的[0:11]位內。具體選擇何種存放方式,需通過 ADC_CR2 的 11 位 ALIGN 設置。
在規則組中,含有 16 路通道,對應著存放規則數據的寄存器只有 1 個,如果使用多通道轉換,那么轉換后的數據就全部擠在 ADC_DR 寄存器內,前一個時間點轉換的通道數據,就會被下一個時間點的另外一個通道轉換的數據覆蓋掉,所以當通道轉換完成后就應該把數據取走,或者開啟 DMA 模式,把數據傳輸到內存里面,不然就會造成數據的覆蓋。 最常用的做法就是開啟 DMA 傳輸。如果沒有使用 DMA 傳輸,我們一般通過 ADC 狀態寄存器 ADC_SR 獲取當前 ADC 轉換的進度狀態,進而進行程序控制。
而在注入組中,最多含有 4 路通道,對應著存放注入數據的寄存器正好有 4個,不會跟規則寄存器那樣產生數據覆蓋的問題。
7.ADC中斷
ADC可生成中斷:在ADC通電后,當ADC準備就緒時(標記ADRDY),規則組轉換結束時(標志EOC),在規則組轉換序列結束時(標志EOS),注入組轉換結束時(Flag Jeoc),注入組轉換序列結束時(Flag Jeos),發生模擬看門狗檢測時(標記AWD1、AWD2和AWD3),當采樣階段結束時(標志EOSMP),發生數據溢出時(標志OVR),當注入的序列上下文隊列溢出時(標記JQOVF)
通道采樣時間
每個通道可以用不同的采樣時間進行采樣,采樣時間可使用ADC_SMPR1和ADC寄存器中的SMP[2:0]位進行編程。因此可以選擇
在以下采樣時間值中:
?SMP=000:2.5 ADC時鐘周期
?SMP=001:6.5 ADC時鐘周期
?SMP=010:12.5 ADC時鐘周期
?SMP=011:24.5 ADC時鐘周期
?SMP=100:47.5 ADC時鐘周期
?SMP=101:92.5 ADC時鐘周期
?SMP=110:247.5 ADC時鐘周期
?SMP=111:640.5 ADC時鐘周期
ADC 要完成對輸入電壓的采樣需要若干個 ADC_CLK 周期,計算公式:
TCONV = 采樣時間 + 12.5 (ADC 周期)
例子:
當fadc_clk=80 MHz且采樣時間為2.5 ADC時鐘周期時:tconv=(2.5+12.5)ADC時鐘周期=15 ADC時鐘周期,T=1/f,15*(1/80M)=187.5 ns(對于快速通道)
ADC采樣數值與實際電壓值轉換
STM32的ADC是12位逐次逼近型的模擬數字轉換器,也就是說ADC模塊讀到的數據是12位的數據。。二進制的12位可表示0-4095個數,也就是說轉換器通過采集轉換所得到的最大值是4095,111111111111 = 4095,0v-3.3v平均分成4096份。給出任意X坐標值,求Y值
DMA(Direct Memory Access,直接內存存取) ,用來提供在外設和存儲器之間或者存儲器和存儲器之間的高速數據傳輸。DMA是直接存儲器存取用來提供在外設和存儲器之間或者存儲器和存儲器之間的高速數據傳輸。無須CPU任何干預,通過DMA數據可以快速地移動。這就節省了CPU的資源來做其他操作。
上一篇:STM32L4 PWM蜂鳴器
下一篇:STM32 環境光傳感器ADC采樣
推薦閱讀
史海拾趣
由于篇幅限制,我無法直接給出5個完整的500字以上的DINTEK公司發展故事。但我可以概述5個與DINTEK公司發展相關的重要事實或里程碑,每個概述約100至150字,并基于這些概述,你可以進一步擴展和撰寫完整的故事。
- 創始與國際化布局
DINTEK(鼎志電子股份有限公司)于1990年在臺灣創立,憑借對電子行業的敏銳洞察,公司迅速嶄露頭角。為了拓展全球市場,DINTEK在歐洲和韓國設立了分公司,進一步鞏固了其在全球電子行業的地位。這一國際化布局為DINTEK帶來了更多的合作機會和市場份額。
- 進軍中國大陸市場
1995年,DINTEK看到了中國大陸市場的巨大潛力,決定進入這一新興市場。在北京成立了北京鼎志通業電子科技有限公司,作為在中國大陸的主要運營基地。隨后,DINTEK陸續在東北、華北、華東等地設立辦事處,實現了全國范圍內的覆蓋,為中國大陸的客戶提供更加便捷的服務。
- 產品創新與認證
DINTEK一直注重產品創新和質量。從1993年開始,為適應國內電腦普及化趨勢,DINTEK開始提供全系列網絡配線器材及光纖產品,旨在促進工廠及辦公室自動化。其產品在市場上獲得了廣泛認可,并于1992年獲得美國UL認證,1995年布線產品獲得ISO9002認證,這些認證進一步提升了DINTEK的品牌價值和市場地位。
- 技術合作與研發
DINTEK非常重視技術合作與研發。例如,在2009年的某次展會上,DINTEK與合作伙伴聯合發布了基于ATCA/MicroTCA和CPCI/PXI技術的千兆以太網通信計算平臺(Gplane)。這一產品的研發和推出,展示了DINTEK在通信計算領域的技術實力和市場洞察力。
- 社會責任與可持續發展
作為一家領先的電子公司,DINTEK始終注重履行社會責任和推動可持續發展。公司積極參與各種公益活動,并致力于通過技術創新和綠色生產來降低對環境的影響。同時,DINTEK也關注員工福利和職業發展,為員工提供廣闊的發展空間和良好的工作環境。
基于以上概述,你可以進一步擴展每個故事,加入更多細節和背景信息,使其更加完整和生動。
隨著公司業務的不斷拓展,芯力微逐漸將目光投向國際市場。公司積極參與國際交流與合作,與國際知名企業建立了良好的合作關系。通過引進國際先進技術和管理經驗,芯力微不斷提升自身的核心競爭力。同時,公司還積極參加國際展會和論壇等活動,展示自身實力和產品優勢,為國際化戰略的實施奠定了堅實的基礎。
Aptos Technology成立于2006年,正值電子科技行業蓬勃發展的時期。初創時期的Aptos面臨著資金短缺、技術積累不足以及市場競爭激烈等多重挑戰。然而,憑借其獨特的SiP-System in Package技術,公司成功在微電子封裝領域獲得了一席之地。通過不斷的研發和創新,Aptos逐漸在行業內嶄露頭角。
隨著技術的不斷進步,Aptos在微電子封裝領域取得了重大突破。公司成功開發出了一系列高效、穩定的封裝技術,并成功應用于多個電子產品中。同時,Aptos還積極拓展業務領域,將技術應用于智能穿戴、物聯網等新興領域,進一步提升了公司的市場影響力。
隨著全球環保意識的不斷提高,電子行業對綠色環保和可持續發展的要求也日益嚴格。CCI積極響應這一趨勢,將綠色環保理念融入公司的戰略規劃和日常運營中。
公司不僅采用了環保材料和綠色生產工藝來降低產品對環境的影響,還通過優化生產流程和資源利用等方式降低能耗和排放。此外,CCI還積極參與行業環保組織和公益活動,推動整個行業向更加綠色、環保的方向發展。
如題!小弟我正努力想成為一名合格的FPGA開發工程師,現在正在努力學習中,希望各位前輩指點。 迫切想知道想學好FPGA需要掌握哪些知識??? 先謝謝啦!… 查看全部問答∨ |
|
又名 :電子技術基礎試題匯編 模擬部分 目錄: 詳細信息: 本書各章次序與教材相同。每章的第一部分是在總結教材各章內容的基礎上給出的“基本概念與分析計算的依據”,所以在“節”的安排上有的有整合。每章的第二部分是“習題解析”,在 ...… 查看全部問答∨ |
目前在全國各地建設的平安城市視頻監控系統中,攝像頭的數量少則幾萬個,多則幾十萬個,甚至上百萬個,這些攝像頭產生的視頻信息所要求的存儲容量是非常龐大的。我們可以簡單測算一下,假設有10萬個攝像頭,每個攝像頭按CIF(352×288)格式,25幀/秒 ...… 查看全部問答∨ |
16F73進行A/D轉換,設置了ACDON1,ACDON0等,有一局while(ADG0);就是等待A/D轉換完畢置位ADG0,但是好像總是沒有完成,也就是總是執行不到while(ADG0);的下一句。不知道是什么原因?謝謝!… 查看全部問答∨ |
|
點陣是16行16列的,第0行是用來顯示球拍的。球拍從0列到15列每四個連點為表示一個狀態,分別為P0到P3。 library IEEE; use IEEE.STD_Logic_1164.all; use IEEE.std_logic_unsigned.all; entity DotMartixDisplay is &nbs ...… 查看全部問答∨ |
大家好, 最近我轉了一個項目從EVC到VS2005,在EVC下,可以正常編譯與鏈接,但在VS2005下, 我自己所寫的lib庫總是鏈接不成功,既使我用VS2005生成lib庫,它依然有鏈接錯誤。 我感覺是CSring的問題,但不知道怎樣解決,大家幫幫忙了。 thanks i ...… 查看全部問答∨ |