S32K系列之ADC
簡(jiǎn)介
在S32K中,不同的芯片型號(hào)支持的ADC通道不同,S32K144UAVLL有兩個(gè)ADC,每個(gè)ADC有12位、10位、8位和6位可選,每個(gè)ADC有16個(gè)外部通道。學(xué)習(xí)ADC的第一步是要掌握ADC的功能框圖,對(duì)ADC的工作過程和編程過程有個(gè)整體的了解。
ADC功能框圖
對(duì)ADC的配置主要涉及三種寄存器,控制狀態(tài)寄存器、觸發(fā)寄存器和數(shù)據(jù)寄存器。控制狀態(tài)寄存器主要有SC2、SC3、CFG1和CFG2;觸發(fā)寄存器主要有SC1和SC2;數(shù)據(jù)寄存器主要有Rn。
電壓輸入范圍
ADC的輸入電壓范圍為:VREFL≤VIN≤VREFHV_{REFL}≤V_{IN}≤V_{REFH}VREFL?≤VIN?≤VREFH?,ADC的輸入范圍取決于4個(gè)參考電源VREFL、VREFH、VDDA、VSSAV_{REFL}、V_{REFH}、V_{DDA}、V_{SSA}VREFL?、VREFH?、VDDA?、VSSA? 。
?ADC的電壓輸入范圍取決于4個(gè)參考電源?,我們?cè)谠O(shè)計(jì)原理圖的時(shí)候一般把?VREFLV_{REFL}VREFL? 和?VSSA?V_{SSA}?VSSA? 接地,把?VREFHV_{REFH}VREFH? 和?VDDA?V_{DDA}?VDDA? 接3.3V,可以得到ADC的輸入范圍是0~3.3V。在設(shè)計(jì)原理圖時(shí),應(yīng)該把ADC設(shè)置為可以配置成外用輸入電壓參考源,以備不時(shí)之需,如下圖所示。
如上圖所示,?有三個(gè)選項(xiàng)。
時(shí)鐘配置
可以選擇4個(gè)時(shí)鐘源ALTCLKx之一來(lái)作為ADC模塊的時(shí)鐘源。ADC具有多個(gè)時(shí)鐘源。 選擇取決于配置PCC_ADCn[PCS]。 分頻器的配置應(yīng)使ADC轉(zhuǎn)換時(shí)鐘頻率在ADC要求的有效范圍內(nèi)(請(qǐng)參見數(shù)據(jù)手冊(cè))。如下圖所示為ADC的時(shí)鐘分配圖。
如圖所示,ADC的時(shí)鐘源輸入通過PCC_ADCn[PCS]來(lái)選擇SOSCDIV2_CLK、SIRCDIV2_CLK、FIRCDIV2_CLK和SPLLDIV2_CLK四種,然后經(jīng)過ADC_CFG1[ADIV]來(lái)時(shí)鐘分頻,最后產(chǎn)生ADC的輸入時(shí)鐘ADCK,ADCK由數(shù)據(jù)手冊(cè)可得,最大50MHZ,最小2MHZ,典型值為40MHZ,如果超過最大頻率,ADC的轉(zhuǎn)換結(jié)果會(huì)變得不可靠。ADC時(shí)鐘設(shè)置流程如下:
轉(zhuǎn)換時(shí)間
數(shù)據(jù)手冊(cè)顯示,ADC的轉(zhuǎn)換時(shí)間取決于:
- ADC_CFG2[SAMPLTS]確定的采樣時(shí)間
- MCU的Bus總線時(shí)鐘頻率
- ADC_CFG1[MODE]確定的轉(zhuǎn)換模式
- fADCKf_{ADCK}fADCK?即ADC的轉(zhuǎn)換時(shí)鐘頻率
由數(shù)據(jù)手冊(cè)可得,ADC的總轉(zhuǎn)換時(shí)間=采樣相位時(shí)間(SMPLTS設(shè)置的再+1)+保持相位(1個(gè)ADC周期)+比較相位時(shí)間(8位模式=20個(gè)ADC周期,10位模式=24個(gè)ADC周期,12位模式=28個(gè)ADC周期)+單個(gè)或第一個(gè)連續(xù)時(shí)間加法器(5個(gè)ADC周期+5個(gè)總線時(shí)鐘周期)
例:設(shè)置BUS時(shí)鐘為40MHZ,ADC時(shí)鐘選擇40MHZ,12位ADC,采樣周期選擇255個(gè)ADC周期,計(jì)算ADC的一次轉(zhuǎn)換時(shí)間為:
Tconv=255+1+1+28+54×106+54×106=73.75μsT_{conv}=\frac{255+1+1+28+5}{4×10^6 }+\frac{5}{4×10^6}=73.75μsTconv?=4×106255+1+1+28+5?+4×1065?=73.75μs
觸發(fā)設(shè)置
ADC觸發(fā)設(shè)置主要包括寄存器SC2和SC1。ADC支持軟件觸發(fā)和硬件觸發(fā)兩種,軟件觸發(fā)就是在ADC轉(zhuǎn)換完畢之后產(chǎn)生中斷;在硬件觸發(fā)方面,ADC模塊具有可選的異步硬件轉(zhuǎn)換觸發(fā)器ADHWT,主要通過PDB來(lái)觸發(fā)。觸發(fā)設(shè)置可見PDB觸發(fā)ADC。設(shè)置ADC_SC2[ADTRG]來(lái)選擇是硬件觸發(fā)還是軟件觸發(fā)。觸發(fā)方式的設(shè)置流程如下:
獲得ADC數(shù)據(jù)
最后轉(zhuǎn)換成功后,ADC的轉(zhuǎn)換結(jié)果會(huì)被存放在ADC_Rn寄存器,ADC_Rn寄存器對(duì)應(yīng)的是ADC_SC1n寄存器,比如ADC_SC1A的數(shù)據(jù)會(huì)存放在ADC_RA,ADC_SC1B的數(shù)據(jù)會(huì)存放在ADC_RB,以此類推。
在不同的轉(zhuǎn)換位數(shù)下,ADC_Rn寄存器的數(shù)據(jù)位數(shù)也不同,如下圖所示。
注:ADC_Rn寄存器是只讀的
電壓轉(zhuǎn)換
模擬電壓經(jīng)過ADC轉(zhuǎn)換后,是一個(gè)相對(duì)精度的數(shù)字值,如果通過串口以16進(jìn)制打印出來(lái)的話,可讀性比較差,故需要把數(shù)字電壓轉(zhuǎn)換為模擬電壓,也可以根據(jù)實(shí)際的模擬電壓(用萬(wàn)用表測(cè))對(duì)比,看看轉(zhuǎn)換是否準(zhǔn)確。
在設(shè)計(jì)原理圖時(shí),一般會(huì)把ADC的輸入電壓范圍定在0~3.3V,若設(shè)置的ADC為12位,那么12位滿量程對(duì)應(yīng)的就是3.3V,12位滿量程對(duì)應(yīng)的數(shù)字值是:2122^{12}212 。數(shù)值0對(duì)應(yīng)的就是0V。如果轉(zhuǎn)換后的數(shù)值為X,X對(duì)應(yīng)的模擬電壓為Y,那么:
2123.3=XY→Y=3.3×X212\frac{2^{12}}{3.3}=\frac{X}{Y} → Y=\frac{3.3\times X}{2^{12}}3.3212?=YX?→Y=2123.3×X?
實(shí)例:ADC觸發(fā)中斷
功能概述
- 平臺(tái):S32K144
現(xiàn)在使用S32K144的ADC0通道8,軟件觸發(fā)模式下,轉(zhuǎn)換結(jié)束后觸發(fā)中斷。
編程順序
- 如果該通道有硬件交錯(cuò)功能,需要選擇是哪個(gè)ADC通道
總結(jié)
以上是生活随笔為你收集整理的S32K系列之ADC的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 登黄山
- 下一篇: C#学习笔记----C#连接MySQL数