生活随笔
收集整理的這篇文章主要介紹了
Exynos4412裸机开发 —— A/D转换器
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
一、Exynos4412 A/D轉(zhuǎn)換器概述
1、簡述
? ? ? ? 10位或12位CMOS再循環(huán)式模擬數(shù)字轉(zhuǎn)換器,它具有10通道輸入,并可將模擬量轉(zhuǎn)換至10位或12位二進(jìn)制數(shù)。5Mhz A/D 轉(zhuǎn)換時(shí)鐘時(shí),最大1Msps的轉(zhuǎn)換速度。A/D轉(zhuǎn)換具備片上采樣保持功能,同時(shí)也支持待機(jī)工作模式。
2、特性
ADC接口包括如下特性。
1)10bit/12bit輸出位可選。
2)微分誤差 ?1.0LSB。
3)積分誤差 ?2.0LSB。
4)最大轉(zhuǎn)換速率5Msps.
5) 功耗少,電壓輸入1.8V。
6)電壓輸入范圍 0~1.8V。
7)支持偏上樣本保持功能。
8)通用轉(zhuǎn)換模式。
3、模塊圖
4412A/D轉(zhuǎn)換器的控制器接口框圖如下:
二、Exynos4412 A/D 控制器寄存器
1、A/D控制寄存器ADCCON
2、A/D轉(zhuǎn)換數(shù)據(jù)寄存器ADCDAT0
3、A/D轉(zhuǎn)換的轉(zhuǎn)換時(shí)間計(jì)算
例如: PCLK為100MHz,PRESCALER = 65 ;所有10位轉(zhuǎn)換時(shí)間為
100MHz/(99+1) = 1MHz
轉(zhuǎn)化時(shí)間為1/(1MHz/5 cycles) = 5us。
完成一次A/D轉(zhuǎn)換需要5個(gè)時(shí)鐘周期。A/D轉(zhuǎn)換器的最大工作時(shí)鐘為5MHz,所以最大采樣率可以達(dá)到1Mit/s.
三、A/D轉(zhuǎn)換器實(shí)例
1、電路連接如下:
利用一個(gè)電位計(jì)輸出電壓到4412的AIN3管腳。輸入的電壓范圍為0~1.8V。
2、程序編寫
1、相關(guān)寄存器定義
[cpp]?view plaincopy
?? ?? #define?????ADC_CFG?????__REG(0x10010118)?? ?? ?? #define?????ADCCON??????__REG(0x126C0000)?? #define?????ADCDLY??????__REG(0x126C0008)?? #define?????ADCDAT??????__REG(0x126C000C)?? #define?????CLRINTADC???__REG(0x126C0018)?? #define?????ADCMUX??????__REG(0x126C001C)??
2、具體代碼如下:
注:這里使用讀-啟動(dòng)模式
[cpp]?view plaincopy
#include?"exynos_4412.h"?? #include?"pwm.h"?? #include?"uart.h"?? ?? unsigned?char?table[10]?=?{'0','1','2','3','4','5','6','7','8','9'};?? void?mydelay_ms(int?time)?? {?? ????int?i,?j;?? ????while(time--)?? ????{?? ????????for?(i?=?0;?i?<?5;?i++)?? ????????????for?(j?=?0;?j?<?514;?j++);?? ????}?? }?? ?? adc_init(int?temp)?? {?? ????ADCCON?=?(1?<<?16?|?1?<<?14?|?99?<<6?|?1?<<?1);?? ????ADCMUX?=?3;?? ????temp?=?ADCDAT?&?0xfff;?? }?? ?? ? ? ?? int?main?(void)?? {?? ????unsigned?char?bit4,bit3,bit2,bit1;?? ????uart_init();?? ????unsigned?int?temp?=?0;?? ????adc_init(temp);?? ????puts("開始轉(zhuǎn)換\n");?? ????while(1)?? ????{?? ????????while(!(ADCCON?&?0x8000));?? ????????temp?=?ADCDAT?&?0xfff;?? ????????printf("U?=?%d\n",temp);?? ????????temp?=?1.8?*?1000?*?temp/0xfff;?? ????????bit4?=?temp?/1000;?? ????????putc(table[bit4]);?? ????????bit3?=?(temp?%?1000)/100;?? ????????putc(table[bit3]);?? ????????bit2?=?((temp?%?1000)%100)/10;?? ????????putc(table[bit2]);?? ????????bit1?=?((temp?%?1000)%100)%10;?? ????????putc(table[bit1]);?? ????????puts("mV");?? ????????putc('\n');?? ????????mydelay_ms(1000);?? ????}?? ???return?0;?? } ?
總結(jié)
以上是生活随笔為你收集整理的Exynos4412裸机开发 —— A/D转换器的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。