基於ARM4412的ADC原理及實現

2021-07-24 19:48:15 字數 1590 閱讀 5138

adc,analog-to-digital converter的縮寫,指模數轉換器。即將模擬訊號轉變為數碼訊號。

一般使用在模擬溫度轉換器上,由於本次採用了4412的開發,溫度器使用的是數字溫度器。所以此次測驗使用的是滑動變阻器【如圖2所示】來模擬電壓的變化,達到模擬訊號的目的。

圖2

以前接觸的adc都差不多都會經歷 設定轉換精度,設定轉換通道–>設定分頻–>轉換為實際電壓值幾個步驟

轉換精度10bit,12bit反映了轉換的精度

例如1.8v的電壓,10bit即轉換為10位的二進位制。

1.8v ———> 10位的二進位制 (即10bit)

可以說,bit越大,轉換精度越精確,轉換速度相對越慢。

分頻步驟由於adc需要時鐘源來控制轉換,輸入頻率越高,adc轉換速度越快,adc能接受最大的頻率是5mhz

plck(時鐘頻率) —- > 分頻 —>adc時鐘

a/dconverter = 66mhz/(65+1) = 1mhz (+1是怕被除數為0) [時鐘頻率]

電壓轉變為實際電壓

adc_value = adc_value * (1.8 / 4096 * 1000);

1.8v為滿電壓,4096為2^12

12為剛開始設定的轉換精度,也就是說算出二進位制每一位是多少電壓,然後乘以adc暫存器中的值,就得到了想要的電壓值。因為arm浮點型運算很複雜,所以就乘以1000 輸出乙個單位為uv的整數電壓值。

實現**

/*1.設定轉換精度  adccon[16]*/

adccon = adccon | (1

<< 16);

/*2.使能預分頻 adccon[14]*/

adccon = adccon | (1

<< 14);

/*3.設定預分頻 adccon[13:6]*/

adccon = adccon & (~(0xff

<< 6)) | (19

<< 6);

/*4.設定為正常工作模式 adccon[2]*/

adccon = adccon & (~(1

<< 2));

/*5.關閉通過讀觸發一次轉換 adccon[1]*/

adccon = adccon & (~(1

<< 1));

/*6.選擇轉換通道 adcmux[3:0]*/

adcmux = 3;

unsigned

int adc_value = 0;

while(1)

ADC的基本工作原理

adc的基本轉換原理分為四個過程 抗混疊濾波 anti aliasing 可以理解為乙個低通濾波器 取樣保持電路 sample and hold 量化 quantizer 編碼 coder 取樣保持 所謂取樣就是將乙個時間上連續變化的模擬量轉化為時間上離散變化的模擬量。將取樣結果儲存起來,直到下次取...

基於tiny4412的u boot移植(一)

開發環境 win7 64位 vmware11 ubuntu14.04 64位 開發板 tiny4412adk s700 4gb emmc 1g ddr3 工具鏈 友善之臂提供的 arm linux gcc version 4.5.1 要移植的u boot版本 u boot 2015 10 本博文簡要...

基於Exynos4412的lcd驅動1

drivers video makefile中的約束條件,比如我的makefile是obj config fb s3c s3c fb.o 核心根目錄下的.config是否配置了config fb s3c這個巨集,比如我的.config是 接下來開始我們的 跟讀。以下是檢視.config得到的資訊,關...